Openstack Identity service為認(rèn)證管理驹溃,授權(quán)管理和服務(wù)目錄服務(wù)管理提供單點(diǎn)整合喇肋。keystone的部署相對比較簡單添吗,在本文結(jié)尾附錄mariadb最大連接數(shù)設(shè)置未生效的問題醋火。實(shí)際上ocata的認(rèn)證服務(wù)安裝上來說和之前版本還是有一定的區(qū)別虽画,官方可以說是非常人性化的取消了很多繁瑣的步驟哟旗。
先決條件:創(chuàng)建keystone庫為數(shù)據(jù)庫授予恰當(dāng)?shù)臋?quán)限贩据。
# mysql -u root -p
MariaDB [(none)]> CREATE DATABASE keystone;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'KEYSTONE_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'KEYSTONE_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'controller' IDENTIFIED BY 'KEYSTONE_DBPASS';
安裝并配置keystone組件
# yum install openstack-keystone httpd mod_wsgi
# vim /etc/keystone/keystone.conf
[database]
connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone
[token]
provider = fernet
值得注意的是ocata版本沒有包括Mitaka在內(nèi)諸多版本的admin_token配置栋操,鑒于眾多新手經(jīng)常混亂admin_token和admin_pass饱亮,也算是好事一件矾芙。
# su -s /bin/sh -c "keystone-manage db_sync" keystone
# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
# keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
# keystone-manage bootstrap --bootstrap-password ADMIN_PASS \
--bootstrap-admin-url http://controller:35357/v3/ \
--bootstrap-internal-url http://controller:5000/v3/ \
--bootstrap-public-url http://controller:5000/v3/ \
--bootstrap-region-id RegionOne
Ocata的keystone實(shí)際是依賴于Apache http進(jìn)行運(yùn)行,因此需要在這里進(jìn)行配置Apache近上。另外與之前不同的是剔宪,ocata這里添加的wsgi-keystone.conf文件,直接通過軟連接的方式壹无,之前版本沒記錯的話應(yīng)該是手動創(chuàng)建葱绒。
# vim /etc/httpd/conf/httpd.conf
找到ServerName并修改為
ServerName controller
# ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
設(shè)置開機(jī)自啟并啟動httpd
# systemctl enable httpd.service
# systemctl start httpd.service
設(shè)置環(huán)境變量(請修改ADMIN_PASS為之前設(shè)置的密碼)
$ export OS_USERNAME=admin
$ export OS_PASSWORD=ADMIN_PASS
$ export OS_PROJECT_NAME=admin
$ export OS_USER_DOMAIN_NAME=Default
$ export OS_PROJECT_DOMAIN_NAME=Default
$ export OS_AUTH_URL=http://controller:35357/v3
$ export OS_IDENTITY_API_VERSION=3
創(chuàng)建服務(wù)實(shí)體和API端點(diǎn)(輸出結(jié)果建議直接參考官方文檔)
創(chuàng)建service project
# openstack project create --domain default \
--description "Service Project" service
創(chuàng)建demo project
# openstack project create --domain default \
--description "Demo Project" demo
創(chuàng)建demo user
# openstack user create --domain default \
--password-prompt demo
User Password:
Repeat User Password:
創(chuàng)建user role
# openstack role create user
添加user role到demo project和suer
# openstack role add --project demo --user demo user
由于安全性原因,關(guān)閉臨時認(rèn)證令牌機(jī)制
# vim /etc/keystone/keystone-paste.ini
找到以下三項中的admin_token_auth斗锭,刪掉即可(光標(biāo)選到a哈街,按17x,即可)
[pipeline:public_api]
[pipeline:admin_api]
[pipeline:api_v3]
重置環(huán)境變量
# unset OS_AUTH_URL OS_PASSWORD
分別作為admin用戶和demo用戶請求認(rèn)證令牌
# openstack --os-auth-url http://controller:35357/v3 \
--os-project-domain-name default --os-user-domain-name default \
--os-project-name admin --os-username admin token issue
Password:
# openstack --os-auth-url http://controller:5000/v3 \
--os-project-domain-name default --os-user-domain-name default \
--os-project-name demo --os-username demo token issue
Password:
創(chuàng)建腳本
# vi admin-openrc
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=ADMIN_PASS
export OS_AUTH_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
---------------------------------------------
# vi demo-openrc
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=demo
export OS_USERNAME=demo
export OS_PASSWORD=DEMO_PASS
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
驗證
# . admin-openrc
# openstack token issue
附錄:調(diào)整mariadb最大連接數(shù)
在我的部署過程中拒迅,屢次因為mariadb最大連接數(shù)問題報錯骚秦,雖然我按照官方設(shè)置了4096,但是實(shí)際查詢卻發(fā)現(xiàn)只有214(查看max_connection)
MariaDB [(none)]> show global variables like '%connect%'
原因:10.X版本mariadb默認(rèn)最大連接數(shù)應(yīng)該就是214(有些版本可能是150)
在這里璧微,我嘗試修改/etc/my.cnf和/etc/my.cnf.d/openstack.cnf中的max_connection作箍,重啟mariadb后目測沒有發(fā)生變化。
由于mariadb有默認(rèn)打開文件數(shù)限制前硫,需要通過配置mariadb.service來調(diào)大打開文件數(shù)目
# vim /usr/lib/systemd/system/mariadb.service
[Service]新添加兩行如下參數(shù):
LimitNOFILE=10000
LimitNPROC=10000
重新加載系統(tǒng)服務(wù)胞得,并重啟mariadb服務(wù)
systemctl --system daemon-reload
systemctl restart mariadb.service
在這時再查看,就可能會看到一個令你滿意的結(jié)果
MariaDB [(none)]> show variables like 'max_connections';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| max_connections | 4096 |
+-----------------+-------+
但是我在這時又遇到一個問題屹电,這樣修改以后阶剑,我的默認(rèn)字符集變成了latin1,很尷尬危号,我還沒有比較好的解決辦法牧愁,但是目前也沒有出現(xiàn)什么問題,算是比較nice吧外莲。