标签:agg viso heat 支持 增加 hat rpc 调用 绿色
Nova是Openstack最核心的服务模块,负责管理和维护云计算环境的计算资源,负责整个云环境虚拟机生命周期的管理。
组件 | 功能 | 一般部署位置 |
---|---|---|
nova-api | 接受rest消息 | 控制节点 |
nova-scheduler | 选择合适的主机 | 控制节点 |
nova-conductor | 数据库操作、复杂流程控制 | 控制节点 |
nova-compute | 虚拟机生命周期管理和资源管理 | 计算节点 |
nova-novncproxy | novnc访问虚拟机代理 | 控制节点 |
nova-consoleauth | novnc访问虚拟机鉴权 | 控制节点 |
Region(地区):指不同的地理区域(如公有云的广州、上海等)
AZ(Availability Zone 可用分区):指使用同一个供电或者制冷系统的主机集合,实际表示机房
主机聚合(Host Aggregate 主机组):使用相同配置的主机的集合,比如相同的CPU 型号、相同的硬盘灯
分组 | 说明 |
---|---|
虚拟机生命周期管理 | 虚拟机创建、删除、启动、关机、重启、重建、规格更改、暂停、解除暂停、挂起、继续、迁移、在线迁移、锁定、解锁、疏散,拯救,解拯救,搁置,删除搁置, 恢复搁置,备份,虚拟机导出镜像、列表、详细信息、信息查询更改,密码修改。 |
卷和快照管理操作 | 本质上是对Cinder API的封装。卷创建、删除、列表、详细信息查询。快照创建、删除、列表、详细信息查询。 |
虚拟机卷操作 | 虚拟机挂卷、虚拟机卸卷、虚拟机挂卷列表、虚拟机挂卷详细信息查询。 |
虚拟网络操作 | 本质上是对Neutron API的封装。虚拟网络创建、删除、列表、详细信息查询。 |
虚拟机虚拟网卡操作 | 虚拟机挂载网卡、虚拟机卸载网卡、虚拟机网卡列表。 |
虚拟机镜像的操作 | 本质上是对Glance API的封装,支持镜像的创建、删除、列表、详细信息查询。 |
虚拟机HA | 自研虚拟机的可靠性操作。可手动触发(FS5.1)。 |
其他资源其他操作 | Flavor,主机组,keypairs,quota等。 |
… | ... |
名称 | 简介 | 说明 |
---|---|---|
Server/instance | 虚拟机 | Nova管理提供的云服务资源。Nova中最重要的数据对象。 |
Server metadata | 虚拟机元数据 | 通常用于为虚拟机附加必要描述信息:key/value。 |
Flavor | 虚拟机规格模板 | 用于定义一种虚拟机类型,如一种具有2个VCPU、4GB内存、40GB本地存储空间的虚拟机。Flavor由系统管理员创建,供普通用户在创建虚拟机时使用。 |
Quota | 资源配额 | 用于指定租户最多能够使用的逻辑资源上限。 |
Hypervisor / node | 节点 | 对于KVM、Xen等虚拟化技术,一个node即对应于一个物理主机。对于vCenter,一个node对应于一个cluster。 |
Host | 主机 | 对于KVM、Xen等虚拟化技术,一个host即对应于一个物理主机,同时对应于一个node。对于vCenter,一个host对应于一套vCenter部署。 |
属性 Property |
描述 Description |
示例 Value for example |
---|---|---|
name | 描述性名称 | m1.small |
ram | 虚拟机内存大小(MB) | 2048 |
disk | 虚拟根磁盘大小(GB) | 50 |
ephemeral | 次要数据盘大小(GB) | 100 |
swap | 实例交换空间大小 | 1 |
vcpu | vCPU个数 | 8 |
is_public | 实例类型私有还是公共 | True |
extra_specs | 键值对(额外规格) | {"hw:mem_page_size":"2048“,"aggregate_instance_extra_specs:aggregate01": "true“, "quota:cpu_period": "1000000", "quota:cpu_shares": "1024", "quota:cpu_quota": "10000"} |
extra_specs键值解释
“quota:cpu_period”: “1000000”:Specifies the enforcement interval (unit:microseconds) for QEMU and LXC hypervisors
“quota:cpu_shares”: “1024”:Specifies the proportional weighted share for the domain,For example, a VM configured with value 2048 gets twice as much CPU time as a VM configured with value 1024
“quota:cpu_quota”: “10000“:Specifies the maximum allowed bandwidth (unit: microseconds); You can use this feature to ensure that all vCPUs run at the same speed.
属性 Property |
描述 Description |
示例 Value for example |
---|---|---|
name | 镜像名 | cirros-0.3.2-x86_64 |
disk_format | 磁盘格式,可用格式:ami, ari, aki, vhd, vmdk, raw, qcow2, vdi, and iso. | qcow2 |
container_format | 镜像容器(理解为打包格式),可用格式: ami,ari, aki, bare, and ovf. | bare |
is_public | 镜像是否可公共使用 | True |
min_disk | 启动镜像所需的最小磁盘大小(GB) | 20 |
min_ram | 启动镜像所需的最小内存大小(MB) | 2048 |
status | 镜像大小(Bytes) | queued/active |
Property‘hw_disk_bus’ | 与镜像关联的任意属性(键值对) | scsi |
- Property属性,一方面可以用于scheduler中的调度,选择合适的主机,另一方面对底层hypervisor的一些配置。可选的如下:
- Property ‘hw_scsi_model
- Property ‘hw_watchdog_action’(优先级高于在flavor的extra_spec中的设置)
- Property ‘architecture’
- Property ‘hw_video_ram’
- Property ‘hw_vif_model’
- Property ‘hw_qemu_guest_agent’
- Property ‘hw_rng_model’
- disk_format:虚拟机的磁盘格式指的是底层的磁盘镜像格式,虚拟设备厂商有不同的格式来放置虚拟机磁盘镜像包含的信息。
- container_format:镜像容器格式表示包含虚拟机镜像的文件是否也包含虚拟机的metadata数据。
- Qcow2(QEMU 写时复制版本2),格式通常是KVM使用,相比裸格式,它有额外的特性,例如:
- 使用稀疏文件呈现方式,因此镜像尺寸更小。支持快照。
- AMI/AKI/ARI 格式是亚马逊 EC2 云最初支持的格式。
属性 Property |
描述 Description |
示例 Value for example |
---|---|---|
id(uuid) | 镜像id,快照id,卷id | 5e7ceccc-189f-492f-8a95-9064e8f5eeec |
source(source_type) | 块的源类型 | image, snapshot, volume or blank |
dest(destination_type) | 块的目的类型 | volume or local |
bus | 设备总线(仅限libvirt) | ide/usb/virtio/scsi |
type | 设备类型(仅限libvirt) | disk/cdrom |
device(device_name) | 设备名称 | vda |
size | 块设备的大小(GB)[可选] | 10 |
format(guest_format) | 设备将被格式化为(文件系统) | ntfs |
Bootindex(boot_index) | 磁盘引导顺序(整数) | 0 |
shutdown(delete_on_termination) | 关机行为 | preserve/remove |
nova-api作用:
nova-api处理流程:
nova-api层提供了三个服务:
架构均使用Python的第三方库来实现
nova-conductor作用:
nova-conductor的好处:
nova-conductor代码结构
nova-scheduler功能:
版本中用的Filter列表(部分华为自研)
调度器 | 功能 | 备注 |
---|---|---|
RetryFilter | 过滤掉之前已经尝试过失败的主机 | 原生 |
HuaweiAvailabilityZoneFilter | 过滤指定AZ的主机 | 自研 |
RamFilter | 过滤出内存资源充足的主机 | 原生 |
HuaweiDiskFilter | 过滤出本地磁盘资源充足的主机 | 自研 |
ComputeFilter | 过滤出状态为up的计算主机 | 原生 |
ImagePropertiesFilter | 通过镜像的属性过滤主机 | 原生 |
SameHostFilter | 过滤出指定虚拟机集合所在的主机 | 原生 |
DifferentHostFilter | 过滤掉指定虚拟机集合所在的主机 | 原生 |
CoreFilter | 过滤出vcpu资源充足的主机 | 原生 |
AggregateInstanceExtraSpecsFilter | 过滤出指定主机组的主机 | 原生 |
PhysicalNetworkFilter | 过滤出拥有指定物理网络的主机 | 自研 |
CpuBindFilter | Numa/evs/IO muma亲和性过滤主机 | 自研 |
ServerGroupAntiAffinityFilter | 过滤掉指定虚拟机集合所在的主机 | 原生 |
ServerGroupAffinityFilter | 过滤出指定虚拟机集合所在的主机 | 原生 |
PciPassthroughFilter | 过滤出拥有网络PCI设备的主机 | 原生 |
BandwidthFilter | PCI设备网卡带宽过滤 | 自研 |
HypervisorInstanceExtraSpecsFilter | 级联使用 | 自研 |
nova-compute框架一栏(如上图)
nova-compute功能:
nova-compute代码结构
nova-compute周期性任务
nova-compute周期性任务
周期性函数 | 功能 | 周期 | 备注 |
---|---|---|---|
_check_instance_build_time | 检查虚拟机是否卡在building状态,目前不生效。 | 60S | 原生 |
_heal_instance_info_cache | 从neutorn同步port的状态到nova数据库中。 | 60S | 原生 |
_poll_rebooting_instances | 检测虚拟机是否卡在rebooting状态,目前不生效。 | 60S | 原生 |
_poll_rescued_instances | 检测虚拟机是否卡在rescued状态,目前不生效。 | 60S | 原生 |
_poll_unconfirmed_resizes | 虚拟机修改规格后,在一定时间内自动确认,目前不生效。 | 60S | 原生 |
_poll_shelved_instances | 将shelved的虚拟机的资源删除,目前不生效。 | 3600S | 原生 |
_instance_usage_audit | 定期通知虚拟机的存在,目前不生效。 | 60S | 原生 |
_poll_bandwidth_usage | 更新虚拟机网卡带宽的使用,目前不生效。 | 600S | 原生 |
_poll_volume_usage | 更新卷的使用。目前不生效。 | 原生 | |
_sync_power_states | 周期性虚拟机状态的同步 | 60S | 原生重写 |
_reclaim_queued_deletes | 软删除虚拟机后删除虚拟机 | 60S | 原生 |
update_available_resource | 周期性资源同步任务 | 60S | 原生 |
_cleanup_running_deleted_instances | 关闭(或删除)上层已经删除,但是底层残留的虚拟机 | 600S | 原生 |
_run_image_cache_manager_pass | 目前不生效 | 原生 | |
_run_pending_deletes | 删除残留虚拟机的文件 | 300S | 原生 |
pull_instances_with_exceptional_state | 解决由于存储准备慢导致的虚拟机拉起失败 | 60S | 自研 |
_cycle_change_vnc_passwd | 定时修改虚拟机的vnc密码 | 60S | 自研 |
_auto_update_vm_tools_of_instances | 自动更新VMTools | 60S | 自研 |
_run_emulatorpin_update | 更新虚拟机的emulator的cpu | 60S | 自研 |
noVNC
进行ProtocolVersion握手,根据server返回的版本来确定client的版本。
进行Security握手,由server和client决定使用的Security的类型,该类型决定了后一步Authentication的方法。目前支持的Security类型有(1,2,16,22)。
根据Security类型,决定Authentication的方法
1:不需要鉴权
2:vnc鉴权
16:TightVNC鉴权
22:XVP鉴权
对于novnc用的是类型2的鉴权,默认通过DES进行加密,具体方法是用server端返回的值+密码,然后用DES加密发送到server端进行鉴权
进行SecurityResult验证,如果server端返回0标识鉴权通过,否则失败。
进行ClientInitialisation,客户端初始化。
进行ServerInitialisation,server端初始化,包括窗口大小,像素格式和显示的标题等。
完成以上后,client和server真正建立了连接
nova-consoleauth说明
资源发现
资源上报与刷新
资源记录
资源申请
资源调度
资源占用
资源释放
名称 | 映射到虚拟机 | 备注 |
---|---|---|
root ephemeral volume | disk | 一般用于系统盘 |
additional ephemeral volume | disk.local | 一般是数据盘 |
Swap盘 | disk.swap | swap盘 |
Config driver | disk.config | 配置盘 |
网络类型 | PORT类型 | 对应虚拟机类型 | 描述 | 是否自研 | 是否交付 |
---|---|---|---|---|---|
OVS | normal | 普通软交换虚拟机 | 网卡设备为ovs网桥上创建的port | 原生 | 交付 |
EVS | vhostuser | 用户态EVS虚拟机 | 网卡设备为evs网桥上创建的port | 自研 | 交付 |
SRIOV | direct | 硬直通虚拟机 | 使用特殊网卡设备创建的VF设备 | 原生 | 交付 |
Netmap | softdirect | 软直通虚拟机 | 使用Netmap虚拟网口 | 自研 | 非商业交付 |
注意:
虚拟机状态类型
状态之间的关系
举例
参数 | 可选值 | 含义 |
---|---|---|
vcpuAffinity | 0 | 绑定物理线程。 |
1 | 不绑定物理线程 | |
hyperThreadAffinity | any | vCPU 可与该虚拟机或任何其他虚拟机的vCPU随时共享线程。 |
internal | 虚拟机的vCPU不能与其他虚拟机的vCPU共享线程,但是可以与同一虚拟机的其他vCPU 共享线程。此时“vcpuAffinity”的值只能全为0。 | |
none | 虚拟机的vCPU彼此不共享线程。此时“vcpuAffinity”的值只能全为1。 | |
sync | 功能类似"none",同时还实现了虚拟机vCPU与物理CPU超线程一一映射,即虚拟机vCPU与物理CPU具有相同的拓扑结构。此时"vcpuAffinity"的值只能全为1。 | |
Lock | 在"sync"的基础上增加MCCP对实时虚拟机的要求,即隔离虚拟机中断到其他CPU上。此时"vcpuAffinity"的值只能全为1。 | |
numaOpts | 0 | 未开启numa亲和性,虚拟机内存,vcpu分配可能跨numa节点。 |
1 | 开启numa亲和性,虚拟机内存,vcpu只能分配一个numa节点。 | |
2 | 开启IO numa亲和性,虚拟机跟pci在同一个numa节点。 |
hirmid –v | python –m json.tool
"vm_list": {
"instance-00000011": {
"current node": "0-1",
"io thread pin list": "0-15",
"master node": "0-1",
"use cpus list": "0-15",
"use node memory": {
"node 0": 17,
"node 1": 525
}
},
"instance-00000026": {
"current node": "1",
"io thread pin list": "0-2",
"master node": "1",
"use cpus list": "0-2",
"use node memory": {
"node 0": 0,
"node 1": 517
}
}
}
创建flavor
Nova flavor-create testflavor 123 1024 5 2 --ephemeral 5
注册镜像
glance image-create --disk-format qcow2 --container-format bare --file cirros --name testimage
创建网络或者port
neutron net-create evs_net002 --provider:network_type vlan --provider:physical_network evs_net --provider:segmentation_id 102
neutron subnet-create 768e4013-a682-4989-93e3-cf7b5eb6f8b8 10.10.20.0/24
neutron port-create 768e4013-a682-4989-93e3-cf7b5eb6f8b8 -- binding:vnic_type=vhostuser --name litao04
指定网络创建虚拟机
nova boot --flavor 123 --image testimage --nic net-id=671686c2-177f-4d62-9870-fd0d0368dde9 test_vm01
指定port创建虚拟机
nova boot --flavor 123 --image testimage --nic port-id=671686c2-177f-4d62-9870-fd0d0368dde9 test_vm02
EVS虚拟机
nova boot --flavor 20 --image 77157434-18ec-47fd-b317-5301a537dbd5 --hint numaOpts=1 --nic port-id=471b71d9-4079-46cf-89c9-74d74418e3d0 --nic port-id=78eca429-5620-4f58-ba5b-a6b7c02f8f32 test_vm03
EVS亲和性虚拟机
nova boot --flavor 20 --image 77157434-18ec-47fd-b317-5301a537dbd5 --hint numaOpts=1 --hint evsOpts=1 --nic port-id=471b71d9-4079-46cf-89c9-74d74418e3d0 --nic port-id=78eca429-5620-4f58-ba5b-a6b7c02f8f32 test_vm04
硬直通虚拟机
nova boot --flavor 20 --image 77157434-18ec-47fd-b317-5301a537dbd5 --nic port-id=471b71d9-4079-46cf-89c9-74d74418e3d0 --nic port-id=78eca429-5620-4f58-ba5b-a6b7c02f8f32 test_vm06
IO Numa亲和性硬直通虚拟机
nova boot --flavor 20 --image 77157434-18ec-47fd-b317-5301a537dbd5 --hint numaOpts=2 --nic port-id=471b71d9-4079-46cf-89c9-74d74418e3d0 --nic port-id=78eca429-5620-4f58-ba5b-a6b7c02f8f32 test_vm07
Numa亲和性虚拟机
nova boot --flavor 30 --image cirros --nic net-id=eafa4561-49f7-4cd9-9855-39b4c5844dfe --hint numaOpts=1 --hint vcpuAffinity=["1"] --hint hyperThreadAffinity=any numa_vm1
nova boot --flavor 30 --image cirros --nic net-id=eafa4561-49f7-4cd9-9855-39b4c5844dfe --hint numaOpts=1 --hint vcpuAffinity=["0"] --hint hyperThreadAffinity=any numa_vm2
nova boot --flavor 30 --image cirros --nic net-id=eafa4561-49f7-4cd9-9855-39b4c5844dfe --hint numaOpts=1 --hint vcpuAffinity=["1"] --hint hyperThreadAffinity=sync numa_vm3
nova boot --flavor 30 --image cirros --nic net-id=eafa4561-49f7-4cd9-9855-39b4c5844dfe --hint numaOpts=1 --hint vcpuAffinity=["1"] --hint hyperThreadAffinity=none numa_vm4
nova boot --flavor 31 --image cirros --nic net-id=eafa4561-49f7-4cd9-9855-39b4c5844dfe --hint numaOpts=1 --hint vcpuAffinity=["0"] --hint hyperThreadAffinity=internal numa_vm5
从卷启动虚拟机
nova boot --flavor 100 --nic net-id=654859f8-2540-4562-8884-26463f016005 --block-device source=volume,dest=volume,id=433cd085-5be6-4336-9163-b4a1094691aa,bus=ide,bootindex=0 yy_1
nova boot --boot-volume 433cd085-5be6-4336-9163-b4a1094691aa --flavor 100 --nic net-id=654859f8-2540-4562-8884-26463f016005 --block-device source=image,dest=volume,id=433cd085-5be6-4336-9163-b4a1094691aa,bus=ide,bootindex=-1 yy_2
指定镜像启动携带数据卷
nova boot --image windows.iso --flavor 100 --nic net-id=654859f8-2540-4562-8884-26463f016005 --block-device source=volume,dest=volume,id=433cd085-5be6-4336-9163-b4a1094691aa,bus=ide,bootindex=-1 yy_1
创建过程中
创建完成
标签:agg viso heat 支持 增加 hat rpc 调用 绿色
原文地址:https://www.cnblogs.com/Skybiubiu/p/14595378.html