OpenStack-Placement组件部署

  • 一、创建数据库实例和数据库用户
  • 二、创建Placement服务用户和API的endpoint
  • 小结

一、创建数据库实例和数据库用户

[root@ct ~]# mysql -uroot -p
MariaDB [(none)]> CREATE DATABASE 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)]> flush privileges;
MariaDB [(none)]> exit;

二、创建Placement服务用户和API的endpoint

● 创建placement用户

[root@ct ~]# openstack user create --domain default --password PLACEMENT_PASS placement
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| enabled             | True                             |
| id                  | 838a6cc4aaa34060904ba3ee86e2b8cc |
| name                | placement                        |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+

● 给与placement用户对service项目拥有admin权限

[root@ct ~]# openstack role add --project service --user placement admin

● 创建一个placement服务,服务类型为placement

[root@ct ~]# openstack service create --name placement --description "Placement API" placement
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Placement API                    |
| enabled     | True                             |
| id          | 034b1b6190a64885bbf5bd85800a7b38 |
| name        | placement                        |
| type        | placement                        |
+-------------+----------------------------------+

● 注册API端口到placement的service中;注册的信息会写入到mysql中

[root@ct ~]# openstack endpoint create --region RegionOne placement public http://ct:8778
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | af8e6d9f834e40a88907ae6e761cb588 |
| interface    | public                           |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | 034b1b6190a64885bbf5bd85800a7b38 |
| service_name | placement                        |
| service_type | placement                        |
| url          | http://ct:8778                   |
+--------------+----------------------------------+[root@ct ~]# openstack endpoint create --region RegionOne placement internal http://ct:8778
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 371032b02d0543d7ae5cd1069f9ed13b |
| interface    | internal                         |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | 034b1b6190a64885bbf5bd85800a7b38 |
| service_name | placement                        |
| service_type | placement                        |
| url          | http://ct:8778                   |
+--------------+----------------------------------+[root@ct~]# openstack endpoint create --region RegionOne placement admin http://ct:8778
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 1fd7feaa9767424baed4137e62ece5ec |
| interface    | admin                            |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | 034b1b6190a64885bbf5bd85800a7b38 |
| service_name | placement                        |
| service_type | placement                        |
| url          | http://ct:8778                   |
+--------------+----------------------------------+

● 安装placement服务

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

● 修改placement配置文件

#修改配置文件placement.conf
cp -a /etc/placement/placement.conf{,.bak}
grep -Ev '^$|#' /etc/placement/placement.conf.bak > /etc/placement/placement.confopenstack-config --set /etc/placement/placement.conf placement_database connection mysql+pymysql://placement:PLACEMENT_DBPASS@ct/placement
openstack-config --set /etc/placement/placement.conf api auth_strategy keystone
openstack-config --set /etc/placement/placement.conf keystone_authtoken auth_url  http://ct:5000/v3
openstack-config --set /etc/placement/placement.conf keystone_authtoken memcached_servers ct: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
#查看placement配置文件
[root@ct placement]# cat placement.conf
[DEFAULT]
[api]
auth_strategy = keystone
[cors]
[keystone_authtoken]
auth_url = http://ct:5000/v3               #指定keystone地址
memcached_servers = ct:11211           #session信息是缓存放到了memcached中
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = placement
password = PLACEMENT_PASS
[oslo_policy]
[placement]
[placement_database]
connection = mysql+pymysql://placement:PLACEMENT_DBPASS@ct/placement
[profiler]

● 导入数据库

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)cd

● 修改Apache配置文件: 00-placemenct-api.conf(安装完placement服务后会自动创建该文件-虚拟主机配置 )

#虚拟主机配置文件

[root@ct ~]# cd /etc/httpd/conf.d/
[root@ct conf.d]# ls
00-placement-api.conf  autoindex.conf  README  userdir.conf  welcome.conf  wsgi-keystone.conf
[root@ct conf.d]# cat 00-placement-api.conf         #安装完placement会自动创建此文件
Listen 8778<VirtualHost *:8778>WSGIProcessGroup placement-apiWSGIApplicationGroup %{GLOBAL}WSGIPassAuthorization OnWSGIDaemonProcess placement-api processes=3 threads=1 user=placement group=placementWSGIScriptAlias / /usr/bin/placement-api<IfVersion >= 2.4>ErrorLogFormat "%M"</IfVersion>ErrorLog /var/log/placement/placement-api.log#SSLEngine On#SSLCertificateFile ...#SSLCertificateKeyFile ...
</VirtualHost>Alias /placement-api /usr/bin/placement-api
<Location /placement-api>SetHandler wsgi-scriptOptions +ExecCGIWSGIProcessGroup placement-apiWSGIApplicationGroup %{GLOBAL}WSGIPassAuthorization On
</Location>
<Directory /usr/bin>          #此处是bug,必须添加下面的配置来启用对placement api的访问,否则在访问apache的
<IfVersion >= 2.4>                #api时会报403;添加在文件的最后即可Require all granted
</IfVersion>
<IfVersion < 2.4>              #apache版本;允许apache访问/usr/bin目录;否则/usr/bin/placement-api将不允许被访问Order allow,deny                Allow from all          #允许apache访问
</IfVersion>
</Directory>

● 重新启动apache

[root@ct placement]# systemctl restart httpd

● 测试
① curl 测试访问

[root@ct placement]# curl ct:8778
{"versions": [{"status": "CURRENT", "min_version": "1.0", "max_version": "1.36", "id": "v1.0", "links": [{"href": "", "rel": "self"}]}]}

② 查看端口占用(netstat、lsof)

[root@ct placement]# netstat -natp | grep 8778
tcp6       0      0 :::8778                 :::*                    LISTEN      36231/httpd

③ 检查placement状态

[root@ct placement]# 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-apiWSGI脚本,用于与Apache,nginx或其他支持WSGI的Web服务器一起运行服务(通过nginx或apache实现python入口代理)。
根据用于部署OpenStack的打包解决方案,WSGI脚本可能位于/usr/bin 或中/usr/local/bin
Placement服务是从 S 版本,从nova服务中拆分出来的组件,作用是收集各个node节点的可用资源,把node节点的资源统计写入到mysql,Placement服务会被nova scheduler服务进行调用 Placement服务的监听端口是8778

需修改的配置文件:

① placement.conf
主要修改思路:
Keystone认证相关(url、HOST:PORT、域、账号密码等)
对接数据库(位置)
② 00-placement-api.conf
主要修改思路:
Apache权限、访问控制

OpenStack------Placement组件部署相关推荐

  1. OpenStack安装Placement组件部署(四)

    OpenStack安装Placement组件部署 一.Placement组件介绍 二.OpenStack-Placement组件部署(ct(192.168.28.11)) 1.创建数据库实例和数据库用 ...

  2. OpenStack——nove组件部署

    OpenStack--nove组件部署 一.部署Placement 1.创建数据库实例和用户 2.创建placement服务用户和API的endpoint 3.安装placement服务 4.导入数据 ...

  3. openstack“T版“Placement组件部署

    文章目录 OpenStack-Placement组件部署 OpenStack-Placement组件部署 一.创建数据库实例和数据库用户 [root@ct ~]# mysql -uroot -p Ma ...

  4. 云系列--- Openstack Placement组件 | 参数说明 | 详细讲解

    Placement 前言 一.创建数据库实例和用户 二.创建 Placement 服务用户和 API 的 endpoint 1.创建placement用户 2.让placement用户对service ...

  5. openstack placement 组件作用理解

    例如,一个资源提供者可以是一个计算节点,共享存储池,或一个IP分配池.placement服务跟踪每个供应商的库存和使用情况.例如,在一个计算节点创建一个实例的可消费资源如计算节点的资源提供者的CPU和 ...

  6. OpenStack | Placement组件

  7. OpenStack T版—Nova组件部署详解

    目录 一.Nova计算服务 1.1.Nova系统架构 1.2.Nova组件介绍-API 1.3.Nova组件介绍-Scheduler 1.3.1.Nova调度器的类型 1.3.2.过滤器调度器调度过程 ...

  8. OpenStack的部署T版(四)——Placement组件

    OpenStack的部署(四)--Placement项目 OpenStack-Placement组件部署 1.创建数据库实例和数据库用户 2.创建Placement服务用户和API的endpoint ...

  9. 传统公司部署OpenStack(t版)简易介绍(四)——placement模块部署

    传统公司部署OpenStack(t版)简易介绍(四)--placement模块部署 一.创建数据库实例和数据库用户 二.创建Placement服务用户和API的endpoint 三.测试 总结 一.创 ...

  10. Openstack-nova(placement)组件部署流程

    这里写目录标题 一. 部署placement组件 1.1 创建数据库实例和数据库用户 1.2 创建placement服务与api的endpoint 1.3 安装placement服务 1.4 导入数据 ...

最新文章

  1. Strategy_Level1
  2. 鸿蒙10.1升级机型,鸿蒙系统的前奏,华为EMUI10.1从底层掏空安卓,20款老机型升级...
  3. android 模仿大众点评团购卷列表多余3条时折叠,点击时显示剩余全部的功能
  4. matlab调用cst计算扫频,CST MWS I算法求解单站RCS是否可以进行扫频设置
  5. 面向.NET开发人员的Dapr——服务调用
  6. 由浅到深理解ROS(5.1)- roslaunch 学习
  7. 用CNN做NLP文本分类竞赛
  8. 原 matplotlib命令与格式:系统字体与显示中文
  9. mysql root dengru_Mysql学习Mysql中文汉字转拼音的实现(每个汉字转换全拼)
  10. 计算机实战项目之 [含论文+任务书+中期检查表+答辩PPT+源码等]基于javaweb大学生助学贷款管理系统
  11. linux无线网卡消失,Linux下无线网卡无法开启解决办法
  12. Qt实现圆形组合按钮,摇杆
  13. ajax上传图片到又拍云,又拍云存储(UpYun)的.NET Core填坑
  14. 2018 BACS Regional Programming Contest F. Football Free Kick(map离散化)
  15. Microsoft Teams 思维导图的4大好处,你知道怎样创建吗?
  16. cdr多页面排版_教你怎样在CDR怎样编号自动排版.doc
  17. ios 判断iPhone、iPad硬件型号
  18. 钉钉免费实现内网穿透绝对靠谱
  19. JS小数取整以及保留小数点后两位
  20. 给定一个函数做其最佳平方逼近c语言,第三章 函数逼近 — 最佳平方逼近.

热门文章

  1. 未来计算机的畅享300,新学期畅享作文300字(通用5篇)
  2. 其实你的AI技能并没有那么值钱\n
  3. 01 网易云音乐 vant -黑
  4. Android无限滑动控件实现
  5. 2019双十一大战:苏宁的“1小时场景生活圈”诱惑
  6. cad相对坐标快捷键_CAD中相对坐标绝对坐标的输入方法
  7. maven学习:maven 的入门
  8. UGUI源码解析(二十二)ContentSizeFitter
  9. IU酒店释放轻中端投资活力,开启曲靖酒店新篇章
  10. UVA11540 Sultan's Chandelier