文章目录
本文章由公号【开发小鸽】发布!欢迎关注!!!
老规矩–妹妹镇楼:

一.Placement服务安装
(一)介绍
在安装Nova模块之前,需先安装Placement组件,Placement在openstack的Stein版本之前,属于Nova组件的一部分。该组件需要在Nova之前安装。
Placement服务跟踪资源(比如计算节点,存储资源池,网络资源池等)的使用情况,提供自定义资源的能力,为分配资源提供服务。
Placement在openstack的Stein版本之前,属于Nova组件的一部分。该组件应该在Nova之前安装。
Placement API作为一个标准的WSGI脚本,为WSGI服务器提供了模块级的应用程序属性。
(二)placement服务组件
1、Placement提供了placement-api WSGI脚本,用于与Apache,nginx或其他支持WSGI的Web服务器一起运行服务(通过nginx或apache实现python入口代理)。根据用于部署OpenStack的打包解决方案,WSGI脚本可能位于/usr/bin 或/usr/local/bin中
2、Placement服务是从 S 版本,从nova服务中拆分出来的组件,作用是收集各个node节点的可用资源,把node节点的资源统计写入到mysql,Placement服务会被nova scheduler服务进行调用 Placement服务的监听端口是8778
3、需修改的配置文件:
(1)placement.conf
主要修改思路:
Keystone认证相关(url、HOST:PORT、域、账号密码等)
对接数据库(位置)
(2) 00-placement-api.conf
主要修改思路:
Apache权限、访问控制
(三)Placement服务部署
1.创建Placement的数据库
[root@controller ~]# mysql -uroot -p
MariaDB [(none)]> CREATE DATABASE placement;
授予Placement数据库本地登录以及远程登录权限
MariaDB [(none)]> GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'localhost' IDENTIFIED BY 'PLACEMENT_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'%' IDENTIFIED BY 'PLACEMENT_DBPASS';
MariaDB [(none)]> exit;
2.创建placement用户
[root@controller ~]# openstack user create --domain default --password PLACEMENT_PASS placement
添加placement用户为admin角色,service项目
[root@controller ~]# openstack role add --project service --user placement admin
3.创建一个placement服务,服务类型为placement
[root@controller ~]# openstack service create --name placement --description "Placement API" placement
4、注册Placement服务API访问端口
注册三个API到placement的service中;注册的信息会写入到mysql中
[root@controller ~]# openstack endpoint create --region RegionOne placement public http://192.168.112.146:8778
[root@controller ~]# openstack endpoint create --region RegionOne placement internal http://192.168.112.146:8778
[root@controller ~]# openstack endpoint create --region RegionOne placement admin http://192.168.112.146:8778
5. 安装placement软件包
yum install openstack-placement-api -y
6. 修改配置文件
精简配置文件,删除注释内容
[root@controller ~]# cp /etc/placement/placement.conf /etc/placement/placement.conf.bak
[root@controller ~]# grep -Ev '^$|#' /etc/placement/placement.conf.bak > /etc/placement/placement.conf
修改placement数据库连接地址
openstack-config --set /etc/placement/placement.conf placement_database connection mysql+pymysql://placement:PLACEMENT_DBPASS@192.168.112.146/placement
修改placement的认证策略为keystone
openstack-config --set /etc/placement/placement.conf api auth_strategy keystone
修改placement的认证地址
openstack-config --set /etc/placement/placement.conf keystone_authtoken auth_url http://192.168.112.146:5000/v3
修改memcached服务器的地址
openstack-config --set /etc/placement/placement.conf keystone_authtoken memcached_servers 192.168.112.146:11211
修改认证方式为password
openstack-config --set /etc/placement/placement.conf keystone_authtoken auth_type password
修改项目domain名称为Default
openstack-config --set /etc/placement/placement.conf keystone_authtoken project_domain_name Default
修改用户的domain名称为Default
openstack-config --set /etc/placement/placement.conf keystone_authtoken user_domain_name Default
修改项目名称为service
openstack-config --set /etc/placement/placement.conf keystone_authtoken project_name service
修改用户名为placement
openstack-config --set /etc/placement/placement.conf keystone_authtoken username placement
修改认证密码为PLACEMENT_PASS
openstack-config --set /etc/placement/placement.conf keystone_authtoken password PLACEMENT_PASS
查看当前的placement.conf配置文件:
7.初始化placement数据库
[root@controller ~]# su -s /bin/sh -c "placement-manage db sync" placement
检查数据库初始情况:
8.修改Apache配置文件 00-placemenct-api.conf
安装完placement服务后会自动创建该文件-虚拟主机配置 , 修改placement的apache配置文件(官方文档坑点之一,这个步骤官方文档没有提到,如果不做,后面计算服务检查时将会报错)
此处是bug,必须添加下面的配置来启用对placement api的访问,否则在访问apache的api时会报403;添加在文件的最后即可
[root@controller ~]# vim /etc/httpd/conf.d/00-placement-api.conf
在该文件的末尾添加:
<Directory /usr/bin>
<IfVersion >= 2.4>
Require all granted
</IfVersion>
<IfVersion < 2.4> #apache版本;允许apache访问/usr/bin目录;否则/usr/bin/placement-api将不允许被访问
Order allow,deny
Allow from all #允许apache访问
</IfVersion>
</Directory>
注意是在VirtualHost选项内,如下所示,而不是在末尾:
9.重启apache服务
[root@controller ~]# systemctl restart httpd
httpd服务重启情况正常。
再检查服务是否启动成功,使用netstat -tnlup查看端口情况,如果存在8778的端口,表示placement服务启动成功。
10.检查placement状态
进一步检查,使用命令:
curl http://192.168.112.146:8778
直接访问placement的API地址,看是否能返回json。
[root@controller ~]# curl http://controller:8778
或者http://192.168.112.146:8778
都可以返回json:
检查placement状态
[root@ct placement]# placement-status upgrade check