虚拟资源管理
云主机管理
云主机调度策略
云主机调度策略可为云主机分配物理机资源编排策略,用于保障业务高性能和高可用。支持将云主机加入一个云主机调度组,通过为该云主机调度组绑定调度策略实现云主机调度。
功能原理
- 若绑定互斥云主机或聚集云主机策略,无需指定物理机调度组,云主机按照策略及其执行机制分配物理机。
- 若绑定云主机亲和物理机或云主机互斥物理机调度策略,需指定对应的物理机调度组,云主机按照策略及其执行机制分配物理机。
下文通过四个场景说明四类调度策略的工作原理:
- 强制机制下,云主机VM3遵循与组内其他云主机强制互斥原则:
- 若物理机Host3资源充足,可正常在Host3上启动并运行。
- 若物理机Host3资源不足,无法在Host3上启动。
- 优先机制下,云主机VM3遵循与组内其他云主机尽量互斥原则,优先在Host3上启动:
- 若物理机Host3资源充足,可正常在Host3上启动并运行。
- 若物理机Host3资源不足,VM3可尝试在其他资源充足的物理机上启动。在该场景下,VM3在Host2上启动并运行。

- 强制机制下,云主机VM3遵循与组内其他云主机强制聚集原则:
- 若物理机Host1资源充足,可正常在Host1上启动并运行。
- 若物理机Host1资源不足,无法在Host1上启动。
- 优先机制下,云主机VM3遵循与组内其他云主机尽量聚集原则,优先在Host1上启动:
- 若物理机Host1资源充足,可正常在Host1上启动并运行。
- 若物理机Host1资源不足,VM3可尝试在其他资源充足的物理机上启动。在该场景下,VM3在Host2上启动并运行。

- 强制机制下,云主机VM3遵循与物理机调度组A内的物理机强制互斥原则:
- 若物理机Host1资源充足,可正常在Host1上启动并运行。
- 若物理机Host1资源不足,无法在Host1上启动。
- 优先机制下,云主机VM3遵循与物理机调度组A内的物理机尽量互斥原则,优先在Host1上启动:
- 若物理机Host1资源充足,可正常在Host1上启动并运行。
- 若物理机Host1资源不足,VM3可尝试在其他资源充足的物理机上启动。在该场景下,VM3在Host2上启动并运行。

- 强制机制下,云主机VM3遵循与物理机调度组A内的物理机强制聚集原则:
- 若物理机Host2或Host3资源充足,可正常在Host2或Host3上启动并运行。
- 若物理机Host2和Host3资源不足,无法在Host2或Host3上启动。
- 优先机制下,云主机VM3遵循与物理机调度组A内的物理机尽量聚集原则,优先在Host2或Host3上启动:
- 若物理机Host2或Host3资源充足,可正常在Host2或Host3上启动并运行。
- 若物理机Host2和Host3资源不足,VM6可尝试在其他资源充足的物理机上启动。在该场景下,VM3在Host1上启动并运行。

云主机克隆
云平台提供三种云主机克隆方式以满足不同业务场景需求:链接克隆、全量克隆、快速全量克隆。
链接克隆
通过链接克隆的云主机启动速度快,占用少量存储空间。但是,链接克隆的云主机共享使用源云主机的磁盘链,因为它们之间存在依赖关系。ZStack Cloud提供的链接克隆不受限于源云主机的快照链长度,且支持各种类型的主存储。
在执行链接克隆新云主机时,无需复制源云主机的所有数据,而是在源云主机快照链的基础上创建一个新的磁盘文件并做关联作为新的云主机实例,新云主机实例共享了源云主机的快照链,这部分共享的快照链是只读的,因此通过链接克隆创建的云主机过程中并没有实际的数据拷贝,从而可以做到云主机的快速启动。
基于源云主机快照链创建出的新磁盘文件具有写时重定向的特性,即刚创建时仅占用极少的存储空间,后续当云主机实例尝试修改云主机内容时,会把修改的数据写入新的磁盘文件中,这样就不会影响源快照链的数据,确保了克隆云主机与源云主机的相对独立性。
如果想要把克隆云主机与源云主机从快照链上完全独立开来,需要使用平台提供的扁平合并功能。当做批量链接克隆时,由于多个云主机实例共享相同的只读快照链,链接克隆显著减少了存储空间的需求。
云主机链接克隆技术提供了一种有效管理云主机的方式,特别是在需要创建多个相似云主机实例时,如测试集群或桌面云VDI场景。 通过共享的快照链,链接克隆节省了存储成本,并提高了云主机的创建和管理效率。

全量克隆
全量克隆是针对云主机的另一种克隆方法。与链接克隆不同,它不与源云主机共享数据,而是把源云主机做成镜像文件后来创建新的云主机实例。这个源云主机镜像是一个完整的镜像文件,包含云主机所需的所有文件和配置,并保存在镜像服务器中,随后把镜像文件推送到主存储中作为克隆云主机的镜像缓存,以此来克隆出全新的云主机。因此全量克隆的云主机不受主存储的限制,克隆的云主机可以指定与源云主机不同的主存储来启动。
全量克隆创建的云主机是完全隔离且独立的,与源云主机没有依赖关系,因此云主机性能完全不受影响,同时全量克隆通常需要更多的存储空间。但是在批量全量克隆多云主机时,ZStack Cloud做了存储优化,针对新云主机的镜像缓存只会在主存储上存储一份,避免了在主存储上消耗更多的存储资源,也提升了批量克隆时云主机的启动时间。

快速全量克隆
快速全量克隆是对链接克隆和全量克隆的一种整合。它既能像链接克隆那样快速的启动克隆出来的云主机,又能像全量克隆那样保持数据独立,不与源云主机共享快照链。
在执行快速全量克隆时,在克隆初始利用链接克隆技术创建出依赖源云主机的新云主机,以此来满足快速云主机启动,随后后台会启动出一个任务来做快照合并,最终会把克隆云主机的数据完全独立出来,不依赖于源云主机,因此通过快速全量克隆的云主机具有启动速度快,数据最终独立的特点,并且克隆完成后云主机性能不受影响。

裸金属管理
裸金属管理的网络流量模型包括管理网络、扁平网络、IPMI网络和部署网络。管理网络主要用于管理云平台相关的硬件资源。扁平网络主要用于裸金属主机的业务网络,对外提供应用服务。IPMI网络用于管理节点对裸金属设备与裸金属主机的开关机、重启、获取硬件信息等操作。部署网络用于PXE服务器通过DHCP服务下发IP地址以及通过TFTP服务传输镜像。

裸金属管理核心包括硬件信息获取和裸金属设备无人值守部署。
管理节点通过PXE服务器指定裸金属设备通过PXE启动。PXE服务器封装DHCP、TFTP和镜像存储服务,在裸金属设备PXE启动后通过DHCP获得IP地址,随后到TFTP服务器上,下载pxelinux.0和引导文件,并把内核加载至内存中执行,引导进LiveCD系统。在LiveCD系统中执行检测脚本,将裸金属设备的硬件信息回传至管理节点。根据回传的硬件信息,对裸金属设备设置预配置模板,包括:分区信息、设置网卡Bond、IP地址等。选择一个待安装的操作系统ISO,即可部署裸金属主机。重启裸金属设备至PXE启动,PXE部署服务器会预先下载待安装操作系统ISO,裸金属设备根据预设好的配置模板实行无人值守部署,部署完毕后会自动根据预配置模板配置网卡等信息,至此裸金属主机配置完毕。
为更好地运维裸金属主机,PXE服务器可下发裸金属监控服务,实现裸金属主机内部数据的实时监控,包括:CPU、内存、磁盘容量、磁盘IO、网卡等信息。

弹性裸金属管理
弹性裸金属管理可为应用提供专属物理服务器,保障核心应用的高性能和稳定性,并结合云平台资源的弹性优势,实现灵活申请,按需使用。弹性裸金属管理融合物理机和云主机各自优势,业务应用不仅可以使用物理机超强超稳的计算能力,而且可以使用云平台内主存储、三层网络等资源。避免虚拟化开销的同时,突破云资源与物理资源的边界,提高云资源的可用性,特别适合部署传统的非虚拟化场景应用。

弹性裸金属架构
- 存储网络:与主存储通信使用的网络。
- 部署网络:创建弹性裸金属实例时,用于PXE流程及下载镜像的专属网络。
- 管理网络:云平台管理节点通过该网络对节点进行管控,该网络与IPMI网络需互通。
- IPMI网络:服务器IPMI网络。
- 管理节点:云平台管理节点。
- 网关节点:云平台和弹性裸金属实例的流量转发节点,提供iPXE服务、DHCP服务等,可通过网关节点为弹性裸金属实例下发配置。通过网关节点接管主存储,并为弹性裸金属实例分配主存储。一个网关节点只能加载到一个弹性裸金属集群。
- 弹性裸金属集群:为裸金属节点提供单独的集群管理。
- 弹性裸金属实例:性能媲美物理服务器的云实例,结合云平台资源的弹性优势,实现灵活申请,按需使用。
- 弹性裸金属规格:弹性裸金属实例涉及的CPU、内存、CPU架构、CPU型号等规格定义。
- 裸金属节点:用于创建弹性裸金属实例,通过BMC接口以及IPMI配置进行唯一识别。
- 主存储:用于存储云主机磁盘文件(包括:根云盘、数据云盘、根云盘快照、数据云盘快照、镜像缓存等)的存储服务器。

获取硬件信息
为获取裸金属节点硬件信息,管理节点会使用IPMI来引导裸金属节点从网络启动。裸金属节点启动过程中,通过PXE加载位于网关节点上的一个LiveCD系统,并通过系统中预置的脚本来获取裸金属节点硬件信息,同时把硬件信息返回给管理节点。

裸金属节点的云盘启动和控制台
裸金属节点支持使用本地磁盘或云盘作为启动源。在使用本地磁盘启动场景下,可支持使用本地系统纳管或使用平台镜像部署本地系统的方式。在使用云盘启动场景下,云盘的存储资源主要由Shared Block主存储或Ceph主存储提供。因此可兼具云平台资源弹性以及本地磁盘稳定I/O与高吞吐优势。下图实线代表实际架构,虚线代表逻辑实现。
裸金属实例的云盘启动主要依赖于裸金属网关节点上的iPXE及iSCSI Target服务实现。当创建裸金属实例选择镜像后,镜像会先被下发到云平台主存储作为镜像缓存,然后基于镜像缓存创建出裸金属对应的云盘。在网关节点上,云盘会被映射成iSCSI Target并通过部署网络暴露给裸金属节点,作为裸金属实例的根盘或数据盘。最终裸金属节点通过PXE启动,加载网关节点上暴露出来的根盘和数据盘从而实现云盘启动。

要实现在云平台上打开裸金属实例的控制台以及裸金属实例的实时监控,需要在裸金属实例系统中安装相应的裸金属代理服务程序。裸金属网关节点上的Nginx代理服务将来自管理节点的请求转发至裸金属代理服务程序,再将来自裸金属代理服务程序的反馈转发回管理节点,以此来实现控制台功能。
