Keystone安装配置

Keystone安装配置

(1)数据库各服务库的创建和授权
tips:配置 OpenStack 身份认证服务前,必须创建一个数据库和管理员令牌。由于其余服务也需要用到数据库,此处将所有的服务所需要的库都进行创建并授权

 View Code

(2)keystone服务配置:/etc/keystone/keystone.conf

在 [database] 部分,配置数据库访问:
[database]
...
connection = mysql+pymysql://keystone:[email protected]/keystone

在[token]部分,配置Fernet UUID令牌的提供者。
[token] 
... 
provider = fernet
driver = memcache

(3)初始化身份认证服务的数据库,并验证是否初始化成功:

[root@linux-node1 ]# su -s /bin/sh -c "keystone-manage db_sync" keystone
[root@linux-node1 ]# mysql -h 192.168.56.11 -ukeystone -pkeystone -e "use keystone;show tables;"

在这里插入图片描述

(4)keystone服务配置:/etc/keystone/keystone.conf

在 [memcache] 部分,配置token缓存到memcache上:
servers = 192.168.56.11:11211

设置memcached开机自启动,并设置监听ip地址
[root@linux-node1 ~]# systemctl enable memcached
[root@linux-node1 ~]# systemctl start memcached
[root@linux-node1 ~]# vim /etc/sysconfig/memcached
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS="-l 192.168.56.11,::1"
[root@linux-node1 ~]# systemctl restart memcached

tips:openstack会经常使用driver驱动,更加灵活地选用多种方式。

(5)查看keystone服务所有的配置

[root@linux-node1 ~]# grep '^[a-z]' /etc/keystone/keystone.conf 
connection = mysql+pymysql://keystone:[email protected]/keystone
servers = 192.168.56.11:11211
provider = fernet
driver = memcache

(6)初始化Fernet key:

[root@linux-node1 ~]# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
[root@linux-node1 ~]# keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
[root@linux-node1 ~]# cd /etc/keystone/
[root@linux-node1 keystone]# ll
总用量 140
drwx------ 2 keystone keystone     22 12月  4 11:10 credential-keys
-rw-r----- 1 root     keystone   2303 7月  26 12:47 default_catalog.templates
drwx------ 2 keystone keystone     22 12月  4 11:10 fernet-keys
-rw-r----- 1 root     keystone 113658 12月  4 11:07 keystone.conf
-rw-r----- 1 root     keystone   2639 7月  26 12:48 keystone-paste.ini
-rw-r----- 1 root     keystone   1046 7月  26 12:47 logging.conf
-rw-r----- 1 keystone keystone   9742 7月  26 12:48 policy.json
-rw-r----- 1 keystone keystone    665 7月  26 12:47 sso_callback_template.html

(7)初始化命令bootstrap,初始化自动创建一个admin用户以及相关权限,直接在keystone上进行注册服务,创建endpoint。

[root@linux-node1 ~]# keystone-manage bootstrap --bootstrap-password admin \   
    --bootstrap-admin-url http://192.168.56.11:35357/v3/ \   
    --bootstrap-internal-url http://192.168.56.11:35357/v3/ \   
    --bootstrap-public-url http://192.168.56.11:5000/v3/ \  
    --bootstrap-region-id RegionOne

[root@linux-node1 ~]# mysql -h 192.168.56.11 -ukeystone -pkeystone
MariaDB [keystone]> use keystone;
Database changed
MariaDB [keystone]> select * from endpoint\G
*************************** 1. row ***************************
                id: 20222ecb6eeb4f378035e79c47810b08
legacy_endpoint_id: NULL
         interface: public
        service_id: 436e446b475a46fa978349211d6c64eb
               url: http://192.168.56.11:5000/v3/
             extra: {}
           enabled: 1
         region_id: RegionOne
*************************** 2. row ***************************
                id: 6cc75ee06e5245059e106e89e1643a92
legacy_endpoint_id: NULL
         interface: internal
        service_id: 436e446b475a46fa978349211d6c64eb
               url: http://192.168.56.11:35357/v3/
             extra: {}
           enabled: 1
         region_id: RegionOne
*************************** 3. row ***************************
                id: 7c7b33e8c2ac431aa7380ceeac80fb37
legacy_endpoint_id: NULL
         interface: admin
        service_id: 436e446b475a46fa978349211d6c64eb
               url: http://192.168.56.11:35357/v3/
             extra: {}
           enabled: 1
         region_id: RegionOne
3 rows in set (0.00 sec)

(8)配置apache http服务器

tips:kesytone是python写的,apache有一个wsgi模块,可以通过这个模块和python进行通信。端口为5000和35357,缺省情况下,Kestone服务仍然监听这些端口

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

ServerName 192.168.56.11:80
②创建一个链接到/usr/share/keystone/wsgi-keystone.conf文件

ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
③设置apache开机自启动

[root@linux-node1 ~]# systemctl enable httpd.service
[root@linux-node1 ~]# systemctl start httpd.service

(9)开始使用keystone就需要进行验证,有两种方式连接Keystone:第一种方式使用参数,另外一种方式就通过环境变量方式进行连接。

[root@linux-node1 ~]# vim admin-openstack
export OS_USERNAME=admin
export OS_PASSWORD=admin
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_DOMAIN_NAME=default
export OS_AUTH_URL=http://192.168.56.11:35357/v3
export OS_IDENTITY_API_VERSION=3
[root@linux-node1 ~]# openstack user list
Missing value auth-url required for auth plugin password
[root@linux-node1 ~]# source admin-openstack 
[root@linux-node1 ~]# openstack user list
+----------------------------------+-------+
| ID                               | Name  |
+----------------------------------+-------+
| 5313b45a3c474c7ea18e7272fd037b7d | admin |
+----------------------------------+-------+

(10)创建域、项目、用户、角色
为什么创建service项目?在前面已经概述到一个用户需要属于一个项目(用户组),并且要赋予一种角色(权限)进行管理服务。而其余服务需要连接keystone,需用使用用户名密码连接,那其他服务自然就需要有属于某一个项目,是什么用户,什么角色去连接Keystone。此处默认的域创建为为default,对域的概念不明白可以参考前文。
在这里:我们分别创建了service项目,并配置了默认的域为default。也创建了glance、nova、neutron、cinder用户,并赋予admin角色,使openstack的服务组件可以与Keystone进行通信。

[root@linux-node1 ~]# openstack project create --domain default \
>   --description "Service Project" service
 [root@linux-node1 ~]# openstack project list

常规(非管理)任务应该使用无特权的项目和用户。作为例子,这里采用demo项目和demo用户
创建demo项目,demo用户密码,创建use角色并赋予demo用户user角色

[root@linux-node1 ~]# openstack project create --domain default \
>   --description "Demo Project" demo
[root@linux-node1 ~]# openstack user create --domain default \
>  --password-prompt demo
[root@linux-node1 ~]# openstack role create user
[root@linux-node1 ~]# openstack role add --project demo --user demo user

创建glance、nova、neutron、cinder用户,并赋予admin角色

[

root@linux-node1 ~]# openstack user create --domain default \
>  --password-prompt glance

[root@linux-node1 ~]# openstack role add --project service --user glance admin
[root@linux-node1 ~]#  openstack user create --domain default \
>  --password-prompt nova

[root@linux-node1 ~]# openstack role add --project service --user nova admin
[root@linux-node1 ~]# openstack user create --domain default \
>  --password-prompt neutron

[root@linux-node1 ~]# openstack role add --project service --user neutron admin
[root@linux-node1 ~]# openstack user create --domain default \
>  --password-prompt cinder

[root@linux-node1 ~]# openstack role add --project service --user cinder admin
[root@linux-node1 ~]# openstack user list
+----------------------------------+---------+
| ID                               | Name    |
+----------------------------------+---------+
| 23aefbc43cd24bcd8e6a78d527cb1002 | nova    |
| 3c24e5584ce447a0b80c659d6daecd13 | demo    |
| 5313b45a3c474c7ea18e7272fd037b7d | admin   |
| 666df293c18541fcafffffac3b8587fe | glance  |
| cb278a7d54a4470387fe4bd88a64ee95 | neutron |
| d628cec48ab8407494605aa0022dd953 | cinder  |
+----------------------------------+---------+
[root@linux-node1 ~]# openstack project list
+----------------------------------+---------+
| ID                               | Name    |
+----------------------------------+---------+
| 02aaf7ba97114238b1d8169fedabb9be | demo    |
| 21a45d59913d4c05b46ad3ec92e61656 | admin   |
| 56e253935a6049b69140f4aebac8bb6a | service |
+----------------------------------+---------+

(11)验证操作:在安装其他服务之前确认身份认证服务操作
在控制节点(192.168.56.11)上操作这些命令
①因为安全性的原因,关闭临时认证令牌机制,撤销临时环境变量OS_AUTH_URL和OS_PASSWORD

[root@linux-node1 ~]# unset OS_AUTH_URL OS_PASSWORD

②作为 admin 用户,请求认证令牌:

[root@linux-node1 ~]# openstack --os-auth-url http://192.168.56.11:35357/v3   --os-project-domain-name default --os-user-domain-name default   --os-project-name admin --os-username admin token issue

③作为demo 用户,请求认证令牌:

[root@linux-node1 ~]# openstack --os-auth-url http://192.168.56.11:5000/v3   --os-project-domain-name default --os-user-domain-name default   --os-project-name demo --os-username demo token issue

tips:能够正常获取到tonken,说明keystone服务是正常。

(12)创建 OpenStack 客户端环境脚本
① 创建 admin 和 demo项目和用户创建客户端环境变量脚本

[root@linux-node1 ~]# cat admin-openstack 
export OS_USERNAME=admin
export OS_PASSWORD=admin
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_DOMAIN_NAME=default
export OS_AUTH_URL=http://192.168.56.11:35357/v3
export OS_IDENTITY_API_VERSION=3

[root@linux-node1 ~]# cat demo-openstack 
export OS_USERNAME=demo
export OS_PASSWORD=demo
export OS_PROJECT_NAME=demo
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_DOMAIN_NAME=default
export OS_AUTH_URL=http://192.168.56.11:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2

②加载admin-openrc文件来身份认证服务的环境变量位置和admin项目和用户证书:

[root@linux-node1 ~]# source admin-openstack 

③ 请求认证令牌:

  [root@linux-node1 ~]# openstack token issue
    +------------+------------------------------------------------------------------------------------+
    | Field      | Value                                                                              |
    +------------+------------------------------------------------------------------------------------+
    | expires    | 2018-01-15 05:09:39+00:00                                                          |
    | id         | gAAAAABaXCmDx9x7k_ZU0gCh2qCnfEv0Z4P8MoGWEkUeC19cNKBEEVviW9DV3OM3O53gm3OzJZ_4Wf8OJx |
    |            | Q8ErmFV3qUF7GMzfVbCkwaPJAIPQWveopglMWdhKuT4IYNWBQV_frC69agmGKw1NIGSeNgQgdlGkrn7kzQ |
    |            | 2u-ThWPFQPXzfAFZq24                                                                |
    | project_id | 71c9b608e79546f4b90f710fea475de3                                                   |
    | user_id    | fa4237d31d5145f78b87a29fbcc7ec0c                                                   |
    +------------+------------------------------------------------------------------------------------+

到此,Keystone服务就算配置完成了。
OpenStack 排查问题的方法主要是通过日志。
每个 Service 都有自己的日志文件。

Keystone 主要有两个日志:
keystone.log 和 keystone_access.log
保存在 /var/log/apache2/ 目录里。

如果需要得到最详细的日志信息,可以在 /etc/keystone/keystone.conf 中打开 debug 选项

发布了20 篇原创文章 · 获赞 40 · 访问量 5814

猜你喜欢

转载自blog.csdn.net/file_data/article/details/90262684
今日推荐