安装和配置

安装和配置

这一章描述如何在控制节点上安装和配置OpenStack身份认证服务,代码名称keystone。出于性能原因,这个配置部署Apache HTTP服务处理查询并使用Memcached存储tokens而不用SQL数据库。

前提条件

在你配置 OpenStack 身份认证服务前,你必须创建一个数据库和管理员令牌。

  1. 完成下面的步骤以创建数据库:

    • 用数据库连接客户端以 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

    • 退出数据库客户端。

  2. 生成一个随机值在初始的配置中作为管理员的令牌。

    $ openssl rand -hex 10
    

安全并配置组件

注解

默认配置文件在各发行版本中可能不同。你可能需要添加这些部分和选项而不是修改已经存在的部分和选项。另外,在配置片段中的省略号(...)表示默认的配置选项你应该保留。

注解

在Kilo和Liberty发行版本,keystone 反对使用eventlet,更赞成使用独立的web服务器与WSGI扩展。本指南使用Apache HTTP服务器与``mod_wsgi``,在端口5000和35357处理认证服务请求。默认情况下,keystone服务依然监听在5000和35357端口。因此,本指南会禁用keystone 服务。在Mitaka版本中,keystone项目计划移除对eventlet的支持。

  1. 运行以下命令来安装包。

    # yum install openstack-keystone httpd mod_wsgi \
      memcached python-memcached
    
  1. 启动Memcached服务,并且配置它随机启动。

    # systemctl enable memcached.service
    # systemctl start memcached.service
    
  1. 编辑文件 /etc/keystone/keystone.conf 并完成如下动作:

    • 在``[DEFAULT]``部分,定义管理员token初始值:

      [DEFAULT]
      ...
      admin_token = ADMIN_TOKEN
      

      用你在前一步生成的随机数替换 ADMIN_TOKEN

    • [database] 部分,配置数据库访问:

      [database]
      ...
      connection = mysql://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
      
  1. 初始化身份认证服务的数据库:

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

配置 Apache HTTP 服务器

  1. 编辑``/etc/httpd/conf/httpd.conf`` 文件,配置``ServerName`` 选项为控制节点:

    ServerName controller
    
  2. 用下面的内容创建文件 /etc/httpd/conf.d/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/httpd/keystone-error.log
        CustomLog /var/log/httpd/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/httpd/keystone-error.log
        CustomLog /var/log/httpd/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>
    

完成安装

  • 启动 Apache HTTP 服务并配置其随系统启动:

    # systemctl enable httpd.service
    # systemctl start httpd.service
    
Creative Commons Attribution 3.0 License

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.