详解:OpenStack nova

OpenStack–Nova架构介绍

Nova,首次出现在openstack的“Austin”版本中,提供大规模、可扩展、按需自助服务的计算资源,支持裸机、虚拟机和容器,依赖keystone的认证服务,neutron的网络服务,glance的镜像服务。
nova架构图如下:
在这里插入图片描述
nova-api:接收rest消息,包括HTTP请求,服务间通信
nova-scheule:选择合适的主机
nova-conductor:数据库操作和复杂流程控制
nova-compute:虚拟机生命周期管理和资源管理,负责处理虚机和hypervisor间的通信
db:sql数据库存储nova相关的业务数据

nova运行架构:
在这里插入图片描述
nova服务各组件可分布式部署,且可通过virtDriver对接不同的虚拟化平台。

nova资源池管理架构:
在这里插入图片描述
描述nova资源池可分为region(物理区域),availability zone(可用区),host aggregate(主机组)三大部分,且Region > Availability Zone > Host Aggregate。
以阿里云为例,华东-杭州节点有11个可用区,每个可用区的物理主机可按照规格、用途不同划分不同主机组。

Nova组件详解

Nova-API

Nova API提供的功能:
1)对外提供REST接口,接收和处理请求。
2)对传入的参数进行合法性校验和约束限制。
3)对请求的资源进行配额的校验和预留。
4)资源的创建,更新,删除查询等。
5)虚拟机生命周期管理的入口。
在这里插入图片描述WSGI: Web Server Gateway Interface

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

Nova-Scheduler功能:
1)筛选和确定将虚拟机实例分配到哪一台物理机。
2)分配过程主要分两步,过滤和权重;通过过滤器选择满足条件的计算节点,通过权重选择最优的节点。

在这里插入图片描述Nova-scheduler:确定将虚拟机分配到哪一台物理机,分配过程主要分为两步,过滤和权
重;用户创建虚拟机时会提出资源需求,例如CPU、内存、磁盘各需要多少, OpenStack
将这些需求定义在flavor中,用户只需要指定flavor就可以了。
调度过程分为两步:
1) 通过过滤器选择满足条件的计算节点;
2) 通过权重选择最优的节点。

Nova-Compute

Nova-Compute 框架

  1. Manager
  2. Driver

Driver对接不同的虚拟化平台
1、KVM
2、VMware
3、Xen
4、LXC
5、QEMU

在这里插入图片描述Nova-Compute功能:
1、 虚拟机各生命周期操作的真正执行者(会调用对应的hypervisor的driver)。
2、 底层对接不同虚拟化的平台(KVM/VMware/XEN/Ironic等)
3、 内置周期性任务,完成资源刷新,虚拟机状态同步等功能。
4、 资源管理模块(resource_tracker)配合插件机制,完成资源的统计。

Nova安装

OpenStack官网提供了最小化安装指导,学习者可根据官网的指导材料一步一步完成openstack系统的安装和实验。在熟悉openstack服务基础的安装、配置、操作和问题定位能力后,可深入考虑生产环境的系统部署,包括需要安装哪些核心服务,可选服务,平台安全能力建设,例如防火墙,数据加密,服务策略,也可以应用自动化工具Ansible,Chef,Puppet或者Salt去实现自动化部署和管理。

示例架构

示例架构至少需要两个节点(控制节点,计算节点)完成openstack基础系统的搭建,实现虚机的发布和管理。块存储和对象存储是可选配置,可根据实际情况部署。
注意:示例架构是最小化配置的安装指导,设计的目的是用于Openstack项目的学习,并非用于企业生产环境。更多的系统架构指导,请参考官网的架构指导文档,https://docs.openstack.org/arch-design/
在这里插入图片描述控制节点:该节点运行了认证服务,镜像服务,管理部分计算服务,管理部分网络服务和各种网络代理,运行Web界面服务。同时也运行了SQL数据库,消息队列,NTP时间同步服务。控制节点至少需要两块物理网卡。
计算节点:计算节点运行计算服务的Hypervisor层,实现虚机的管理。默认使用KVM,计算节点同步运行网络服务代理通过提供虚拟网络实现虚机连接、通过安全组功能实现虚机的防火墙功能。

计算服务概览

Openstack Compute服务是IaaS基础架构最重要的部分,主要模块是用python实现的。OpenStack Compute通过和OpenStack Identity交互实现身份认证,通过和OpenStack Placement交互实现资源信息同步和选择,通过和OpenStack Image服务交互提供磁盘和虚机镜像,OpenStack Dashboard服务提供用户和管理员的管理界面。同时镜像可以授权给项目、用户使用,每个项目都可以做配额管理,支持动态调整规格和下载镜像去发布新主机。

OpenStack Compute主要包含了以下几个服务模块:
1、nova-api service 接受并响应最终用户的计算API调用。该服务支持OpenStack compute API。它执行一些策略并启动大多数编排活动,例如运行实例。
2、nova-api-metadata service 接受来自实例的元数据请求。
3、nova-compute service 通过调用虚拟机hypervisor API创建和终止虚拟机实例,例如:
•用于KVM或QEMU的libvirt
•适用于VMware的VMwareAPI
处理过程相当复杂,守护程序接受消息队列中的操作请求并执行一系列系统命令,例如启动KVM实例并更新其状态,并更新状态到数据库。
4、nova-scheduler service 从队列中获取虚拟机实例请求并确定它在哪台计算服务器主机上运行。
5、nova-conduntor module 实现nova-compute和数据库中间调用,早期nova-compute服务是直接调用数据库,由于nova-compute服务对接底层计算节点,当计算节点被攻击的时候容易造成数据库攻击。
6、nova-novncproxy daemon 提供代理以通过VNC连接访问正在运行的实例。支持基于浏览器的novnc客户端。
7、nova-spicehtml5proxy daemon 提供代理用于通过SPICE连接方式访问正在运行的实例,支持基于浏览器的HTML5客户端。
8、The queue 消息队列负责在各个服务的守护程序之间传递消息。通常用RabbitMQ实现,但也可选择其他消息队列产品。
9、SQL database 存储云基础服务大部分的构建时和运行时状态,包括:
•可用实例类型
•使用中的实例
•可用网络
•项目
从理论上讲,OpenStack Compute可以支持SQLAlchemy支持的任何数据库。常见的数据库是用于测试和开发工作的SQLite3,MySQL,MariaDB和PostgreSQL。

安装和配置控制节点

1、创建数据库,登陆MySQL数据库并创建nova_api,nova,nova-cell0三个数据库,并赋予数据库权限。

在这里插入图片描述

2、创建nova用户、nova服务端点

///加载环境变量
$ . admin-openrc
///创建nova用户
$	openstack user create --domain default --password-prompt nova
/// nova用户赋予admin角色
$	openstack role add --project service --user nova admin
///创建nova服务实体
$ 	openstack service create --name nova --description "OpenStack Compute" compute
///创建api服务端点
$ 	openstack endpoint create --region RegionOne compute public http://controller:8774/v2.1
$ 	openstack endpoint create --region RegionOne compute internal http://controller:8774/v2.1
$ 	openstack endpoint create --region RegionOne compute admin http://controller:8774/v2.1
///安装nova服务相关得包
# apt install nova-api nova-conductor nova-novncproxy nova-scheduler

3、修改nova.conf配置文件

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

4、初始化数据库

///初始化nova-api数据库
# su -s /bin/sh -c "nova-manage api_db sync" nova
///初始化cell0数据库
# su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova
///初始化cell1数据库
su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova
///初始化nova数据库
su -s /bin/sh -c "nova-manage db sync" nova
///校验cell0、cell1数据库得正确性
su -s /bin/sh -c "nova-manage cell_v2 list_cells" nova

5、启动计算服务

# service nova-api restart
# service nova-scheduler restart
# service nova-conductor restart
# service nova-novncproxy restart

安装和配置计算节点

1、创建nova-compute服务

# apt install nova-compute

2、配置nova.conf文件

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

3、服务启动

在这里插入图片描述

4、将计算节点添加到cell数据库

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值