Openstack Keystone安装(一)

上一篇中我们完成了Openstack基本环境的安装。

在本篇中我们将安装并配置Openstack的公用核心组件Keystone。

Keystone的功能是为Openstack各个服务提供一个统一的用户身份认证模块,并提供统一的RESTful API供调用。

当然,我们主要安装的目标Swift也是依赖这一模块进行身份认证的。

安装并配置Keystone

Keystone只需要安装在Controller上即可。

配置数据库

我们首先来配置一下mysql。

mysql -u root -p登录mysql,然后运行下面的SQL语句

CREATE DATABASE keystone;
GRANT ALL PRIVILEGES ON keystone.* TO \'keystone\'@\'localhost\' IDENTIFIED BY \'2308020d\';
GRANT ALL PRIVILEGES ON keystone.* TO \'keystone\'@\'%\' IDENTIFIED BY \'2308020d\';

然后退出登录。上面的2308020d是我随机生成的一段密码。

在继续下面的步骤之前,我们需要随机的生成一段Token。

$ openssl rand -hex 10
49f9e01220a3a7f0c41e

安装并配置组件

如果没有特殊说明,下面的bash操作一般是使用root用户。

为了防止服务自启抢占端口导致下面安装失败,我们先写keystone的override文件。

echo \"manual\" > /etc/init/keystone.override

1) 安装主要程序包

apt-get install keystone apache2 libapache2-mod-wsgi memcached python-memcache

执行这个命令即可。

2) 配置keystone

编辑文件 /etc/keystone/keystone.conf

首先修改[DEFAULT]中的admin_token值,修改为上面我们随机生成的内容。

[DEFAULT]
...
admin_token = 49f9e01220a3a7f0c41e

然后找到[database]一段,进行数据库设置。

[database]
...
connection = mysql+pymysql://keystone:[email protected]/keystone

按照下面的文件内容继续修改文件:

[memcache]
...
servers = localhost:11211
...
[token]
...
provider = uuid
driver = memcache
...
[revoke]
...
driver = sql

(可选)如果希望看到更多的日志信息,可以把[DEFAULT]中的verbose打开

[DEFAULT]
...
verbose = True

4) 用下面的方式重建数据库

su -s /bin/sh -c \"keystone-manage db_sync\" keystone

配置 Apache HTTP Server

由于Keystone基础认证服务是用过HTTP Server承载的,我们需要配置Apache使得用户可以通过HTTP访问Keystone服务。

在上面安装组件的过程中,已经安装上了Apache Server,所以我们直接进入配置阶段。

1) 编辑文件 /etc/apache2/apache2.conf 配置其中的 ServerName

ServerName controller

2) 用下面的内容建立文件 /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>

3) 然后将上面的文件链接至启用目录中

ln -s /etc/apache2/sites-available/wsgi-keystone.conf /etc/apache2/sites-enabled

完成安装

最后,重启Apache服务器完成安装。

service apache2 restart

最后的最后,删除安装keystone过程中默认使用的sqlite数据库。由于我们已经用mysql替换它了,所以这个文件就没有意义了。

rm -f /var/lib/keystone/keystone.db

至此,我们已经成功的把Keystone安装在了Controller上。

接下来的内容在:Openstack Keystone安装(二)