目录

安装部署Placement

1、登录数据库授权

2、安装palcement-api


安装部署Placement

  • 【Placement】服务 是从【nova】服务中拆分出来的组件,作用是收集各个【node】节点的可用资源,把【node】节点的资源统计写入到【MySQL】
  • 【Placement】服务会被【nova scheduler】服务进行调用
  • 【Placement】服务的监听端口是【8778】

1、登录数据库授权

1.Use the database access client to connect to the database server as the root user(登录数据库)

[root@controller ~]# mysql -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 31
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)]>

2.Create the placement database(数据库里创建placement)

MariaDB [(none)]> CREATE DATABASE placement;

3.Grant proper access to the placement database:

MariaDB [(none)]> GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'%' \
  IDENTIFIED BY '123';

4.退出数据库

MariaDB [(none)]> quit

5.Create the glance user(创建glance用户密码为glance) 

[root@controller opt]# openstack user create --domain default --password placement placement
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| enabled             | True                             |
| id                  | d33803e0d4df42a4ba652def28e1e8be |
| name                | placement                        |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+

6.Add the Placement user to the service project with the admin role: 

[root@controller opt]# openstack role add --project service --user placement admin

7.Create the Placement API entry in the service catalog:

[root@controller opt]#  openstack service create --name placement \
  --description "Placement API" placement
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Placement API                    |
| enabled     | True                             |
| id          | 323767a9dc614360b805b17bad697337 |
| name        | placement                        |
| type        | placement                        |
+-------------+----------------------------------+

 8.Create the Placement API service endpoints:

[root@controller opt]# openstack endpoint create --region RegionOne \
   placement public http://controller:8778
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | fc9565f58fd3451a8346975249093b2b |
| interface    | public                           |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | 323767a9dc614360b805b17bad697337 |
| service_name | placement                        |
| service_type | placement                        |
| url          | http://controller:8778           |
+--------------+----------------------------------+
[root@controller opt]#  openstack endpoint create --region RegionOne \
   placement internal http://controller:8778
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 7078bfd39c254961a320d21a0e202862 |
| interface    | internal                         |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | 323767a9dc614360b805b17bad697337 |
| service_name | placement                        |
| service_type | placement                        |
| url          | http://controller:8778           |
+--------------+----------------------------------+
[root@controller opt]#  openstack endpoint create --region RegionOne \
  placement admin http://controller:8778
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 6e68c25d79d649529e7e1d115d526312 |
| interface    | admin                            |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | 323767a9dc614360b805b17bad697337 |
| service_name | placement                        |
| service_type | placement                        |
| url          | http://controller:8778           |
+--------------+----------------------------------+

2、安装palcement-api

1.安装palcement-api包

[root@controller opt]# yum install openstack-placement-api -y

2.备份配置文件并且修改

[root@controller opt]# cp /etc/placement/placement.conf{,.bak}
[root@controller opt]# grep -Ev "^$|#" /etc/placement/placement.conf.bak > /etc/placement/placement.conf
[root@controller opt]# vi /etc/placement/placement.conf
[DEFAULT]
[api]
auth_strategy = keystone
[cors]
[keystone_authtoken]
www_authenticate_uri = http://controller:5000/
auth_url = http://controller:5000/
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = placement
password = placement
[oslo_policy]
[placement]
[placement_database]
connection = mysql+pymysql://placement:123@controller/placement
[profiler]
[root@controller opt]# su -s /bin/sh -c  "placement-manage db sync" placement
/usr/lib/python2.7/site-packages/pymysql/cursors.py:170: Warning: (1280, u"Name 'alembic_version_pkc' ignored for PRIMARY key.")
  result = self._query(query)

3.重启httpd服务

[root@controller opt]# systemctl restart httpd

4.验证

[root@controller opt]# placement-status upgrade check
+----------------------------------+
| Upgrade Check Results            |
+----------------------------------+
| Check: Missing Root Provider IDs |
| Result: Success                  |
| Details: None                    |
+----------------------------------+
| Check: Incomplete Consumers      |
| Result: Success                  |
| Details: None                    |
+----------------------------------+

安装部署Placement完成


  • Placement组件应该在Nova之前安装
  • Placement服务跟踪资源(比如计算节点,存储资源池,网络资源池等)的使用情况,提供自定义资源的能力,为分配资源提供服务。
  • Placement 肩负着这样的历史使命,最早在 Newton 版本被引入到 openstack/nova repo,以 API 的形式进行孵化,所以也经常被称呼为 Placement API。它参与到 nova-scheduler 选择目标主机的调度流程中,负责跟踪记录 Resource Provider 的 Inventory 和 Usage,并使用不同的 Resource Classes 来划分资源类型,使用不同的 Resource Traits 来标记资源特征。
  • 对于使用共享存储解决方案的用户,希望 Nova 和 Horizon 能够正确报告共享存储磁盘资源的总量和使用量信息。
  • 对于 Neutron ,会使用外部的第三方路由网络功能,希望 Nova 能够掌握和使用特定的网络端口与特定的子网池相关联,确保虚拟机能够在该子网池上启动。
  • 作为高级的 Cinder ,希望当 nova boot 命令中指定了 cinder volume-id 后 Nova 能够知道哪一些计算节点与 Request Volume 所在的 Cinder 存储池相关联
  • 所以,当资源类型和提供者变得多样时,自然就需求一种高度抽象且简单统一的管理方法,让用户和代码能够便捷的使用、管理、监控整个 OpenStack 的系统资源,这就是 Placement(布局)

概括:一个资源提供者可以是一个计算节点,共享存储池,或一个IP分配池。placement服务跟踪每个供应商的库存和使用情况。或者在一个计算节点创建一个实例的可消费资源如计算节点的资源提供者的CPU和内存,磁盘从外部共享存储池资源提供商和IP地址从外部IP资源提供者。