一、 背景
系统虚拟化(VMWare、Xen、KVM等)已成为构建现代信息化系统的关键基础设施,具有虚拟机与物理资源解耦,多虚拟机OS复用物理资源,按需资源供给的能力,能有效应对信息化系统独占物理资源,平均资源利用率低的不足。为了防止物理机宕机对虚拟机的影响,当前系统虚拟化通常采用集群解决方案,将虚拟机与集群关联,当物理机宕机引起虚拟机失效时,利用虚拟机与物理资源解耦的特性,将虚拟机迁移到正常的物理机上,重新启动,进行业务恢复,此即虚拟化资源池高可用。
目前,典型的虚拟化资源池通常采用的是“master/slaves”结构。其中,master是失效恢复的监测者和控制者,slave是虚拟机运行的实际载体。而master节点失效无法恢复,会导致虚拟机迁移到正常物理机操作无法使用。因此,master失效恢复的透明性成为衡量虚拟化资源池高可用的一个重要度量指标。已有工作XCP采用的是基于“手工重构建”的虚拟机资源池和master节点失效恢复方法;而XenServer则实现了一种基于“在线更新”的“手工重配置”的master节点重定向方法;VMWare vCenter和Microsoft Hyper-V则基于“双机热备”思想,通过预先定制备份节点,实现了一种基于“自动替换”机制的master节点自修复方法。均无法满足master自动恢复的需求。因此,本文重点描述了基于角色的虚拟化资源池单点失效处理方法。
二、 整体架构
若无特殊说明,本文的节点都是特指物理服务器。系统将虚拟化资源池中的节点划分为三种角色,分别是master,slave和backup。
l master节点也称为主节点,它是虚拟机资源池的唯一逻辑入口,负责管理所有的slave节点;
l (2)slave节点主要负责本节点的虚拟机生命周期的管理;
l (3)backup用于同步备份master节点的状态信息,并在master节点失效时接管其工作。
虚拟化资源池中各节点所处的角色并不是固定的,而是随着不同条件在三种角色中转换,转换关系如图1所示。在初始阶段,所有节点均被初始化为none,即不赋予任何角色。各种角色间的转换关系如下:
图1角色转换关系图
(1) 节点的角色初始化为none,当用户建立逻辑资源池时,主动指定一个none节点为master节点;
(2) 节点的角色初始化为none,加入资源池后,成为资源池中的成员,该节点从none转变为slave;
(3) 节点角色为master,当发生宕机恢复后,主动转变为slave节点;
(4) 节点角色为slave,当它退出资源池时,转变为none节点;
(5) 节点角色为slave,通过master节点选取指定为backup节点;
(6) 节点角色为backup,当它探测到资源池中的master节点失效时,主动转换为master节点接管其工作;
(7) 节点角色为backup,当发生宕机恢复后,主动转变为slave节点。
本文选取XCP、Ctrix XenServer 6.0、VMWare vCenter 5.1以及本系统在连续两次master节点单点失效前提下虚拟机池可用性对比测试。其中选取的虚拟机操作包括虚拟机创建C、关闭S、删除D、虚拟机转换成模板T以及虚拟机在线迁移M共计5种典型虚拟机池操作,如表1所示
表1无人干预下master节点单点失效恢复实验
由于Ctrix采用的是master节点手工重定向方法,因无人干预下master节点无法自动恢复而导致虚拟机池不可用;VMware采用的是备份节点预先指定和双击热备策略,由于在第一次失效恢复后不存在备份节点的相关配置,因此只能实现一次master节点失效恢复;本文方法具有备份节点自动选取能力,因此具有连续master节点单点失效恢复能力。综上,本方法在单点失效恢复过