部署Placement服务

一:了解placement服务的概念

生活场景:

当客户需要一些主机资源的话,部署人员不知道应该从资源池分配哪一台主机给客户使用,不知道哪台主机提供的服务,所以,这个服务可以判断,因为是监控所有的主机上面的资源

1:作用

监控系统中的所有硬件资源的使用情况

主要就是与nova进行交互的

2:placement组件架构

placement的主要组成就是它的接口模块(api),这个模块就是监控系统的资源信息并给Nova提供他获得的资源信息

nova的计算模块先将要哪些资源的信息给api,然后api在数据库里查询得到的信息,给nova的计划模块,然后nova的计划模块选择一台主机进行创建,并将结果告知nova的计算模块

3:基本的工作流程

placement系统监控功能主要就是在nova创建虚拟机时提供服务

nova在创建云主机时需要调用placement获得的系统的信息,然后将获得选择一台主机进行创建的流程

具体如下:

1:nova告诉placement创建云主机需要哪些信息(内存,cpu):

2:placement从数据库中查询得到2个数据,一个数据就是现有的空闲资源能够创建云主机以及他们所剩的信息,第二个数据就是这些物理主机原有的信息

3:数据库返回查询到的信息给placement

4:placement将数据给nova的计划模块,并选择一台主机进行创建,并将结果告诉placement,和nova的计算模块

5:placement修改数据库,将相应的资源从数据库中扣除

 

二:安装与配置placement放置服务

1:安装placement软件包

软件包的名称为:openstack-placement-api

[root@controller conf.d]# yum -y install openstack-placement-api   

还是和glance一样,安装·完成后,会自动的生成placement用户和用户组

通过查看placement用户和用户组可以知道是否安装成功

[root@controller conf.d]# cat /etc/passwd | grep placement
placement:x:984:978:OpenStack Placement:/:/bin/bash
[root@controller conf.d]# cat /etc/group | grep placement
placement:x:978:
[root@controller conf.d]# 

2:创建数据库并授权

创建数据库

MariaDB [(none)]> create databse placement;  

本地用户的授权

MariaDB [(none)]> grant all privileges on placement.* to 'placement'@"localhost" identified by '000000';

远程用户的授权

MariaDB [(none)]> grant all privileges on placement.* to 'placement'@"%" identified by '000000';  

检查本地用户的授权  show gants for '数据库'@'本地用户还是远程用户'

MariaDB [(none)]> show grants for 'placement'@'localhost'

检查远程用户的授权

MariaDB [(none)]> show grants for 'placement'@'%'; 

3:修改placement配置文件

placement服务的配置文件是/etc/placement/placement.conf

由于这个文件的都是注释,所以,需要一个备份文件

1)备份这个文件

[root@controller conf.d]# cp /etc/placement/placement.conf /etc/placement/placement.bak

2)去掉注释的行和空行 重定向到主配置文件中去

[root@controller conf.d]# grep -Ev '^$|#' /etc/placement/placement.bak /etc/placement/placement.conf 

3)修改placement配置文件

在placement_databases 实现与placement数据库建立连接

connection = mysql+pymysql://placement:000000@controller/placement

就是以placment这个用户登录placement数据库---这个用户是安装placement软件包自动生成的用户

修改api 和keystone_authtoken部分,实现placement与keystone服务的交互

[keystone_authtoken]
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = pasword
project_domain_name = Default
user_domain_name = Defaule
project_name = project
username = placment
password = 000000

[api]
auth_strategy = keystone

这个就是每次用户使用服务的时候,都会将令牌给服务,然后服务将令牌给keystone服务认证,

openstack中的每个服务都有这个配置,所以,就是当使用这个服务的时候,会认证,认证的就是用户个密码

4)修改apache配置文件

因为placement服务是在web服务器上面运行的,安装placement后,会自动的在httpd的配置文件中生成00-placement-api.conf,修改这个文件

  <Directory /user/bin>
    <IfVersion >= 2.4>
     Require all granted
    </IfVersion>
  </Directory>

如果apache的版本号>2.4则像系统请求获得/usr/bin目录的所有操作权限

httpd -v 可以查看apache的版本号

5:同步数据库到placement

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

    

三:placement组件初始化

1:创建用户并分配角色

[root@controller /]# openstack user create --domain default --password 000000 placement
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| enabled             | True                             |
| id                  | 281413d07cac4395b03b144881840d8c |
| name                | placement                        |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+
[root@controller /]# openstack role add --project project --user placement admin

2:创建placement服务和端点

#创建了名字为placement 类型为placement
[root@controller /]# openstack service create --name placement placement
+---------+----------------------------------+
| Field   | Value                            |
+---------+----------------------------------+
| enabled | True                             |
| id      | 3f23877c1e8146bb9ff46e1cdf8499bf |
| name    | placement                        |
| type    | placement                        |
+---------+----------------------------------+
[root@controller /]# 

#创建三种端点
[root@controller /]# openstack endpoint create --region RegionOne placement admin  http://controller:8778

[root@controller /]# openstack endpoint create --region RegionOne placement internal  http://controller:8778


[root@controller /]# openstack endpoint create --region RegionOne placement public http://controller:8778

 

3:启动placement服务

因为placement和glance一样,都是运行在web服务器上面才能运行,所以重启httpd

[root@controller /]# systemctl restart httpd
[root@controller /]#   

  

四:检测placement服务

1:检查端口

[root@controller /]# netstat -pant | grep 8778
tcp6       0      0 :::8778                 :::*                    LISTEN      4151/httpd          
[root@controller /]# 

2:使用culr命令和placement提供的服务端点通信进行检验

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

  

运维操作跟我们没有关系

 

关于[keystone-token]中的信息

就是提供给keystone服务的认证信息,与环境变量一一对应,其中还有包含比如 user_domain_name project_domain_name proejct_name

只要认证成功后,就能使用这个服务

所以的话,这个就是所写的必要准备,使用每个服务的时候,都会去keystone中进行认证,

认证分为2个认证:

初次的认证:

使用服务的二次认证

 

posted @ 2023-11-07 21:10  q_7  阅读(97)  评论(0编辑  收藏  举报