(三)OpenStack ( Train版 ) Placement 放置服务了解与部署

一、关于 Placement 放置服务

        OpenStack 项目的 Placement 服务是一个用于监控平台中所有硬件资源使用情况的组件。它的主要作用是跟踪资源(比如计算节点、存储资源池、网络资源池等)的使用情况,并将这些资源的统计信息写入到数据库中。这些信息可以被其他 OpenStack 服务调用,以便能够更好地管理和分配资源。

        在 OpenStack 的 Stein 版之前,对系统资源的监控和云主机资源的选择都是由 Nova 计算服务独立完成,这时的 Placement 属于 Nova 的一部分,需要在 Nova 之前安装。从 OpenStack 的 Stein版开始,将资源监控功能从 Nova 服务中拆分出来,成为了一个单独的服务,起名为 Placement 放置服务。它负责跟踪每个资源提供者的库存和使用情况,例如计算节点的CPU、内存、磁盘等资源,以及外部共享存储池和IP地址等资源。这些信息对于云平台的资源管理和调度非常重要,可以帮助云平台更好地满足用户的需求,提高资源的利用率和效率。

        Placement 服务的监听端口是8778,可以通过 RESTful API 与其他 OpenStack 服务进行通信。它使用 MySQL 数据库来存储和管理资源信息,因此需要创建相应的数据库和用户,并授予相应的权限。

        Placement 组件是 OpenStack 项目的重要组成部分之一,它提供了对云平台中所有硬件资源的监控和管理能力,为云平台的稳定运行和高效服务提供了保障。

二、Placement 放置服务的组成

        Placement 的主要组成是它的接口模块(Placement-API),该模块负责监控系统资源信息。Nova 的计算模块(Nova-Compute)将要创建的云主机的硬件需求提交给 Placement-API;Placement-API 收到需求后从系统资源库中查询到现有资源满足创建云主机的所有计算机的信息,然后将结果返回给 Nova 的计划模块(Nova-Scheduler);Nova-Scheduler 根据获得的信息选择其中一台计算机并将结果告诉 Nova-Compute。

三、Placement 放置服务的安装和配置

 注意:其他一些 OpenStack 服务需要 Placement 放置服务, 特别是 Nova服务,因此它应该安装在其他服务之前,但在 Keystone 身份服务之后。

 注意:该服务部署在控制节点:syl-ct 主机上

1、安装前提

        在安装和配置放置服务之前,必须先创建数据库、服务凭据和 API 端点。

①、创建数据库

  • 使用 root 用户访问数据库服务器:
# 注: 123为用户root的密码 命令可以写作-p密码,也可以在-p回车后密文输入数据库密码
[root@syl-ct ~]# mysql -u root -p123
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 8
Server version: 10.3.20-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>
  • 创建数据库:placement
MariaDB [(none)]> CREATE DATABASE placement;
Query OK, 1 row affected (0.000 sec)
  • 对数据库设置适当的访问权限,对于用户:placement
# ALL PRIVILEGES 是一个通配符,它代表数据库中的所有权限,如查询、插入、更新、删除等。
# ON placement.* 指定了权限的适用范围为placement数据库中的所有表,placement指数据库名,而 * 指该数据库的所有表
# TO 'placement'@'localhost'或'%' 中 placement 指被授予权限的用户名,localhost 指仅在此数据库服务器上可以使用该用户以授予权限访问指定数据库,而 % 则意味着可以在任何主机上使用该用户以授予权限访问指定数据库,而不仅仅是此数据库服务器本身。
# IDENTIFIED BY '123' 中 123 为用户 placement 的密码,

MariaDB [(none)]> GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'localhost' IDENTIFIED BY '123';
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'%' IDENTIFIED BY '123';
Query OK, 0 rows affected (0.000 sec)
  • 退出数据库
MariaDB [(none)]> exit
Bye
[root@syl-ct ~]# 

②、配置用户和API端点

  • 获取凭据以使用仅限管理员的 CLI 命令:admin
[root@syl-ct ~]# . admin-openrc
  • 创建 Placement 服务的用户:user:placement,password:123
# --domain default:用户所属域:默认域,--password 123:用户密码,placement:用户名 
# 也可以用 --password-prompt 代替 --password 123 来使用密文设置用户的密码

[root@syl-ct ~]# openstack user create --domain default  --password 123 placement
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| enabled             | True                             |
| id                  | 719849eb2b1c46eb88a094b1de87cc9b |
| name                | placement                        |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+
  • 将 Placement 用户添加到具有管理员角色的 service 服务项目

在OpenStack中,角色是一个权限集合,用于定义用户在一个项目中的访问和操作权限。admin 角色通常拥有最高的权限,可以执行几乎所有的操作。

# 此命令将用户 placement 添加到 service 项目中,并为其分配 admin 角色,使其在该项目中拥有管理员(最高)权限。

[root@syl-ct ~]# openstack role add --project service --user placement admin
  • 在服务目录中创建 Placement API 条目:
# --name placement:服务名称,--description "Placement API":服务描述,placement:服务端点类型

[root@syl-ct ~]# openstack service create --name placement --description "Placement API" placement
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Placement API                    |
| enabled     | True                             |
| id          | 669ea28cdcc34981885ce1212086736d |
| name        | placement                        |
| type        | placement                        |
+-------------+----------------------------------+
  • 创建 Placement  API 服务端点:
# --region RegionOne:指定端点属于 RegionOne 区域。在 OpenStack 中,区域(region)是逻辑上分隔的部署单元,允许在多个地理位置或数据中心中部署和管理服务。
# public、internal 和 admin:指定端点的类型,说明该端点是用于外部用户访问、内部组件通信以及管理员任务。

[root@syl-ct ~]# openstack endpoint create --region RegionOne placement public http://syl-ct:8778
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 768ef74dfb2a4e4b841318f7497a00b5 |
| interface    | public                           |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | 669ea28cdcc34981885ce1212086736d |
| service_name | placement                        |
| service_type | placement                        |
| url          | http://syl-ct:8778               |
+--------------+----------------------------------+
[root@syl-ct ~]# openstack endpoint create --region RegionOne placement internal  http://syl-ct:8778
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | bbd719ad0da9490b81c1dc1316a7fa52 |
| interface    | internal                         |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | 669ea28cdcc34981885ce1212086736d |
| service_name | placement                        |
| service_type | placement                        |
| url          | http://syl-ct:8778               |
+--------------+----------------------------------+
[root@syl-ct ~]# openstack endpoint create --region RegionOne placement admin  http://syl-ct:8778
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 39927a2135e44828b7c9da673b3c4f52 |
| interface    | admin                            |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | 669ea28cdcc34981885ce1212086736d |
| service_name | placement                        |
| service_type | placement                        |
| url          | http://syl-ct:8778               |
+--------------+----------------------------------+

2、安装和配置组件

注意

        默认配置文件因发行版不同而异。您可能需要添加这些段落和选项,而不是修改现有的节和选项。此外,下文配置片段中的省略号表示您应该保留已存在的默认配置选项:# 。。。 

①、安装软件包:openstack-placement-api

# 等待安装完毕

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

②、编辑配置文件: /etc/placement/placement.conf

  • 配置数据库访问:[placement_database]
# 123为上文创建数据库时所设的 placement 用户的密码,syl-ct 为数据库服务器所在主机名

[placement_database]
# ...
connection = mysql+pymysql://placement:123@syl-ct/placement
  • 配置接入 Keystone 身份认证服务:[api] 和 [keystone_authtoken]
# 选用 keystone 服务用作身份验证

[api]
# ...
auth_strategy = keystone
# 此处后面五项的值需要和上文中在 Keystone 中注册 placement 用户时所用一致

[keystone_authtoken]
# ...
auth_url = http://syl-ct:5000/v3
memcached_servers = syl-ct:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = placement
password = 123

 注意:

        注释掉或删除 [keystone_authtoken] 部分中的任何其他选项。

③、填充数据库: placement

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

 注意:忽略此输出中的任何弃用消息。

④、修改 placement 的 apache 配置文件:/etc/httpd/conf.d/00-placement-api.conf

注意:

        此处是官方文档坑点之一,官方文档没有此步骤,不做则 Placement 服务不能正常实现功能

# ...
  #SSLEngine On
  #SSLCertificateFile ...
  #SSLCertificateKeyFile ...
# 上面部分不要动,从此处开始添加以下内容:
  <Directory /usr/bin>
   <IfVersion  >= 2.4>
      Require all granted
   </IfVersion>
   <IfVersion < 2.4>
     Order allow,deny
     Allow from all
   </IfVersion>
  </Directory>
# 以上部分为添加内容,后面以及原有内容不要动
</VirtualHost>

3、完成安装

①、重启 httpd 服务:

[root@syl-ct ~]# systemctl restart httpd

②、验证 Placement 服务:

  • 查看8778端口情况,如果存在,则表示 Placement 服务启动成功:
# 此处的(# ...) :指其他不相关的端口信息
[root@syl-ct ~]# netstat -tnlup
# ...
tcp6       0      0 :::8778                 :::*                    LISTEN      18085/httpd    
# ...
  • 判断 Placement 服务状态:
[root@syl-ct ~]# placement-status upgrade check
+----------------------------------+
| Upgrade Check Results            |
+----------------------------------+
| Check: Missing Root Provider IDs |
| Result: Success                  |
| Details: None                    |
+----------------------------------+
| Check: Incomplete Consumers      |
| Result: Success                  |
| Details: None                    |
+----------------------------------+
  • 检查 Placement API 返回信息:
[root@syl-ct ~]# curl http://syl-ct:8778/
{"versions": [{"status": "CURRENT", "min_version": "1.0", "max_version": "1.36", "id": "v1.0", "links": [{"href": "", "rel": "self"}]}]}

四、下一篇:Nova 计算服务的学习与部署

  • 10
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值