这一章描述如何在控制节点上安装和配置OpenStack身份认证服务,代码名称keystone。出于性能原因,这个配置部署Apache HTTP服务处理查询并使用Memcached存储tokens而不用SQL数据库。
在你配置 OpenStack 身份认证服务前,你必须创建一个数据库和管理员令牌。
完成下面的步骤以创建数据库:
用数据库连接客户端以 root 用户连接到数据库服务器:
$ mysql -u root -p
创建 keystone 数据库:
CREATE DATABASE keystone;
对``keystone``数据库授予恰当的权限:
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \
IDENTIFIED BY 'KEYSTONE_DBPASS';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \
IDENTIFIED BY 'KEYSTONE_DBPASS';
用合适的密码替换 KEYSTONE_DBPASS 。
退出数据库客户端。
生成一个随机值在初始的配置中作为管理员的令牌。
$ openssl rand -hex 10
注解
默认配置文件在各发行版本中可能不同。你可能需要添加这些部分和选项而不是修改已经存在的部分和选项。另外,在配置片段中的省略号(...)表示默认的配置选项你应该保留。
注解
在Kilo和Liberty发行版本,keystone 反对使用eventlet,更赞成使用独立的web服务器与WSGI扩展。本指南使用Apache HTTP服务器与``mod_wsgi``,在端口5000和35357处理认证服务请求。默认情况下,keystone服务依然监听在5000和35357端口。因此,本指南会禁用keystone 服务。在Mitaka版本中,keystone项目计划移除对eventlet的支持。
安装后禁止keystone 服务自动启动:
# echo "manual" > /etc/init/keystone.override
运行以下命令来安装包。
# apt-get install keystone apache2 libapache2-mod-wsgi \
memcached python-memcache
编辑文件 /etc/keystone/keystone.conf 并完成如下动作:
在``[DEFAULT]``部分,定义管理员token初始值:
[DEFAULT]
...
admin_token = ADMIN_TOKEN
用你在前一步生成的随机数替换 ADMIN_TOKEN 。
在 [database] 部分,配置数据库访问:
[database]
...
connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone
将 KEYSTONE_DBPASS 替换为你为数据库选择的密码。
在``[memcache]`` 部分,配置Memcached服务:
[memcache]
...
servers = localhost:11211
在``[token]`` 部分,配置 UUID token provider 和Memcached 驱动:
[token]
...
provider = uuid
driver = memcache
在 [revoke] 部分,配置SQL 回滚驱动:
[revoke]
...
driver = sql
(可选的)为帮助排错,在 “[DEFAULT]”部分启用详细日志。
[DEFAULT]
...
verbose = True
初始化身份认证服务的数据库:
# su -s /bin/sh -c "keystone-manage db_sync" keystone
编辑``/etc/apache2/apache2.conf`` 文件,配置``ServerName`` 选项为控制节点:
ServerName controller
使用下面内容创建``/etc/apache2/sites-available/wsgi-keystone.conf`` 文件:
Listen 5000
Listen 35357
<VirtualHost *:5000>
WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
WSGIProcessGroup keystone-public
WSGIScriptAlias / /usr/bin/keystone-wsgi-public
WSGIApplicationGroup %{GLOBAL}
WSGIPassAuthorization On
<IfVersion >= 2.4>
ErrorLogFormat "%{cu}t %M"
</IfVersion>
ErrorLog /var/log/apache2/keystone.log
CustomLog /var/log/apache2/keystone_access.log combined
<Directory /usr/bin>
<IfVersion >= 2.4>
Require all granted
</IfVersion>
<IfVersion < 2.4>
Order allow,deny
Allow from all
</IfVersion>
</Directory>
</VirtualHost>
<VirtualHost *:35357>
WSGIDaemonProcess keystone-admin processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
WSGIProcessGroup keystone-admin
WSGIScriptAlias / /usr/bin/keystone-wsgi-admin
WSGIApplicationGroup %{GLOBAL}
WSGIPassAuthorization On
<IfVersion >= 2.4>
ErrorLogFormat "%{cu}t %M"
</IfVersion>
ErrorLog /var/log/apache2/keystone.log
CustomLog /var/log/apache2/keystone_access.log combined
<Directory /usr/bin>
<IfVersion >= 2.4>
Require all granted
</IfVersion>
<IfVersion < 2.4>
Order allow,deny
Allow from all
</IfVersion>
</Directory>
</VirtualHost>
开启认证服务虚拟主机:
# ln -s /etc/apache2/sites-available/wsgi-keystone.conf /etc/apache2/sites-enabled
重启Apache HTTP服务器
# service apache2 restart
默认情况下,Ubuntu 上的安装包会自动创建一个 SQLite 数据库。
因为这里配置使用SQL 数据库服务器,所以你可以SQLite 服务库文件:
# rm -f /var/lib/keystone/keystone.db
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.