【五】OpenStack(M版)双节点搭建 之 Nova计算服务的安装与配置

Message Queue(RabbitMQ Server)
OpenSatck节点之间通过消息队列使用AMPQ(Advanced Message Queue Protocol,高级消息队列协议)完成通信。Nova通过异步调用请求响应,使用回调函数在收到响应时触发。因为使用了异步通信,所以不会有用户长时间卡在等待状态。这是有效的,因为许多API调用预期的行为都非常耗时,例如加载一个云主机,或者上传一个镜像。
Compute Worker(Nova-compute)
Compute Worker处理管理云主机生命周期。它们通过消息队列服务接收云主机生命周期管理的请求,并承担操作工作。在一个典型生产环境的云部署中有一些Compute Workers。云主机部署在哪个可用的Compute Worker上取决于调度算法。
Network Controller(Nova-network)
Network Controller处理主机的网络配置。它包括IP地址分配、为项目配置VLAN、实现安全组、配置计算节点网络。
Volume Workers(Nova-volume)
Volume Workers用来管理基于LVM(Logical Volume Manager,逻辑卷管理)的云主机卷。Volume Workers有卷的相关功能,例如新建卷、删除卷、为云主机附加卷、为云主机分离卷。卷为云主机提供一个持久化的存储,因为根分区时非持久化的,所以当云主机终止时对它所做的任何改变都会丢失。当一个卷从云主机分离或者云主机终止(这个卷附加在该终止的云主机上)时,这个卷保留着存储在其上的数据。当把这个卷重新附加到相同云主机或者附加到不同云主机上时,这些数据依旧能被访问。
一个云主机的重要数据几乎总是要写在卷上,这样可以确保能在以后访问。这个对存储的典型应用需要数据库等服务的支持。
Scheduler(Nova-schduler)
调度器Scheduler把Nova-API调用映射为OpenStack组件。调度器作为一个称为Nova-scheduler的守护进程运行,通过恰当的调度算法从可用资源池获得一个计算服务。Scheduler会根据负载、内存、可用域的物理距离、CPU架构等做出调度决定。Nova-scheduler实现了一个可插入式的结构。
当前,Nova-scheduler实现了一些基本的调度算法:①随机算法,计算主机在所有可用域内随机选择;②可用域算法,与随机算法相仿,但是计算主机在指定的可用域内随机选择;③简单算法,这种方法选择负载最小的主机运行云主机。负载信息可通过负载均衡器获得。
总的来说,Nova的各个组件(如下图所示)是以数据库和队列为中心进行通信的,下面对其中的几个组件进行简单介绍:
(1)API
Nova-api:接收和响应客户的API调用。
(2)Console Interface
Nova-console:用户可以通过多种方式访问虚拟机的控制台;
Nova-novncproxy:基于Web浏览器的VNC访问;
Nova-spicehtml5proxy:基于HTML5浏览器的SPICE访问;
Nova-xvpnvncproxy:基于Java客户端的VNC访问;
Nova-consoleauth:负责对访问虚拟机控制台提供Token认证;
Nova-cert:提供x509证书支持。
(3)Database
Nova会有一些数据需要存放到数据库中,一般使用MySQL。一般数据库安装在控制节点上。
(4)Message Queue
前面介绍了Nova包含众多的子服务,这些子服务之间需要相互协调和通信。
为解耦各个子服务,Nova通过Message Queue作为子服务的信息中转站。
所以,在架构图上看到了子服务之间没有直接的连线,它们都通过Message Queue联系。
OpenStack默认是用RabbitMQ作为Message Queue。
(5)Compute Core
Nova-scheduler:虚拟机调度服务,负责决定在哪个计算节点上运行虚拟机。
Nova-compute:管理虚拟机的核心服务,通过调用Hypervisor API实现虚拟机生命周期管理;
Hypervisor:计算节点上跑的虚拟化管理程序,虚拟机管理底层的程序。
不同虚拟化技术提供自己的Hypervisor。常用的Hypervisor有KVM、Xen、VMWare等。
Nova-conductor:Nova-compute经常需要更新数据库,比如更新虚拟机状态。出于安全性和伸缩性考虑,Nova-compute并不会直接访问数据库,而是将这个任务委托给Nova-conductor。

以下步骤在controller节点

1、创建nova和 nova_api数据库并授权

mysql -uroot -p0
> create database nova;
> create database nova_api;
> grant all privileges on nova.* to 'nova'@'localhost'  identified by '0';
> grant all privileges on nova.* to 'nova'@'%'  identified by '0';
> grant all privileges on nova_api.* to 'nova'@'localhost' identified by '0';
> grant all privileges on nova_api.* to 'nova'@'%' identified by '0';

在这里插入图片描述

2、获得admin凭证来获取只有管理员能执行的命令的访问权限

. /root/admin-openrc

3、创建服务凭证

#1.添加nova用户
openstack user create --domain default --password 0 nova

在这里插入图片描述

#2.添加admin角色到nova用户和service项目上
openstack role add --project service --user nova admin

#3.创建nova服务实体
openstack service create --name nova --description "OpenStack Compute" compute

在这里插入图片描述

4、创建Compute服务API端点

#1.创建公共端点
openstack endpoint create --region RegionOne compute public http://controller:8774/v2.1/%\(tenant_id\)s
#2.创建外部端点
openstack endpoint create --region RegionOne compute internal http://controller:8774/v2.1/%\(tenant_id\)s
#3.创建管理端点
openstack endpoint create --region RegionOne compute admin http://controller:8774/v2.1/%\(tenant_id\)s

在这里插入图片描述

5、安装并配置Nova服务

#1.创建nova服务
yum install -y openstack-nova-api openstack-nova-conductor openstack-nova-console openstack-nova-novncproxy openstack-nova-scheduler

#2.配置nova所需组件,修改/etc/nova/nova.conf配置文件
cp /etc/nova/nova.conf{,.bak}

vim /etc/nova/nova.conf
#(1)启用计算和元数据API
#在[DEFAULT]下添加:
enabled_apis = osapi_compute,metadata

#(2)配置数据库连接
#在[api_database]下添加:
connection = mysql+pymysql://nova:0@controller/nova_api

#在[database]下添加:
connection = mysql+pymysql://nova:0@controller/nova

#(3)配置RabbitMQ消息服务器连接
#在[DEFAULT]下添加:
rpc_backend = rabbit

#在[oslo_messaging_rabbit]下添加:
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = 0

#(4)配置Keystone身份认证
#在[DEFAULT]下添加:
auth_strategy = keystone

#在[keystone_authtoken]下添加:
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = nova
password = 0

#(5)配置管理IP地址和启用网络服务
#在[DEFAULT]下添加:
my_ip = 192.168.100.10
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver

#(6)配置VNC代理使用控制节点的管理接口IP地址[vnc]下添加:
vncserver_listen = 192.168.100.10
vncserver_proxyclient_address = 192.168.100.10

#(7)配置镜像服务API端点
#在[glance]下添加:
api_servers = http://controller:9292

#(8)配置loca_path锁路径
#在[oslo_concurrency]下添加:
lock_path = /var/lib/nova/tmp

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述

6、同步数据库

su -s /bin/sh -c "nova-manage api_db sync" nova
su -s /bin/sh -c "nova-manage db sync" nova
#注:进入Nova数据库查看是否有数据库表,验证是否同步成功,这里就不展示了

在这里插入图片描述

7、启动并设置自启动

systemctl enable --now openstack-nova-api.service openstack-nova-consoleauth.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service

以下步骤在compute节点

8、安装并配置Nova-compute服务

#1.安装nova-compute服务
yum install -y openstack-nova-compute

#2.配置nova-compute所需组件,修改 /etc/nova/nova.conf 配置文件
cp /etc/nova/nova.conf{,.bak}

vim /etc/nova/nova.conf
#(1)配置RabbitMQ消息服务器连接
#在[DEFAULT]下添加:
rpc_backend = rabbit

#在[oslo_messaging_rabbit]下添加:
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = 0

#(2)配置认证服务访问
#在[DEFAULT]下添加:
auth_strategy = keystone

#在[keystone_authtoken]下添加:
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = nova
password = 0

#(3)配置管理IP地址和启用网络服务支持
#在[DEFAULT]下添加:
my_ip = 192.168.100.20
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver

#(4)启用并配置远程控制台的访问
#在[vnc]下添加:
enabled = True
vncserver_listen = 0.0.0.0
vncserver_proxyclient_address = 192.168.100.20
novncproxy_base_url = http://192.168.100.10:6080/vnc_auto.html

#(5)配置镜像服务 API 的位置
#在[glance]下添加:
api_servers = http://controller:9292

#(6)配置lock_path锁路径
#在[oslo_concurrency]下添加:
lock_path = /var/lib/nova/tmp

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

9、检查主机是否支持虚拟硬件加速

egrep -c '(vmx|svm)' /proc/cpuinfo
4
#这里为4,是因为一开始创建的时候在CPU选项部分勾选了虚拟化服务,所以是这样

① 如果这个命令返回了 1 或者大于 1 的值,那么你的计算节点支持硬件加速且不需要额外的配置。
② 如果这个命令返回了 0 值,那么你的计算节点不支持硬件加速。你必须配置 libvirt 来使用 QEMU 去代替 KVM,参考一下命令。

#编辑/etc/nova/nova.conf 文件的 [libvirt]
cp /etc/nova/nova.conf{,.bak}

vim /etc/nova/nova.conf
#在[libvirt]下添加:
virt_type = qemu

在这里插入图片描述

10、启动并设置自启动

systemctl enable --now libvirtd.service openstack-nova-compute.service
systemctl status libvirtd.service
systemctl status openstack-nova-compute.service

以下步骤在controller节点

11、验证操作

. /root/admin-openrc

#列出服务组件,查看是否成功注册并启动服务进程
openstack compute service list

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值