前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >玩转企业云计算平台系列(五):Openstack 计算服务 Nova

玩转企业云计算平台系列(五):Openstack 计算服务 Nova

作者头像
民工哥
发布2023-12-29 18:47:13
2740
发布2023-12-29 18:47:13
举报

前面介绍了 Openstack 入门基础环境部署KeystoneGlance等相关的知识点,今天我将详细的为大家介绍 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的方式进行,直接执行命令:

代码语言:javascript
复制
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模块,在该模块下添加如下内容:

代码语言:javascript
复制
connection=mysql+pymysql://nova:nova@192.168.136.101/nova

配置完成后如下所示:

然后,找到api_database模块,在该模块下添加如下内容:

代码语言:javascript
复制
connection=mysql+pymysql://nova_api:nova_api@192.168.136.101/nova_api

配置完成后如下所示:

这样,我们的Nova数据库配置就完成了。

Nova数据库初始化

在完成Nova的数据库配置后,我们接下来就需要进行Nova的数据库同步。执行命令:

代码语言:javascript
复制
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的数据库初始化结果。执行命令:

代码语言:javascript
复制
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模块,加入如下内容:

代码语言:javascript
复制
[DEFAULT]
auth_strategy=keystone

上述内容表示Nova使用keystone进行认证,完成后的配置文件如下所示:

之后,我们再keystone_authtoken模块下,添加如下内容:

代码语言:javascript
复制
[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模块下添加如下配置:

代码语言:javascript
复制
rpc_backend=rabbit

如下所示:

之后,找到[oslo_messaging_rabbit]模块,在该模块下添加如下配置:

代码语言:javascript
复制
rabbit_host=192.168.136.101
rabbit_port=5672
rabbit_userid=openstack
rabbit_password=openstack

上述配置内容,分别指定了rabbitmq的IP地址、端口号、用户名和密码。 完成后的配置文件如下所示:

这样,我们的Nova的rabbitmq设置就完成了。更多关于云计算服务 Openstack 系列的学习文章,请参阅:企业云计算平台 Openstack ,本系列持续更新中。

Nova自身配置

最后,我们还要设置一下Nova的一些自身功能。我们搜索Nova的以下参数,并将其修改为如下配置:

代码语言:javascript
复制
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配置概览

最后,我们执行命令:

代码语言:javascript
复制
grep "^[a-Z]" /etc/nova/nova.conf

可以查看当前Nova的配置文件中所有生效的命令,该命令执行结果如下所示:

Nova 服务启动

在上文中,我们完成了Nova整体的配置文件,接下来,我们就可以启动Nova服务了,Nova服务的启动,需要执行以下命令:

代码语言:javascript
复制
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服务。首先,执行命令:

代码语言:javascript
复制
source admin-openstack.sh

给我们接下来的操作赋予openstacl的token权限,之后,我们执行命令:

代码语言:javascript
复制
openstack service create --name nova --description "openstack nova" compute

来创建Nova的Service服务,该命令执行结果如下所示:

之后,我们需要创建Nova Compute服务的API端点,我们需要创建public、internal和admin的三种端点,分别执行命令:

代码语言:javascript
复制
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

这些命令执行结果分别如下所示:

最后,我们执行命令:

代码语言:javascript
复制
openstack host list

来检查控制节点的配置情况,结果如下所示:

从上图可以看出,我们的Nova服务注册成功!

以上就是我们关于 Nova 服务的原理与安装、配置的介绍。

参考文章:https://blog.csdn.net/weixin_40228200/ article/details/125126937 https://blog.csdn.net /weixin_40228200/article/details/125126716

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-12-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 民工哥技术之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Nova简介
    • Nova 主要有以下服务
    • Nova 系统架构
    • Nova 组件详解
      • Nova-API
        • Nova-Conductor
          • Nova-Scheduler
            • Nova-Compute
            • Nova 安装
            • Nova 配置
              • Nova 数据库配置
                • Nova数据库初始化
                • Nova Keystone配置
                • Nova Rabbitmq 配置
                • Nova自身配置
                • Nova配置概览
                • Nova 服务启动
                • Nova服务创建
                相关产品与服务
                数据库
                云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档