Nova组件介绍

  • 架构介绍
    下图是nova组件的架构图


    nova架构图

nova-api
nova-api负责接收和响应终端用户有关虚拟机和云硬盘的请求,提供了对外的api。它是整个nova的入口。
nova-compute
nova-compute是主要的执行守护进程,基于虚拟化技术hyperivisor实现创建和终止虚拟机。nova-compute整合了计算资源CPU、存储、网络三类资源部署管理虚拟机,实现计算能力的交付。主要包括如下内容:运行虚拟机、终止虚拟机、重启虚拟机、挂载虚拟机、挂载云硬盘、卸载云硬盘、控制台输出
nova-volume
nova-volume主要负责虚拟机磁盘的创建、挂载和卸载
nova-network
nova-network主要实现网络资源池的管理,包括IP池、网桥接口、VLAN、防火墙管理
nova-schedule
nova-schedule主要职责是调度虚拟机在哪个物理宿主机上面部署,接受消息队列指令并执行任务
Queue
Queue也就是消息队列,它就是网络上的一个hub,nova各个组件之间的通信基本上都是通过它进行的,当前的Queue是RabbitMQ实现的,它和database一起为各个守护进程传递消息

  • Filter and Weights
  1. 常见过滤器和权重项
    上面提到的nova-schedule主要负责虚拟机的调度,也就是它需要根据某种原则来在对应的主机上面创建虚拟机,而这种依据首先就包括我们要提到的过滤器(Filter),下面介绍一些常见的过滤器
    RetryFilter
    跳过已经尝试过的节点,通常将它当做第一个过滤器
    AvailabilityZoneFilter
    通过可用的区域来过滤主机
    RamFilter
    只返回有足够可使用RAM的主机,为了提高系统的资源使用率,OpenStack 在计算节点可用内存时允许 overcommit,也就是可以超过实际内存大小。 超过的程度是通过 nova.conf 中 ram_allocation_ratio 这个参数来控制的,默认值为 1.5
    DiskFilter
    基于磁盘使用率的主机过滤,Disk 同样允许 overcommit,通过 nova.conf 中 disk_allocation_ratio 控制,默认值为 1
    CoreFilter
    基于主机CPU内核数进行过滤,vCPU 同样允许 overcommit,通过 nova.conf 中 cpu_allocation_ratio 控制,默认值为 16
    ComputeFilter
    保证只有 nova-compute 服务正常工作的计算节点才能够被 nova-scheduler调度,所以这个filter是必选的
    ComputeCapabilitiesFilter
    根据主机的特性来筛选,如果没有设置 Metadata,ComputeCapabilitiesFilter 不会起作用,所有节点都会通过筛选
    ImagePropertiesFilter
    根据镜像的特性来筛选,当然如果没有设置 Image 的Metadata,ImagePropertiesFilter 不会起作用,所有节点都会通过筛选
    AggregateInstanceExtraSpecsFilter
    返回能够建立某一种类型虚拟机的主机集合
    经过上面的filter过滤,nova-scheduler会选择出能够创建虚拟机的主机集合。如果有多个计算节点被选中,最终会选择哪一台来创建呢?
    这时会有Weight的过程,也就是给选中的计算节点打分,算出每一台的权重值。nova-schedule默认是空闲内存越多,权重越大,新的虚拟机就会被部署到当前空下内存最多的计算节点上
    下图比较简明的说明了上面filter和weight的过程

    Filter and Weight

  2. 指定主机创建虚拟机
    下面示例利用AggregateInstanceExtraSpecsFilter的filter实现在指定计算节点上面创建虚拟机,具体步骤如下所示

# 初始化admin环境
# source admin-openrc.sh
# 创建主机集合
# nova aggregate-create agg-nova
# 加入主机到主机组
# nova aggregate-add-host agg-nova compute-node-02
# 给主机定义某些原数据
# nova aggregate-set-metadata agg-nova ssd=true
# 和主机类型flavor绑定,m1.nano为主机flavor名称
nova flavor-key m1.nano set ssd=true
# 在控制节点修改调度Filter配置
# cp  /etc/nova/nova.conf   /etc/nova/nova.conf_bak
# vim /etc/nova/nova.conf
scheduler_default_filters=AggregateInstanceExtraSpecsFilter,AvailabilityZoneFilter,RamFilter,ComputeFilter
#重启nova服务
# systemctl restart openstack-nova-api.service openstack-nova-scheduler.service openstack-nova-conductor.service
# 查看服务是否正常
systemctl status openstack-nova-api.service openstack-nova-scheduler.service openstack-nova-conductor.service
# 初始化demo租户环境
# source demo-openrc.sh
# 创建主机
# nova boot --flavor m1.nano --image cirros-0.3.4-x86_64 vm-test-01
  • 虚拟机迁移
    OpenStack支持两种类型的虚拟机迁移
  1. 冷迁移
    也叫做静态迁移,迁移过程中虚拟机必须关闭,用户也不能访问虚拟机
  2. 热迁移
    也叫做动态迁移,迁移过程中虚拟机仍旧工作,用户也可以继续使用虚拟机
  3. 支持热迁移的配置升级
    kilo版本的OpenStack在进行热迁移需要进行升级,具体步骤如下所示
# 在所有结算节点更新组件
# yum install libvirt qemu-* -y
# 修改libvirtd配置文件
vim /etc/sysconfig/libvirtd
LIBVIRTD_ARGS="--listen"

vim /etc/libvirt/libvirtd.conf
listen_tls=0
listen_tcp=1
auth_tcp="none"
# 重启主机
reboot

你可能感兴趣的:(Nova组件介绍)