文章目录
OpenStack(T版)——Placement介绍与安装
OpenStack Placement 是 OpenStack Nova 项目的一个子模块,是一个独立的服务,用于管理和分配计算节点的资源。它的主要功能是维护 OpenStack 计算节点的资源清单,包括虚拟 CPU、内存、磁盘空间等,以及将虚拟机实例分配到合适的计算节点上。
准备
(1)创建数据库
①在操作系统终端连接数据库
[root@controller ~]# mysql -uroot -p000000
②创建placement
数据库
MariaDB [(none)]> CREATE DATABASE placement;
③授权
MariaDB [(none)]> GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'%' IDENTIFIED BY '000000';
④退出数据库
MariaDB [(none)]> exit
(2)加载环境变量
[root@controller ~]# source admin-openrc.sh
(3)配置user和endpoints
①创建plancement用户
[root@controller ~]# openstack user create --domain default --password-prompt placement
User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field | Value |
+---------------------+----------------------------------+
| domain_id | default |
| enabled | True |
| id | ae86e7a743e6445693f85a08d1cd0cf5 |
| name | placement |
| options | {
} |
| password_expires_at | None |
+---------------------+----------------------------------+
# --password-prompt:表示通过交互式方式来设置用户的密码。
②将admin role 赋予 placement user 和 service project
[root@controller ~]# openstack role add --project service --user placement admin
③在服务目录中创建 Placement API
[root@controller ~]# openstack service create --name placement --description "Placement API" placement
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | Placement API |
| enabled | True |
| id | 745514229805484d93877bc06c3b9dec |
| name | placement |
| type | placement |
+-------------+----------------------------------+
(4)创建Placement API 的service endpoints
[root@controller ~]# openstack endpoint create --region RegionOne placement public http://controller:8778
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | b3d82027aec44ac299221fe434f9f790 |
| interface | public |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 745514229805484d93877bc06c3b9dec |
| service_name | placement |
| service_type | placement |
| url | http://controller:8778 |
+--------------+----------------------------------+
[root@controller ~]# openstack endpoint create --region RegionOne placement internal http://controller:8778
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | ae2f75d146b14ed8aee0831a482b4e1f |
| interface | internal |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 745514229805484d93877bc06c3b9dec |
| service_name | placement |
| service_type | placement |
| url | http://controller:8778 |
+--------------+----------------------------------+
[root@controller ~]# openstack endpoint create --region RegionOne placement admin http://controller:8778
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | ab895b813d9a4f1f8de3fad91a84e222 |
| interface | admin |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 745514229805484d93877bc06c3b9dec |
| service_name | placement |
| service_type | placement |
| url | http://controller:8778 |
+--------------+----------------------------------+
安装配置Placement组件
(1)安装软件包
[root@controller ~]# yum install -y openstack-placement-api
(2)编辑文件/etc/placement/placement.conf,完成以下操作
①在[plancement_database]项,配置数据库连接
[root@controller ~]# vim /etc/placement/placement.conf
[placement_database]
# ...
connection = mysql+pymysql://placement:000000@controller/placement
②在[api]和[keystone_authtoken]项,配置身份服务访问
[api]
# ...
auth_strategy = keystone
[keystone_authtoken]
# ...
auth_url = http://controller:5000/v3 # 指定了keystone服务的URL地址,用于进行身份验证和授权
memcached_servers = controller:11211 #指定了Memcached服务的地址和端口号,用于缓存身份验证令牌和其他数据。
auth_type = password # 指定了身份验证的类型,设置为 password,表示使用用户名和密码进行身份验证。
project_domain_name = Default # 指定了项目域名,用于区分不同的项目之间的资源和权限
user_domain_name = Default # 指定了用户域名,用于区分不同的用户之间的资源和权限。
project_name = service # 指定了项目名称,表示要访问的 OpenStack 项目的名称。
username = placement # 指定了用于身份验证的用户名。
password = 000000 # password:指定了用于身份验证的密码。
(3)同步数据库
[root@controller ~]# su -s /bin/sh -c "placement-manage db sync" placement
设置 /usr/bin 目录的访问权限,允许所有用户或主机访问该目录,具体取决于 Apache 版本
[root@controller ~]# vim /etc/httpd/conf.d/00-placement-api.conf
<Directory /usr/bin> # 表示如果 Apache 版本大于等于 2.4,则执行以下语句
<IfVersion >= 2.4>
Require all granted # 表示允许所有用户访问该目录
</IfVersion>
<IfVersion < 2.4> # 表示如果 Apache 版本小于 2.4,则执行以下语句
Order allow,deny # 表示允许 allow 所列出的主机访问该目录
Allow from all # 表示允许所有主机访问该目录
</IfVersion>
</Directory>
安装完成
重新启动httpd服务
[root@controller ~]# systemctl restart httpd
验证
(1)加载环境变量
[root@controller ~]# source admin-openrc.sh
(2)执行状态检查以确保一切正常
[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 |
+----------------------------------+
本文参考视频
:https://www.bilibili.com/video/BV1fL4y1i7NZ?p=7&vd_source=7c7cb4224e0c273f28886e581838b110