openstack-train安装 · 2022年10月7日 0

手动部署OpenStack Train双节点-安装Placement

在Controller节点
在 OpenStack Stein 版本发布之前,放置服务 placement 与计算服务 API(nova-api)一起位于计算服务 nova 中。

一、安装与配置Placement

官方说明文档

1、安装Placement软件包

[root@controller ~]# yum -y install openstack-placement-api 

在安装“openstack-placement-api”软件包的时候,会自动在CentOS Linux中生成一个名为“placement”的用户和同名用户组。
(1)查看用户信息

[root@controller ~]# cat /etc/passwd | grep placement
placement:x:993:990:OpenStack Placement:/:/bin/bash

(2)查看用户组信息

[root@controller ~]# cat /etc/group | grep placement
placement:x:990:

2、创建Placement的数据库并授权

第1步,用下面的方法进入MariaDB数据库服务器。

[root@controller ~]# mysql -uroot -p000000

第2步,新建“placement”数据库。

MariaDB [(none)]> CREATE DATABASE placement;

第3步,给用户授权使用新建数据库。

MariaDB [(none)]> GRANT ALL PRIVILEGES ON placement.* TO placement@'localhost' IDENTIFIED BY '000000';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON placement.* TO placement@'%' IDENTIFIED BY '000000';

第4步,退出数据库。

MariaDB [(none)]> quit

3、修改Placement配置文件

(1)将配置文件去掉注释和空行
第1步,备份配置文件。

[root@controller ~]# cp /etc/placement/placement.conf  /etc/placement/placement.bak

第2步,去掉所有注释和空行,生成新的配置文件。

[root@controller ~]# grep -Ev '^$|#' /etc/placement/placement.bak > /etc/placement/placement.conf

这里的正则表达式“^|#”的具体含义为:匹配空行(“^”,其中“^”是一行的开头,“$”是一行的结尾),或者(符号“|”表示或者)匹配第一个字符为“#”的行。结合反向匹配参数“-v”,最终匹配的是所有不为空和不以注释符号“#”开头的行。
(2)编辑新的配置文件
第1步,打开配置文件进行编辑。

[root@controller ~]# nano  /etc/placement/placement.conf

第2步,修改“[placement_database]”部分,实现与数据库连接。

connection = mysql+pymysql://placement:000000@controller/placement

第3步,修改“[api]”与“[keystone_authtoken]”部分,实现与Keystone交互。
(官方参考文献)

[api]
auth_strategy = keystone

[keystone_authtoken]
auth_url = http://controller:5000/v3
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = project
username = placement
password = 000000

4、修改Apache配置文件

(官方文档坑点之一,这个步骤官方文档没有提到,如果不做,后面计算服务检查时将会报错)
Placement本质上和Glance及Keystone一样,是运行在Web服务器上的应用。安装完Placement的软件包以后,将在Apache的配置文件目录下自动创建一个名为“00-placement-api.conf”的配置文件,通过它,Web服务器才能知道如何运行Placement

[root@controller ~]# vi /etc/httpd/conf.d/00-placement-api.conf

在“VirtualHost”节点中加入以下代码使Httpd对“/usr/bin”目录拥有权限。

<Directory /usr/bin>
<IfVersion >= 2.4>
Require all granted
</IfVersion>
<IfVersion < 2.4>
 Order allow,deny
Allow from all
</IfVersion>
</Directory>


重启httpd服务

[root@controller ~]# systemctl restart httpd

5、初始化Placement的数据库

(1)同步数据库
Placement安装文件提供了数据库的基础表数据,此时还没有将数据导入“placement”数据库中,需要手动将数据同步导入数据库中。

[root@controller ~]#  su -s /bin/sh -c "placement-manage db sync" placement

“su placement”:su命令用于用户切换。这里切换到“placement”用户,该用户已经拥有对“placement”数据库的管理权限。
“-s /bin/sh”:-s为su命令的选项,指定用什么编译器(Shell)来执行命令,“/bin/sh”就是指定的编译器。
“-c”:su命令的选项,在其后引号内的是具体执行的命令。
"placement-manage db sync":实现了数据同步到数据库。
(2)检查数据库

[root@controller ~]# mysql -uroot -p000000
MariaDB [(none)]> use placement;
MariaDB [placement]> show tables;

二、Placement组件初始化

Placement安装与配置成功以后,需要给Placement初始化用户及密码并分配用户角色、初始化服务和服务端点等,使Placement组件可以启用。

1、创建Placement用户并分配角色

第1步,导入环境变量模拟登录。

[root@controller ~]# . admin-login

第2步,在OpenStack云计算平台中创建用户“placement”。

[root@controller ~]# openstack user create --domain default --password 000000 placement
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| enabled             | True                             |
| id                  | 567f9dfb13c54535a82924bd201169a5 |
| name                | placement                        |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+

第3步,给用户“placement”分配“admin”角色

[root@controller ~]# openstack role add --project project --user placement admin

2、创建Placement服务及端点

(1)创建服务
创建名为“placement”、类型为“placement”的服务。

[root@controller ~]# openstack service create --name placement placement
+---------+----------------------------------+
| Field   | Value                            |
+---------+----------------------------------+
| enabled | True                             |
| id      | e90d0dd74019416cba95d3e95add9fa8 |
| name    | placement                        |
| type    | placement                        |
+---------+----------------------------------+

2)创建放置服务端点
OpenStack组件的服务端点有3种,分别对应Admin用户(admin)、内部组件(internal)、公众用户(public)服务的地址。
第1步,创建公众用户访问的服务端点。

[root@controller ~]# openstack endpoint create --region RegionOne placement public http://controller:8778
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 095f8d4e0679478784508fa71c8f3a62 |
| interface    | public                           |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | e90d0dd74019416cba95d3e95add9fa8 |
| service_name | placement                        |
| service_type | placement                        |
| url          | http://controller:8778           |
+--------------+----------------------------------+

第2步,创建内部组件访问的服务端点。

[root@controller ~]# openstack endpoint create --region RegionOne placement internal http://controller:8778
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 30d51f9bc4824d66b4ba8b14a9bf6c79 |
| interface    | internal                         |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | e90d0dd74019416cba95d3e95add9fa8 |
| service_name | placement                        |
| service_type | placement                        |
| url          | http://controller:8778           |
+--------------+----------------------------------+

第3步,创建Admin用户访问端点。

[root@controller ~]# openstack endpoint create --region RegionOne placement admin http://controller:8778
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 697e348313364f1499149f825c97db45 |
| interface    | admin                            |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | e90d0dd74019416cba95d3e95add9fa8 |
| service_name | placement                        |
| service_type | placement                        |
| url          | http://controller:8778           |
+--------------+----------------------------------+

3、启动Placement服务

Placement和Keystone以及Glance一样,需要借助Apache的Web服务实现功能。这里只需要重启Apache服务,使配置文件生效。

[root@controller ~]# systemctl restart httpd

三、检测Placement服务

1.查看端口占用情况
由于Placement服务要占用8778端口,查看8778端口是否启用就可以知道Placement是否已运行。

[root@controller ~]# netstat -tnlup|grep 8778
tcp6       0      0 :::8778          :::*           LISTEN      119996/httpd

2.检验服务端点
通过curl命令和Placement提供的服务端点通信进行检验。

[root@controller ~]#  curl http://controller:8778
{"versions": [{"status": "CURRENT", "min_version": "1.0", "max_version": "1.36", "id": "v1.0", "links": [{"href": "", "rel": "self"}]}]}

3.使用下面的命令检查,看能否返回如下图中的列表

[root@controller ~]# placement-status upgrade check
+----------------------------------+
| Upgrade Check Results            |
+----------------------------------+
| Check: Missing Root Provider IDs |
| Result: Success                  |
| Details: None                    |
+----------------------------------+
| Check: Incomplete Consumers      |
| Result: Success                  |
| Details: None                    |
+----------------------------------+