一种实现KVM虚拟机高可用的方法
2020-02-03谭文贵
谭文贵
(中国移动通信集团重庆有限公司 重庆市 401121)
1 引言
随着开源软件的大量使用,核心业务部署在基于Openstack 架构下的KVM 虚拟化平台使用较多,而KVM 虚拟机的高可用方案不够完善。现有Openstack 架构下KVM 虚拟机高可用方案实现上,主要的缺点有:
(1)通过节点间心跳来确定计算节点的状态,计算节点状态监控和虚拟机状态监控网络未分离,方法并不可靠;
(2)集群内虚拟机迁移未考虑业务特点与底层服务器性能的结合,未充分考虑资源性能的合理利用,会出现计算资源浪费或不能很好满足业务性能需求的情况;
(3)集群内KVM 虚拟机迁移未考虑同一类型业务分布的宿主机对应的物理机柜位置,未充分考虑机柜掉电的高可用保护和同类型的业务分散部署等问题。
鉴于上述的分析,本文提出一种Openstack 架构下KVM 虚拟机高可用方案来保障业务连续性,用以解决现有技术中存在的上述问题。
2 Openstack架构下kvm虚拟机迁移总体网络架构
本文提出一种实现KVM 虚拟机高可用的方法,系统网络总体架构如图1 所示,本方案涉及的主体监控任务由计算节点监控服务器和kvm 虚拟机监控服务器共同完成。计算节点监控服务器:控制中枢,用于监控计算节点状态。采用双机热备方式部署,实现监控节点自身高可用。kvm 虚拟机监控服务器:注册中心,用来监控虚拟机状态。采用负载分担方式进行,可实现水平扩展,实现监控节点自身高可用。
网络总体架构采用网络分离的方式搭建,分为管理网络和生产网络,计算节点监控服务器和kvm 虚拟机监控服务器部署在管理网,采用网络交换机vlan 隔离方式。计算节点部署在生产网,集群采用网络交换机vlan 进行隔离,每个计算节点上都安装有虚拟机,每个虚拟机都注册到kvm 虚拟机监控服务器上。kvm 虚拟机监控服务器用于监控虚拟机状态,计算节点监控服务器监控计算节点状态。通过对计算节点和虚拟机分别进行监控,并结合网络状况分析,定位故障原因,最终决定是否对虚拟机进行恢复和迁移。
3 kvm虚拟机迁移云管理平台接口调用逻辑架构
kvm 虚拟机迁移云管理平台接口调用逻辑架构如图2 所示,本方案中云管理平台接口调用涉及的模块有:计算节点虚拟机agent部署模块、kvm 虚拟机监控服务器zookeeper 部署模块、云管理平台监控程序部署模块、云管理平台高可用程序模块、云管理平台接口程序模块。通过云管理平台进行统一调度管理和灵活的疏散策略实现方法,提升迁移操作效率和准确性,迁移过程全程可监控。
图1:系统网络总体架构
图2:云管理平台接口调用逻辑架构
本方案将kvm 虚拟机迁移管理对接云管理平台,虚拟机迁移云管理平台接口调用步骤如下:
步骤1:kvm 虚拟机监控服务器zookeeper 监控agent 心跳状态,当发现agent 心跳状态异常,通知给云管理平台监控程序进行处理,跳转到步骤2。
步骤2:云管理平台监控程序接收到zookeeper 报告的agent异常后,需要登陆agent 部署机器,判断机器是否发生故障。并对agent 进行重启操作,若启动失败,跳转到步骤启动成功跳转到步骤1。
图3:kvm 虚拟机高可用调度流程图
步骤3:失败后,云管理平台高可用程序自动监控,根据设置的故障处理策略,找到一台最优机器。调转到步骤4。
步骤4:云管理平台接口程序,对主机下虚拟机进行迁移操作,并对虚拟机进行启动。
4 Openstack架构下kvm虚拟机高可用实现
Openstack 架构下kvm 虚拟机高可用调度流程图如图3 所示,本方案在高可用调度过程中涉及的模块有:监控平台模块、云管理平台调度模块、短信或邮件能力平台模块、运维管理员监控确认模块、虚拟机迁移疏散策略。
kvm 虚拟机高可用调度步骤如下:
① 通过计算节点和虚拟机分离监控,发现故障主机,隔离故障主机并记录故障主机ID;
② 判断故障主机所在的集群是否开启高可用功能,如果开启进入步骤③;如果未开启高可用功能进入步骤④;
③ 集群自动化程度判断,如果手动,选择要疏散的主机进入步骤⑥;如果半自动,发送确认短信,进入步骤⑤;如果自动直接进入步骤⑥;
④对于不可疏散的虚拟机发送告警,分别处理不可疏散的虚拟机;
⑤调用短信能力发送,执行短信发送,发送确认内容,进入步骤⑦;
⑥集群疏散策略调用,策略如下:
(1)只在集群自身内部疏散;(2)优先在集群内部,剩余未疏散虚拟机疏散至高性能专属集群;(3)只疏散至专用高性能专属集群;(4)优先高性能专属集群,后在集群内部疏散。
策略调用步骤如下:
步骤(1):进行集群内部根据底层物理服务器的高性能标识专属集群ID;
步骤(2):进行计算节点宿主机对应的机柜标识ID;
步骤(3):根据kvm 虚拟机对应业务对性能的需求,判断是否向高性能专属高可用集群疏散,如果满足条件,执行步骤(4);如果不满足,执行步骤(5);
步骤(4):在专属集群内根据业务类型结合步骤(2),判断是否在同一机柜,执行疏散策略,将同一类型业务进行多机柜分散部署;
步骤(5):在非专属集群内部据业务类型结合步骤(2),判断是否在同一机柜,执行疏散策略,将同一类型业务进行多机柜分散部署。
⑦确认执行疏散与否,如果疏散,进入步骤⑥;如果不疏散,进入步骤⑩结束;
⑧对于可用主机按照同类型业务多机柜分散部署,按照内存、CPU 负载排序原则,进入步骤⑨;
⑨判断是否存在不可疏散的虚拟机,如存在,分别处理不可疏散的虚拟机;如不存在,进行批量疏散,进入步骤⑩;
⑩结束
5 结论与展望
本文阐述了一种Openstack 架构下KVM 虚拟机高可用方案来保障业务连续性。
具体包括:
(1)提出一种监控计算节点和KVM 虚拟机状态的方法提升高可用有效性,采用计算节点和虚拟机分开监控、管理网和业务网分开监控的方法提高虚拟机监控有效性;
(2)提出一种虚拟机迁移关联业务性能需求和底层硬件性能的疏散策略及实现方法,提升资源使用效率;
(3)提出一种虚拟机迁移关联业务分布与防止整机柜掉电高可用的疏散策略及实现方法,避免同一类型的所有业务部署到同一机柜,避免虚拟机迁移容易造成阻塞的问题,保障业务的连续性;
(4)提出一种虚拟机迁移通过云管理平台进行统一调度管理和灵活的疏散策略实现方法,提升迁移操作效率和准确性,迁移过程易把控,迁移疏散策略灵活。