OpenStack部署之Nova项目(7-5)

Posted 荣少吃的少

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenStack部署之Nova项目(7-5)相关的知识,希望对你有一定的参考价值。

一、相关概念

1、Nova计算服务

在这里插入图片描述

2、Nova系统架构

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

二、nova组件介绍

1、API----通信接口

在这里插入图片描述

2、Scheduler----调度器

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

过滤调度器将按照下列顺序依次过滤
①RetryFilter(再审过滤器)
主要作用是过滤掉之前已经调度过的节点。如A、B、C都通过了过滤,A权重最大被选中执行操作,由于某种原因,操作在A上失败了。Nova-filter将重新执行过滤操作,那么此时A就被会RetryFilter直接排除, 以免再次失败
②AvailabilityZoneFilter (可用区域过滤器)
为提高容灾性并提供隔离服务,可以将计算节点划分到不同的可用区域中。Openstack默认有一个命名为nova的可用区域,所有的计算节点初始是放在nova区域中的。用户可以根据需要创建自己的一个可用区域。创建实例时,需要指定将实例部署在哪个可用区域中。Nova-scheduler执行过滤操作时,会使用AvailabilityZoneFilter不属于指定可用区域计算节点过滤掉
③RamFilter (内存过滤器)
根据可用内存来调度虚拟机创建,将不能满足实例类型内存需求的计算节点过滤掉,但为了提高系统资源利用率,Openstack在计算节点的可用内存时允许超过实际内存大小,超过的程度是通过nova.conf配置文件中
ram_allocation_ratio参数来控制的,默认值是1.5。
vi /etc/nova/nova.conf
ram_ allocation_ ratio=1 .5
④DiskFilter (硬盘调度器)
根据磁盘空间来调度虚拟机创建,将不能满足类型磁盘需求的计算节点过滤掉。磁盘同样允许超量,超量值可修改nova.conf中disk_allocation ratio参数控制,默认值是1.0
vi /etc/nova/nova.conf
disk_allcation_ratio=1.0
⑤ComputeFilter(计算过滤器)
保证只有nova-compute服务正常:工作的计算节点才能被nova-scheduler调度,它是必选的过滤器。
⑥ComputeCapablilitiesFilter (计算能力过滤器)
根据计算节点的特性来过滤,如x86_ 64和ARM架构的不同节点,将实例分别进行过滤
⑦ImagePropertiesFilter(镜像属性过滤器)
根据所选镜像的属性来筛选匹配的计算节点。通过元数据来指定其属性。如希望镜像只运行在KVM的Hypervisor上,可以通过Hypervisor Type属性来指定。
⑧ServerGroupAntiAffinityFilter(服务器组反亲和性过滤器)
要求尽量将实例分散部署到不同的节点上。例如有3个实例s1、s2、s3, 3个计算节点A、B、C。具体操作如下:
创建一个anti-affinit策略的服务器组
openstack server group create -policy antiaffinity group-1
创建三个实例,将它们放入group-1服务器组
openstack server create -flavor m1.tiny -image cirros -hint group=group-1 s1
openstack server create -flavor m1.tiny -image cirros -hint group=group-1 s2
openstack server create -flavor m1.tiny -image cirros -hint group=group-1 s3
ServerGroupAffinityFilter(服务器组亲和性过滤器)
与反亲和性过滤器相反,此过滤器尽量将实例部署到同-个计算节点上
在这里插入图片描述

3、Compute----计算器

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

三、虚拟机实例化流程和控制台接口

在这里插入图片描述

四、Nova架构

1、Nova部署架构

(1)Nova经典部署架构
一个控制节点+多个计算节点
在这里插入图片描述
(2)Nova负载均衡部署架构
多个控制节点+多个计算节点+独立的数据库(MariaDB、RabbitMQ)
在这里插入图片描述

2、Nova的cell架构

在这里插入图片描述

单Cell部署
在这里插入图片描述
多Cell部署
在这里插入图片描述

五、nova的元数据

在这里插入图片描述

六、OpenStack-NOVA组件部署

在这里插入图片描述

1、在CT控制节点上配置 Nova 服务

CT VM:192.168.10.101 NAT:192.168.221.101

(1)创建数据库实例和授权

mysql -uroot -p

CREATE DATABASE nova_api;
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY 'NOVA_DBPASS';
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY 'NOVA_DBPASS';

CREATE DATABASE nova;
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'NOVA_DBPASS';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'NOVA_DBPASS';

CREATE DATABASE nova_cell0;
GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' IDENTIFIED BY 'NOVA_DBPASS';
GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' IDENTIFIED BY 'NOVA_DBPASS';
flush privileges;
exit

在这里插入图片描述
(2)创建用户和API服务端点

创建OpenStack的nova用户
openstack user create --domain default --password NOVA_PASS nova#创建nova用户;验证openstack user list
openstack role add --project service --user nova admin#向nova用户添加admin角色;验证openstack role assignment list验证,还要查role、user、project列表看id号
openstack service create --name nova --description "OpenStack Compute" compute#创建nova服务实体;验证openstack service list

创建 compute API 服务端点
openstack endpoint create --region RegionOne compute public http://ct:8774/v2.1
openstack endpoint create --region RegionOne compute internal http://ct:8774/v2.1
openstack endpoint create --region RegionOne compute admin http://ct:8774/v2.1

在这里插入图片描述
在这里插入图片描述
(3)修改配置文件

安装软件包
yum -y install openstack-nova-api openstack-nova-conductor openstack-nova-novncproxy openstack-nova-scheduler

修改配置文件
cp -a /etc/nova/nova.conf{,.bak}
grep -Ev '^$|#' /etc/nova/nova.conf.bak > /etc/nova/nova.conf

添加/etc/nova/nova.conf配置(传参部分就演示了)
openstack-config --set /etc/nova/nova.conf DEFAULT enabled_apis osapi_compute,metadata
openstack-config --set /etc/nova/nova.conf DEFAULT my_ip 192.168.100.10
openstack-config --set /etc/nova/nova.conf DEFAULT use_neutron true
openstack-config --set /etc/nova/nova.conf DEFAULT firewall_driver nova.virt.firewall.NoopFirewallDriver
openstack-config --set /etc/nova/nova.conf DEFAULT transport_url rabbit://openstack:RABBIT_PASS@ct
openstack-config --set /etc/nova/nova.conf api_database connection mysql+pymysql://nova:NOVA_DBPASS@ct/nova_api
openstack-config --set /etc/nova/nova.conf database connection mysql+pymysql://nova:NOVA_DBPASS@ct/nova
openstack-config --set /etc/nova/nova.conf placement_database connection mysql+pymysql://placement:PLACEMENT_DBPASS@ct/placement
openstack-config --set /etc/nova/nova.conf api auth_strategy keystone
openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_url http://ct:5000/v3
openstack-config --set /etc/nova/nova.conf keystone_authtoken memcached_servers ct:11211
openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_type password
openstack-config --set /etc/nova/nova.conf keystone_authtoken project_domain_name Default
openstack-config --set /etc/nova/nova.conf keystone_authtoken user_domain_name Default
openstack-config --set /etc/nova/nova.conf keystone_authtoken project_name service
openstack-config --set /etc/nova/nova.conf keystone_authtoken username nova
openstack-config --set /etc/nova/nova.conf keystone_authtoken password NOVA_PASS
openstack-config --set /etc/nova/nova.conf vnc enabled true
openstack-config --set /etc/nova/nova.conf vnc server_listen '$my_ip'
openstack-config --set /etc/nova/nova.conf vnc server_proxyclient_address '$my_ip'
openstack-config --set /etc/nova/nova.conf glance api_servers http://ct:9292
openstack-config --set /etc/nova/nova.conf oslo_concurrency lock_path /var/lib/nova/tmp
openstack-config --set /etc/nova/nova.conf placement region_name RegionOne
openstack-config --set /etc/nova/nova.conf placement project_domain_name Default
openstack-config --set /etc/nova/nova.conf placement project_name service
openstack-config --set /etc/nova/nova.conf placement auth_type password
openstack-config --set /etc/nova/nova.conf placement user_domain_name Default
openstack-config --set /etc/nova/nova.conf placement auth_url http://ct:5000/v3
openstack-config --set /etc/nova/nova.conf placement username placement
openstack-config --set /etc/nova/nova.conf placement password PLACEMENT_PASS

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

(4)初始数据库,验证

初始化nova数据库,生成相关表结构
su -s /bin/sh -c "nova-manage api_db sync" nova
su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova
su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova
su -s /bin/sh -c "nova-manage db sync" nova

验证 nova cell0 和 cell1 是否正确注册
su -s /bin/sh -c "nova-manage cell_v2 list_cells" nova

启动 Nova 服务并配置开机启动
systemctl start openstack-nova-api openstack-nova-scheduler openstack-nova-conductor openstack-nova-novncproxy
systemctl enable openstack-nova-api openstack-nova-scheduler openstack-nova-conductor openstack-nova-novncproxy

检查nova服务是否启动
netstat -tnlup|egrep '8774|8775'
curl http://ct:8774

在这里插入图片描述

2、在C1、C2计算节点上配置 Nova 服务

C1 VM:192.168.10.102 NAT:192.168.221.102
C2 VM:192.168.10.103 NAT:192.168.221.103
配置内容和控制节点上的相似,这里就不多说了

(1)安装软件包并修改配置文件

yum -y install openstack-nova-compute
cp -a /etc/nova/nova.conf{,.bak}
grep -Ev '^$|#' /etc/nova/nova.conf.bak > /etc/nova/nova.conf

注意:下列命令中第三行需要修改当前节点的IP地址(C1:192.168.10.102 C2:192.168.10.103)
openstack-config --set /etc/nova/nova.conf DEFAULT enabled_apis osapi_compute,metadata
openstack-config --set /etc/nova/nova.conf DEFAULT transport_url rabbit://openstack:RABBIT_PASS@ct
openstack-config --set /etc/nova/nova.conf DEFAULT my_ip 192.168.10.103
openstack-config --set /etc/nova/nova.conf DEFAULT use_neutron true
openstack-config --set /etc/nova/nova.conf DEFAULT firewall_driver nova.virt.firewall.NoopFirewallDriver
openstack-config --set /etc/nova/nova.conf api auth_strategy keystone
openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_url http://ct:5000/v3
openstack-config --set /etc/nova/nova.conf keystone_authtoken memcached_servers ct:11211
openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_type password
openstack-config --set /etc/nova/nova.conf keystone_authtoken project_domain_name Default
openstack-config --set /etc/nova/nova.conf keystone_authtoken user_domain_name Default
openstack-config --set /etc/nova/nova.conf keystone_authtoken project_name service
openstack-config --set /etc/nova/nova.conf keystone_authtoken username nova
openstack-config --set /etc/nova/nova.conf keystone_authtoken password NOVA_PASS
openstack-config --set /etc/nova/nova.conf vnc enabled true
openstack-config --set /etc/nova/nova.conf vnc server_listen 0.0.0.0
openstack-config --set /etc/nova/nova.conf vnc server_proxyclient_address '$my_ip'
openstack-config --set /etc/nova/nova.conf vnc novncproxy_base_url http://ct:6080/vnc_auto.html
openstack-config --set /etc/nova/nova.conf glance api_servers http://ct:9292
openstack-config --set /etc/nova/nova.conf oslo_concurrency lock_path /var/lib/nova/tmp
openstack-config --set /etc/nova/nova.conf placement region_name RegionOne
openstack-config --set /etc/nova/nova.conf placement project_domain_name Default
openstack-config --set /etc/nova/nova.conf placement project_name service
openstack-config --set /etc/nova/nova.conf placement auth_type password
openstack-config --set /etc/nova/nova.conf placement user_domain_name Default
openstack-config --set /etc/nova/nova.conf placement auth_url http://ct:5000/v3
openstack-config --set /etc/nova/nova.conf placement username placement
openstack-config --set /etc/nova/nova.conf placement password PLACEMENT_PASS
openstack-config --set /etc/nova/nova.conf libvirt virt_type qemu

查看传参后的配置文件,这里只解释控制节点上没有的了

在这里插入图片描述
在这里插入图片描述
(2)判断计算机是否支持虚拟机硬件加速

这里其实我们在配置时已经更改,再次检查一下,以防配置失败
egrep -c '(vmx|svm)' /proc/cpuinfo

上述命令返回值不是 0,则计算节点支持硬件加速,不需要进行下面的配置。
上述命令返回值是 0,则计算节点不支持硬件加速,并且必须配置 libvirt 为使用
QEMU 而不是 KVM,需要编辑/etc/nova/nova.conf 文件中的[libvirt]部分
vim /etc/nova/nova.conf
[libvirt]
virt_type = qemu

在这里插入图片描述

(3)开启 Nova 计算服务并配置开机启动

systemctl start libvirtd.service openstack-nova-compute.service
systemctl enable libvirtd.service openstack-nova-compute.service

请注意:当有多个计算节点,并通过scp命令将配置文件拷贝到其他计算节点时,如果发现无法启动服务,
且错误为:“Failed to open some config files: /etc/nova/nova.conf”, 那么主要原因是配置文件权限错误,
需修改nova.conf文件的属主和属组为 root。

在这里插入图片描述

3、CT控制节点后续操作

CT VM:192.168.10.101 NAT:192.168.221.101

(1)添加计算节点到 cell 数据库
openstack compute service list --service nova-compute

(2)发现计算节点
su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova
以后添加新的计算节点时,必须在控制器节点上运行 su -s /bin/sh -c “nova-manage cell_v2 discover_hosts --verbose” nova 以注册这些新的计算节点。

设置适当的发现时间间隔(可选操作)
vim /etc/nova/nova.conf
[scheduler]
discover_hosts_in_cells_interval = 300
systemctl restart openstack-nova-api.service

(3)验证计算服务
openstack compute service list	#列出服务组件以验证每个进程的成功启动和注册情况
openstack catalog list			#列出身份服务中的API端点以验证与身份服务的连接
openstack image list			#列出图像服务中的图像以验证与图像服务的连接性
nova-status upgrade check		#检查Cells和placement API是否正常运行

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

以上是关于OpenStack部署之Nova项目(7-5)的主要内容,如果未能解决你的问题,请参考以下文章

五,openstack之nova服务的安装(计算节点)

Openstack 之 调整nova相关参数

OpenStack-Nova组件部署

《4》CentOS7.0+OpenStack+kvm云平台部署—配置Nova

云计算之OpenStack实战记与埋坑填坑

Openstack云计算:openstack rocky部署三:nova 部署与验证(控制节)