openstack實戰部署Keystone認證服務及理論介紹
理論介紹:
1、Keystone介紹:
Keystone是openstack的元件之一,用于為openstack家族中的其他元件成員提供統一的認證服務,包括身份驗證、令牌的發放和校驗、服務清單、使用者權限的定義等等。
2、KeyStone 兩大功能:使用者與認證、服務目錄
使用者與認證:使用者權限與使用者行為跟蹤
服務目錄:提供一個服務目錄,包括所有服務項與相關Api的端點
注意:注冊不能多,也不能少,更不能錯,要是注冊出現問題,可以删除重建立。
2、Keystone使用的名詞:User使用者、project項目、token令牌、role角色(代表一組使用者可以通路的資源權限)、service服務、endpoint端點(每個endpoint有三個通路位址,三個通路位址的權限public公共的、private私有的、admin管理的)
3、keystone子產品:
Token:用來生成和管理token。
Catalog:用來存儲和管理service/endpoint。
Identity:用來管理tenant/user/role和驗證。
Policy:用來管理通路權限。
4、keystone:包括一個指令行接口,可以與keystone API互動已管理keystone和相關服務。
Keystone-all:用于驗證的,面向管理者和使用者的API。
keystone-manage:管理keystone的指令行接口,用于管理與keystone相連接配接的資料庫。
5、openstack老版本Tenant租戶和User使用者:
6、keystone基本架構:
部署并配置Keystone認證服務
1、建立資料庫:
mysql -u root -p (進入資料庫)
create database keystone; (建立keystone庫)
create database glance; (建立glance庫)
create database nova; (建立Nova庫)
create database nova_api; (建立Nova_api庫)
create database neutron; (建立neutron庫)
create database cinder; (建立cinder庫)
2、授權:
grant all on keystone.* to 'keystone'@'localhost' identified by 'keystone'; (給keystone授權)
grant all on keystone.* to 'keystone'@'%' identified by 'keeystone'; (給keystone授權,在任何上面都可以登入)
grant all on glance.* to 'glance'@'%' identified by 'glance';
grant all on glance.* to 'glance'@'localhost' identified by 'glance';
grant all on nova.* to 'nova'@'localhost' identified by 'nova';
grant all on nova.* to 'nova'@'%' identified by 'nova';
grant all on nova_api.* to 'nova'@'localhost' identified by 'nova';
grant all on nova_api.* to 'nova'@'%' identified by 'nova';
grant all on neutron.* to 'neutron'@'localhost' identified by 'neutron';
grant all on neutron.* to 'neutron'@'%' identified by 'neutron';
grant all on cinder.* to 'cinder'@'localhost' identified by 'cinder';
grant all on cinder.* to 'cinder'@'%' identified by 'cinder';
3、檢視建立的資料庫:
show databases;
4、配置Keystone,修改Keystone配置檔案:
vim /etc/keystone/keystone.conf
在[database]中修改如下:
connection = mysql+pymysql://keystone:[email protected]/keystone設定資料庫
在[memcache]中修改如下:
servers = 192.168.56.11:11211
5、初始化keystone:
su -s /bin/sh -c "keystone-manage db_sync" keystone
注意:初始化keystone,使用的是keystone使用者。
6、檢查keystone是否初始化成功:
mysql -h 192.168.56.11 -ukeystone -pkeystone -e "use keystone;show tables;"
如果建立失敗,說明資料庫有問題,比如資料庫建立失敗,權限有問題,資料庫連接配接失敗等等。
7、由于使用memcache緩存tokens,上面也在keystone的memcache中添加了配置,需要安裝memcache:
yum -y install memcached python-memcached
8、設定開機自動啟動:
systemctl enable memcached.service
systemctl start memcached.service
9、可以在/etc/sysconfig/memcached 中,檢視memcache配置:
預設:64兆
10、可以檢視端口号:
netstat -ntpl
###可以看到是本地在監聽11211端口,如果其他伺服器通路,則通路失敗,需要修改配置問題。
11、修改memcache配置
vim /etc/sysconfig/memcached
修改:OPTIONS="-l 192.168.56.11,::1"
12、重新開機memecache:
systemctl restart memcached.service
13、需要在keystone配置中,設定令牌的提供者:
vim /etc/keystone/keystone.conf
修改[token]中,如下:
provider = fernet ###token提供者
driver = memcache ###token存放的位置
Ps:補充一個小知識,查找keystone的配置。
grep '^[a-z]' /etc/keystone/keystone.conf
connection = mysql+pymysql://keystone:[email protected]/keystone ###連結資料庫
servers = 192.168.56.11:11211 ###memcache位址
provider = fernet ####token提供者
driver = memcache ###token存放位置
14、初始化key,主要初始化完,生成證書。
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
預設會在/etc/keystone 下建立一個fernet-keys目錄。
15、初始化的使用者,自動建立使用者、密碼等 (N版才有這個功能)
keystone-manage bootstrap --bootstrap-password admin \
--bootstrap-admin-url http://192.168.56.11:35357/v3/ \
--bootstrap-internal-url http://192.168.56.11:35357/v3/ \
--bootstrap-public-url http://192.168.56.11:5000/v3/ \
--bootstrap-region-id RegionOne
Ps:--bootstrap-admin-url http://192.168.56.11:35357/v3/ \ ###admin的url
--bootstrap-internal-url http://192.168.56.11:35357/v3/ \ ###内部的url
--bootstrap-public-url http://192.168.56.11:5000/v3/ \ ###public的url
這是endpoint的三個url
16、配置apache,設定servername
vim /etc/httpd/conf/httpd.conf
修改ServerName 192.168.56.11:80
17、建立軟連接配接:
ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
18、啟動Apache服務:
systemctl enable httpd.service
systemctl start httpd.service
驗證端口:
19、隻要使用keystone就要有驗證,keystone提供了兩種驗證方式:1)選項的方式 2)環境變量
在這裡我們使用環境變量,設定環境變量指令:
export OS_USERNAME=admin ###使用者名
export OS_PASSWORD=admin ###密碼
export OS_PROJECT_NAME=admin ###哪個項目
export OS_USER_DOMAIN_NAME=default ###預設的域
export OS_PROJECT_DOMAIN_NAME=default
export OS_AUTH_URL=http://192.168.56.11:35357/v3 ##驗證的url
export OS_IDENTITY_API_VERSION=3 ###端口
20、執行指令測試,是否可以連接配接keystone:
openstack user list
21、建立service項目(安裝其他服務,需要連接配接keystone,連接配接keystone這些服務和角色屬于哪些項目,)
openstack project create --domain default --description "Server Project" service
再檢視一下project有幾個項目:
22、建立一個demo項目:(示範使用)
openstack project create --domain default --description "Demo Project" demo
23、建立demo的使用者:
openstack user create --domain default --password-prompt demo
24、建立一個user角色(一個項目有兩種角色admin超級管理者(M版本需要建立,N版不需要建立)和user,這個角色是keystone上的角色)
openstack role create user
25、添加user角色到demo項目和使用者:
openstack role add --project demo --user demo user
Ps: 以上指令意思為:把demo使用者加入到了demo項目,并賦予user角色
26、為了後期友善,也為了不容易出錯,在這裡我建立其餘的使用者并添加到相應的項目中,賦予相應的角色:
openstack user create --domain default --password-prompt glance
openstack role add --project service --user glance admin
openstack user create --domain default --password-prompt nova
openstack role add --project service --user nova admin
openstack user create --domain default --password-prompt neutron
openstack role add --project service --user neutron admin
openstack user create --domain default --password-prompt cinder
openstack role add --project service --user cinder admin
删除使用者 、服務、endpoint都一樣使用:
openstack user delete 使用者ID
27、驗證keystone,需要先讀取環境變量,由于安全性的原因,關閉臨時認證指令牌機制,
第一步:把環境變量取消掉:
unset OS_AUTH_URL OS_PASSWORD
第二步:請求認證指令牌:
openstack --os-auth-url http://192.168.56.11:35357/v3 --os-project-domain-name default --os-user-domain-name default --os-project-name admin --os-username admin token issue
如果密碼錯誤是什麼報錯?說明密碼錯誤。
如果擷取到token成功,說明你的keystone安裝成功。
28、建立admin和demo的環境變量腳本:
vim admin-openstack
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_DOMAIN_NAME=default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=admin
export OS_AUTH_URL=http://192.168.56.11:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
vim demo-openstack
export OS_PROJECT_NAME=demo
export OS_USERNAME=demo
export OS_PASSWORD=demo
export OS_AUTH_URL=http://192.168.56.11:5000/v3
29、請求令牌(使用source指令)
source admin-openstack
檢視測試結果: