部署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个认证:
初次的认证:
使用服务的二次认证