Placement 肩负着这样的历史使命,最早在 Newton 版本被引入到 openstack/nova repo,以 API 的形式进行孵化,所以也经常被称呼为 Placement API。它参与到 nova-scheduler 选择目标主机的调度流程中,负责跟踪记录 Resource Provider 的 Inventory 和 Usage,并使用不同的 Resource Classes 来划分资源类型,使用不同的 Resource Traits 来标记资源特征。
Ocata 版本的 Placement API 是一个可选项,建议用户启用并替代 CpuFilter、CoreFilter 和 DiskFilter。Pike 版本则强制要求启动 Placement API 服务,否则 nova-compute service 无法正常运行。
Placement API 开始了 openstack/nova repo 剥离流程,从 Placement API 蜕变为 OpenStack Placement,并在 Stein 版本中成为独立项目。
本文介绍placement安装步骤,placement仅需在控制节点安装。
在按照本教程安装之前,请确保完成以下配置:
【Openstack Train安装】一、虚拟机创建
【Openstack Train安装】二、NTP安装
【Openstack Train安装】三、openstack安装
【Openstack Train安装】四、MariaDB/RabbitMQ 安装
【Openstack Train安装】五、Memcached/Etcd安装
【Openstack Train安装】六、Keystone安装
【Openstack Train安装】七、glance安装
安装环境如下
VMware Workstation | V17.0 |
本机系统 | win11 |
虚拟机系统 | CentOS 7.5 |
一、数据库配置
进入数据库控制台:
mysql -u root -p
创建数据库placement:
CREATE DATABASE placement;
授予权限,退出数据库:
GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'localhost' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'%' IDENTIFIED BY '123456';
如下图:
二、配置用户和端点
登录管理账号:
. admin-openrc
在domain:default中创建placement用户:
openstack user create --domain default --password-prompt placement
如下图:
plancement用户添加admin权限:
openstack role add --project service --user placement admin
创建服务入口:
openstack service create --name placement --description "Placement API" placement
如下图所示:
创建API端点:
openstack endpoint create --region RegionOne placement public http://controller:8778
openstack endpoint create --region RegionOne placement internal http://controller:8778
openstack endpoint create --region RegionOne placement admin http://controller:8778
如下图:
三、安装并配置placement
安装placement:
yum install openstack-placement-api -y
使用如下命令备份并清除/etc/placement/placement.conf
的注释:
mv /etc/placement/placement.conf /etc/placement/placement.conf.source
cat /etc/placement/placement.conf.source | grep -Ev "^#|^$" > /etc/placement/placement.conf
编辑/etc/placement/placement.conf
,进行如下配置:
[placement_database]
# ...
connection = mysql+pymysql://placement:123456@controller/placement[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 = service
username = placement
password = 123456
同步数据库:
su -s /bin/sh -c "placement-manage db sync" placement
修改配置文件/etc/httpd/conf.d/00-placement-api.conf,
在 ErrorLog /var/log/placement/placement-api.log 下面添加:
<Directory /usr/bin>
<IfVersion >= 2.4>
Require all granted
</IfVersion>
<IfVersion < 2.4>
Order allow,deny
Allow from all
</IfVersion>
</Directory>
如下图所示:
重启httpd服务:
systemctl restart httpd
四、验证
登录admin账号:
. admin-openrc
检查状态:
placement-status upgrade check
安装pip(已安装可跳过):
yum install epel-release -y
yum install python-pip -y
安装osc-placement(其他版本可能有问题,建议使用2.2.0):
pip install osc-placement==2.2.0
查看资源:
openstack --os-placement-api-version 1.2 resource class list --sort-column name
如下图:
查看traits:
openstack --os-placement-api-version 1.6 trait list --sort-column name
如下图:
placement安装完成。