Openstack(Ocata版本)部署总结第二章:认证服务

Openstack Identity service为认证管理,授权管理和服务目录服务管理提供单点整合。keystone的部署相对比较简单,在本文结尾附录mariadb最大连接数设置未生效的问题。实际上ocata的认证服务安装上来说和之前版本还是有一定的区别,官方可以说是非常人性化的取消了很多繁琐的步骤。

先决条件:创建keystone库为数据库授予恰当的权限。

# 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在内诸多版本的admin_token配置,鉴于众多新手经常混乱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实际是依赖于Apache http进行运行,因此需要在这里进行配置Apache。另外与之前不同的是,ocata这里添加的wsgi-keystone.conf文件,直接通过软连接的方式,之前版本没记错的话应该是手动创建。

# vim /etc/httpd/conf/httpd.conf
找到ServerName并修改为
ServerName controller
# ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/

设置开机自启并启动httpd

# systemctl enable httpd.service
# systemctl start httpd.service

设置环境变量(请修改ADMIN_PASS为之前设置的密码)

$ 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

创建服务实体和API端点(输出结果建议直接参考官方文档)
创建service project

# openstack project create --domain default \
  --description "Service Project" service

创建demo project

# openstack project create --domain default \
  --description "Demo Project" demo

创建demo user

# openstack user create --domain default \
  --password-prompt demo
User Password:
Repeat User Password:

创建user role

# openstack role create user

添加user role到demo project和suer

# openstack role add --project demo --user demo user

由于安全性原因,关闭临时认证令牌机制

# vim /etc/keystone/keystone-paste.ini
找到以下三项中的admin_token_auth,删掉即可(光标选到a,按17x,即可)
[pipeline:public_api]
[pipeline:admin_api]
[pipeline:api_v3]

重置环境变量

# unset OS_AUTH_URL OS_PASSWORD

分别作为admin用户和demo用户请求认证令牌

 # 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:

创建脚本

# 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

附录:调整mariadb最大连接数
在我的部署过程中,屡次因为mariadb最大连接数问题报错,虽然我按照官方设置了4096,但是实际查询却发现只有214(查看max_connection)

MariaDB [(none)]> show global variables like '%connect%'

原因:10.X版本mariadb默认最大连接数应该就是214(有些版本可能是150)
在这里,我尝试修改/etc/my.cnf和/etc/my.cnf.d/openstack.cnf中的max_connection,重启mariadb后目测没有发生变化。
由于mariadb有默认打开文件数限制,需要通过配置mariadb.service来调大打开文件数目

# vim /usr/lib/systemd/system/mariadb.service
[Service]新添加两行如下参数:
LimitNOFILE=10000
LimitNPROC=10000

重新加载系统服务,并重启mariadb服务

systemctl --system daemon-reload  
systemctl restart mariadb.service  

在这时再查看,就可能会看到一个令你满意的结果

MariaDB [(none)]> show variables like 'max_connections';  
+-----------------+-------+  
| Variable_name   | Value |  
+-----------------+-------+  
| max_connections | 4096  |  
+-----------------+-------+  

但是我在这时又遇到一个问题,这样修改以后,我的默认字符集变成了latin1,很尴尬,我还没有比较好的解决办法,但是目前也没有出现什么问题,算是比较nice吧。

你可能感兴趣的:(Openstack(Ocata版本)部署总结第二章:认证服务)