玩转企业云计算平台系列(五):Openstack 计算服务 Nova
点击下方名片,设为星标!回复“1024”获取2TB学习资源!前面介绍了Openstack 入门、基础环境部署、Keystone、Glance等相关的知识点,今天我将详细的为大家介绍Openstack 计算服务 Nova相关知识,希望大家能够从中收获多多!如有帮助,请点在看、转发分享朋友圈支持一波!!!Nova简介Nova 是 openstack 中最早出现的模块之一,主要是为openstac...
点击下方名片,设为星标!
回复“1024”获取2TB学习资源!
前面介绍了 Openstack 入门、基础环境部署、Keystone 、Glance等相关的知识点,今天我将详细的为大家介绍 Openstack 计算服务 Nova相关知识,希望大家能够从中收获多多!如有帮助,请点在看、转发分享朋友圈支持一波!!!
Nova简介
Nova 是 openstack 中最早出现的模块之一,主要是为openstack提供计算服务。在openstack中,Nova又分为计算节点和控制节点。我们把安装有nova-compute的节点称为计算节点,其他的节点称为控制节点。nova的计算节点只负责创建虚拟机,而nova的控制节点负责控制。
Nova 主要有以下服务
-
1、API 负责接收和响应外部请求,支持openstack api、EC2(亚马逊云) API等。
-
2、Cert 负责进行身份认证。
-
3、Scheduler 用于云主机调度。
-
4、Conductor 用于计算节点访问数据。
-
5、Consoleauth 用于控制台的授权验证。
-
6、Novncproxy VNC代理。
Nova 系统架构
Nova 由多个服务器进程构成,每个进程执行不同的功能,下面介绍各个组件的功能。
-
nova-api:接收 rest 消息,包括 HTTP 请求,服务间通信。
-
nova-scheule:选择合适的主机。
-
nova-conductor:数据库操作和复杂流程控制。
-
nova-compute:虚拟机生命周期管理和资源管理,负责处理虚机和 hypervisor 间的通信。
-
db:sql 数据库存储nova相关的业务数据。
-
更多关于云计算服务 Openstack 系列的学习文章,请参阅:企业云计算平台 Openstack ,本系列持续更新中。
Nova 组件详解
Nova-API
Nova API提供的功能:
-
1)对外提供REST接口,接收和处理请求。
-
2)对传入的参数进行合法性校验和约束限制。
-
3)对请求的资源进行配额的校验和预留。
-
4)资源的创建,更新,删除查询等。
-
5)虚拟机生命周期管理的入口。
Nova-Conductor
Nova-Conductor功能:
-
1)数据库操作,解耦其他组件(Nova-Compute)数据库访问。
-
2)Nova复杂流程控制,如创建,冷迁移,热迁移,虚拟机规格调整,虚拟机重建。
-
3)其他组件的依赖,如 nova-compute 需要 nova-conductor 启动成功后才能启动。
-
4)其他组件的心跳定时写入。
引入nova-conductor的好处
-
1)安全性上考虑。之前每个nova-compute都是直接访问数据库的。如果由于某种原因,某个计算节点被攻陷了,那攻击者就可以获取访问数据库的全部权限,肆意操作数据库。
-
2)方便升级。将数据库和nova-compute解耦,如果数据库的模式改变, nova compute就不用升级了。
-
3)性能上考虑。之前数据库的访问在nova-compute中直接访问且数据库访问是阻塞性的,由于nova-compute只有一个os线程,所以当一个绿色线程去访问数据库的时候会阻塞其他绿色线程,导致绿色线程无法并发。但是nova-conductor是通过rpc 调用,rpc调用是绿色线程友好的,一个rpc call的执行返回前不会阻塞其他绿色线程的执行。这样就会提高了操作的并发。
Nova-Scheduler
Scheduler 用于决定那台计算节点承载计算实例的 nova 调度器。Nova-Scheduler 功能:
-
1)筛选和确定将虚拟机实例分配到哪一台物理机。
-
2)分配过程主要分两步,过滤和权重;通过过滤器选择满足条件的计算节点,通过权重选择最优的节点。
调度器的类型
-
1)随机调度器:从所有正常运行 nova-compute 服务的节点中随机选择。
-
2)缓存调度器:是随机调度器的一种特殊类型,在随机调度器的基础上,将主机资源信息缓存在本地内存中,然后通过后台的定时任务,定时从数据库中获取最新的主机资源信息,周期性同步而不是实时获取主机资源信息。
-
3)过滤器调度器:根据指定的过滤条件以及权重选择最佳的计算节点,又称为筛选器。
调度器的调度过程
Nova Scheduler 的调度过程如下图所示:从上图可以看出,Nova Scheduler的调度过程分为两个步骤,即过滤和权值计算。所谓过滤就是根据虚拟机资源配置情况和各个主机的实际情况,过滤掉一些不符合条件的主机。在进行过滤后,Nova Scheduler会对剩余的主机进行权重计算,最终选择最优的物理机进行调度。
Nova-Compute
Nova-Compute 框架
-
Manager
-
Driver
Driver对接不同的虚拟化平台
-
1、KVM
-
2、VMware
-
3、Xen
-
4、LXC
-
5、QEMU
-
…
Nova-Compute功能
-
虚拟机各生命周期操作的真正执行者(会调用对应的hypervisor的driver)。
-
底层对接不同虚拟化的平台(KVM/VMware/XEN/Ironic等)
-
内置周期性任务,完成资源刷新,虚拟机状态同步等功能。
-
资源管理模块(resource_tracker)配合插件机制,完成资源的统计。
Nova 安装
Nova节点的安装是在Keystone节点成功安装的基础上进行的。Nova节点的安装可以以YUM的方式进行,直接执行命令:
yum install -y openstack-nova-api openstack-nova-conductor openstack-nova-console openstack-nova-novncproxy openstack-nova-scheduler
即可完成Nova的安装。更多关于云计算服务 Openstack 系列的学习文章,请参阅:企业云计算平台 Openstack ,本系列持续更新中。
Nova 配置
Nova 数据库配置
在Nova节点安装完成后,我们接下来要做的就是配置Nova节点的数据库。打开Nova的配置文件/etc/nova/nova.conf,找到database模块,在该模块下添加如下内容:
connection=mysql+pymysql://nova:nova@192.168.136.101/nova
配置完成后如下所示:然后,找到api_database模块,在该模块下添加如下内容:
connection=mysql+pymysql://nova_api:nova_api@192.168.136.101/nova_api
配置完成后如下所示:这样,我们的Nova数据库配置就完成了。
Nova数据库初始化
在完成Nova的数据库配置后,我们接下来就需要进行Nova的数据库同步。执行命令:
su -s /bin/sh -c "nova-manage api_db sync" nova
su -s /bin/sh -c "nova-manage db sync" nova
即可实现nova和nova_api两个数据库的同步,这两条命令执行情况如下所示:注意,在上述命令执行时,可能会出现warning信息,只要是不Error信息,我们不用理会,如果不放心,还可以在命令执行结束后,执行echo $?查看命令执行的结果。
接下来,我们就来验证一下Nova的数据库初始化结果。执行命令:
mysql -h 192.168.136.101 -unova -pnova -e "use nova;show tables;"
mysql -h 192.168.136.101 -unova_api -pnova_api -e "use nova_api;show tables;"
即可查看数据库内是否有初始化后的表,这两条命令执行情况如下所示:从以上可以看出,我们的nova和nova_api数据库已经有相关内容,这说明我们的数据库初始化成功!
Nova Keystone配置
在上文中,我们介绍了openstack中Nova节点的安装与数据库的初始化操作。今天,我们就来介绍一下Nova的其他配置。
我们打开Nova的配置文件/etc/nova/nova.conf,在该文件中的default模块,加入如下内容:
[DEFAULT]
auth_strategy=keystone
上述内容表示Nova使用keystone进行认证,完成后的配置文件如下所示:之后,我们再keystone_authtoken模块下,添加如下内容:
[keystone_authtoken]
auth_uri=http://192.168.136.101:5000
auth_url=http://192.168.136.101:35357
memcached_servers=192.168.136.101:11211
auth_type=password
project_domain_name=default
user_domain_name=default
project_name=service
username=nova
password=nova
上述内容是keystone认证的相关配置,包括IP地址、认证类型、域名称、项目名称、用户名以及密码,完成后的配置文件如下所示:
Nova Rabbitmq 配置
之后,由于nova服务之间使用消息队列进行沟通,所以我们需要设置Rabbitmq。打开Nova的配置文件/etc/nova/nova.conf
,在DEFAULT模块下添加如下配置:
rpc_backend=rabbit
如下所示:之后,找到
[oslo_messaging_rabbit]
模块,在该模块下添加如下配置:
rabbit_host=192.168.136.101
rabbit_port=5672
rabbit_userid=openstack
rabbit_password=openstack
上述配置内容,分别指定了rabbitmq的IP地址、端口号、用户名和密码。
完成后的配置文件如下所示:这样,我们的Nova的rabbitmq设置就完成了。更多关于云计算服务 Openstack 系列的学习文章,请参阅:企业云计算平台 Openstack ,本系列持续更新中。
Nova自身配置
最后,我们还要设置一下Nova的一些自身功能。我们搜索Nova的以下参数,并将其修改为如下配置:
enabled_apis=osapi_compute,metadata
use_neutron=true
firewall_driver=nova.virt.firewall.NoopFirewallDriver
vncserver_listen=192.168.136.101
vncserver_proxyclient_address=192.168.136.101
api_servers=http://192.168.136.101:9292
lock_path=/var/lib/nova/tmp
上述配置内容,分别表示设置元数据启用的API,设置Neutron的网络服务支持,关闭防火墙,设置VNC代理,配置Glance镜像服务API,以及配置锁路径等等。
完成后的配置文件如下所示:这样,Nova自身的配置就完成了。
Nova配置概览
最后,我们执行命令:
grep "^[a-Z]" /etc/nova/nova.conf
可以查看当前Nova的配置文件中所有生效的命令,该命令执行结果如下所示:
Nova 服务启动
在上文中,我们完成了Nova整体的配置文件,接下来,我们就可以启动Nova服务了,Nova服务的启动,需要执行以下命令:
systemctl start openstack-nova-api
systemctl start openstack-nova-consoleauth
systemctl start openstack-nova-scheduler
systemctl start openstack-nova-conductor
systemctl start openstack-nova-novncproxy
这些命令,分别表示启动Nova各项服务的启动。
Nova服务创建
在Nova服务启动后,我们还要在Keystone上注册Nova服务。首先,执行命令:
source admin-openstack.sh
给我们接下来的操作赋予openstacl的token权限,之后,我们执行命令:
openstack service create --name nova --description "openstack nova" compute
来创建Nova的Service服务,该命令执行结果如下所示:之后,我们需要创建Nova Compute服务的API端点,我们需要创建public、internal和admin的三种端点,分别执行命令:
openstack endpoint create --region RegionOne compute public http://192.168.136.101:8774/v2.1/%\(tenant_id\)s
openstack endpoint create --region RegionOne compute internal http://192.168.136.101:8774/v2.1/%\(tenant_id\)s
openstack endpoint create --region RegionOne compute admin http://192.168.136.101:8774/v2.1/%\(tenant_id\)s
这些命令执行结果分别如下所示:最后,我们执行命令:
openstack host list
来检查控制节点的配置情况,结果如下所示:从上图可以看出,我们的Nova服务注册成功!
以上就是我们关于 Nova 服务的原理与安装、配置的介绍。
参考文章:https://blog.csdn.net/weixin_40228200/
article/details/125126937 https://blog.csdn.net
/weixin_40228200/article/details/125126716
读者专属技术群
构建高质量的技术交流社群,欢迎从事后端开发、运维技术进群(备注岗位,已在技术交流群的请勿重复添加)。主要以技术交流、内推、行业探讨为主,请文明发言。广告人士勿入,切勿轻信私聊,防止被骗。
扫码加我好友,拉你进群
推荐阅读 点击标题可跳转
PS:因为公众号平台更改了推送规则,如果不想错过内容,记得读完点一下“在看”,加个“星标”,这样每次新文章推送才会第一时间出现在你的订阅列表里。点“在看”支持我们吧!
更多推荐
所有评论(0)