【版本】
当前版本号v20240314
| 版本 | 修改说明 | 
|---|---|
| v20240314 | 新增日志查看说明和命令结果展示 | 
| v20240310 | 新增参考配置 | 
| v20230701 | 文档基于 RockyLinux8 和 Openstack Yoga 开发 | 
任务5 - 控制节点安装 Placement 服务
【任务目的】
- 掌握搭建 Openstack Placement 组件
 
【任务环境】
- 内存:至少4G
 - 硬盘:至少空余40G
 - 操作系统: 64位 Windows系统。
 
【任务资源】
- FinalShell
 - RockyLinux 8 系统镜像
 - VirtualBox
 
【任务说明】
Placement 服务跟踪__资源提供者__(比如计算节点,存储资源池,网络资源池等)的使用情况,提供自定义资源的能力,为分配资源提供服务。
Placement 在openstack的Stein版本之前,属于Nova组件的一部分。该组件应该在Nova之前安装。
【任务步骤】
- 使用Root用户登录控制节点(Controller)。输出 Hostname ,确认所在节点是控制节点。
 
hostname
结果:
controller+你的学号后3位
注意以下步骤在控制节点(Controller)上执行!
数据库创建、用户权限配置
- 使用 root 用户登录 MariaDB 数据库,密码为
123456。创建 placement 库,placement 用户和授权。 
mysql -u root -p
CREATE DATABASE placement;
GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'localhost' IDENTIFIED BY 'PLACEMENT_DBPASS';
GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'%' IDENTIFIED BY 'PLACEMENT_DBPASS';
exit;
用户、角色、服务、端点创建
- 在 Keystone 创建 placement 用户及关联角色。
 
source /etc/keystone/admin-openrc
openstack user create --domain default --password PLACEMENT_PASS placement
openstack role add --project service --user placement admin 
- 在 Keystone 上创建 placement Service 和 endpoint。注意替换为你的学号
 
openstack service create --name placement --description "Placement API" placement
openstack endpoint create --region RegionOne placement public http://controller+你学号后3位:8778
openstack endpoint create --region RegionOne placement internal http://controller+你学号后3位:8778
openstack endpoint create --region RegionOne placement admin http://controller+你学号后3位:8778
注意这里的 service 不能重复创建,运行命令
openstack service list应该只能查看到1个 placement 的 service,如果有多个可以用openstack service delete '替换为service ID'命令删除
注意这里 endpoint 不能重复创建,运行命令
openstack endpoint list应该只能查看到3个 placement 的 endpoint,如果有多个可以用openstack endpoint delete '替换为endpoint ID'命令删除
安装 placement
- 安装 plancement-api 服务相应软件包
 
dnf install openstack-placement-api -y
placement.conf 配置
- 备份 placement 配置文件
 
cp /etc/placement/placement.conf{,.bak}
- 清除配置文件注释
 
grep '^[a-Z\[]' /etc/placement/placement.conf.bak > /etc/placement/placement.conf
- 设置 API 配置项,注意替换为你的个人学号。
 
openstack-config --set /etc/placement/placement.conf  placement_database connection mysql+pymysql://placement:PLACEMENT_DBPASS@controller+你学号后3位/placement
openstack-config --set /etc/placement/placement.conf  auth_strategy keystone
openstack-config --set /etc/placement/placement.conf  keystone_authtoken auth_url http://controller+你学号后3位:5000/v3
openstack-config --set /etc/placement/placement.conf  keystone_authtoken memcached_servers controller+你学号后3位:11211
openstack-config --set /etc/placement/placement.conf  keystone_authtoken auth_type password
openstack-config --set /etc/placement/placement.conf  keystone_authtoken project_domain_name Default
openstack-config --set /etc/placement/placement.conf  keystone_authtoken user_domain_name Default
openstack-config --set /etc/placement/placement.conf  keystone_authtoken project_name service
openstack-config --set /etc/placement/placement.conf  keystone_authtoken username placement
openstack-config --set /etc/placement/placement.conf  keystone_authtoken password PLACEMENT_PASS
可以用vim 打开
/etc/placement/placement.conf配置文件与/etc/placement/placement.conf 参考配置进行比对确认。
数据库同步
- 同步 placement 数据库
 
su -s /bin/sh -c "placement-manage db sync" placement
- 进入 MariaDB 查看是否有表格出现。密码为
PLACEMENT_DBPASS。如果有则表示数据库同步成功。 
mysql -u placement -pPLACEMENT_DBPASS
use placement;
show tables;
- 退出 MariaDB 。
 
exit
httpd 配置
- 修改 placement 在 httpd 的相关配置。
 
vim /etc/httpd/conf.d/00-placement-api.conf
- 在
</VirtualHost>标签前加入以下内容。 
<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
验证
- 查询 placement service,表里应该只有1行记录。
 
source /etc/keystone/admin-openrc
openstack service list |grep -E "ID|placement"
类似结果:
| ID                               | Name     | Type     |
| c62d1bd95b0745369ea8d1e91a57c061 | placement   | placement    |
- 查询 placement endpoint,表里应该有3行记录。
 
source /etc/keystone/admin-openrc
openstack endpoint list |grep -E "ID|placement"
类似结果:
| ID                               | Region    | Service Name | Service Type | Enabled | Interface | URL                            |
| 0e41e0c9211e4a549d72eff5dd567941 | RegionOne | placement    | placement    | True    | internal  | http://controller999:8778      |
| a1a1caff7fdd4cd3be78896bcca17320 | RegionOne | placement    | placement    | True    | public    | http://controller999:8778      |
| c0ec049fb306432bae75c832cd5c3f2e | RegionOne | placement    | placement    | True    | admin     | http://controller999:8778      |
- 查询 placement user,表里应该有1行记录。
 
source /etc/keystone/admin-openrc
openstack user list |grep -E "ID|placement"
类似结果:
| ID                               | Name    |
| c5a480d3f8ba41458926135609074b3c | placement  |
- 查看 8778 端口是否有服务运行。
 
 netstat -tulpn|grep 8778
- 正常会返回类似以下结果
 
tcp6       0      0 :::8778      :::*   LISTEN      1779/httpd
- 查看 OpenStack 相关服务是否是 active 的状态。正常应该出现6个服务 active。
 
opst-proc-show.sh
- 正常应该返回以下类似结果,状态应该都是
active。 
 UNIT                         LOAD        ACTIVE   SUB       DESCRIPTION                                                                  
 chronyd.service              loaded      active   running   NTP client/server                                                            
 etcd.service                 loaded      active   running   Etcd Server                                                                  
 httpd.service                loaded      active   running   The Apache HTTP Server                                                       
 mariadb.service              loaded      active   running   MariaDB 10.3 database server                                                 
 memcached.service            loaded      active   running   memcached daemon                                                             
 rabbitmq-server.service      loaded      active   running   RabbitMQ broker    
 openstack-glance-api.service loaded      active   running   OpenStack Image Service (code-named Glance) API server    
- 如果 Placement 出现问题,可以点击下载此 /etc/placement/placement.conf 参考配置 进行对比。
 
【常见问题FAQ】
【后台进程(服务)说明】
如果某个后台进程(服务)无法启动,需要查看日志,可以使用以下命令,日志文件路径在下表有描述。
tail -100 日志文件
| 服务名称 | 日志目录/路径 | 说明 | 
|---|---|---|
| chronyd | /var/log/chrony | chrony是网络时间协议(NTP)的实现。它可以替代ntpd,实现服务器 | 
| rabbitmq-server | /var/log/rabbitmq | RabbitMQ 是高级消息队列协议(AMQP)开放标准的实现,常用于服务器之间的消息通讯,Openstack 使用 RabbitMQ 作为底层组件来实现不同模块之间的远程调用(RPC)。 | 
| mariadb | /var/log/mariadb | MariaDB 是非常流行的开源关系型数据库,它能够兼容MySQL | 
| memcached | /var/log/messages | Memcached 是一个基于内存的,开源的分布式对象缓存系统。 Openstack 会使用 Memcached 存储一些短期的对象,例如令牌等。 | 
| httpd | /var/log/httpd | Apache Web 服务器,对外提供 HTTP 等协议的 Web 访问服务 | 
| openstack-glance-api | /var/log/glance/api.log | 提供Glance API调用服务,对应配置文件/etc/glance/glance-api.conf,进程端口9292 | 
【思考和探索】
Linux 命令中
|有什么作用?netstat 命令有什么作用?
openstack-config --set命令后面的参数分别表示什么意思?
