APP下载

基于K V M虚拟化平台的轻量级H A机制研究

2018-07-04四川中电启明星信息技术有限公司研发中心佘文魁田富强

电子世界 2018年12期
关键词:宕机宿主机单台

四川中电启明星信息技术有限公司研发中心 佘文魁 袁 亮 田富强 喻 梅

1 引言

如今,虚拟化成为一种成熟的技术,允许用户创建自己的私有云,并为许多领域的网络服务提供虚拟机(VM)。由于云上的计算节点通常执行多个虚拟机,否则任何崩溃计算节点的故障可能会导致一组虚拟机失败。这意味着计算设备的可靠性在云时代比以往任何时候都更加重要。因此,有必要使用基于软件的高可用性(HA)机制来保护计算节点上的虚拟机。

2 相关技术

A.QEMU和KVM

QEMU 是可以的软件组件模拟硬件设备,由FabriceBellard编写。因为它通过软件模拟CPU,性能有限。为了提高QEMU的性能,新版本的QEMU通常带有KVM,通常称为“QEMU-KVM”。KVM(基于内核的虚拟机)是一个开源项目;它是Linux x86硬件的完全虚拟化解决方案。目前,KVM还与QEMU-KVM一起运行,这是一个特殊版本的QEMU。为了提高速度,QEMU-KVM使用不同的方法来模拟CPU。QEMU-KVM将通过KVM模块将由VM生成的所有CPU指令发送到实体CPU,以运行。

B.Libvirt

Libvirt用于在使用虚拟化技术时解决各种管理不便问题。它支持多种虚拟机管理程序,如KVM,Xen和VMware ESX。它还为各种语言(如C,Python和Java)提供远程过程调用。使用远程API,系统管理员可以轻松地控制另一个计算节点上的虚拟机。

Libvirt通常用于管理KVM的虚拟机,其中Libvirt可以创建通信通道以连接到计算节点上的KVM监视器。通过此通道,Libvirt可以向VM发送命令。此外,当VM进程意外关闭时,节点操作系统还可以向Libvirt守护程序发送错误消息。

C.相关高可用技术研究

许多商业服务器虚拟化软件,软件包支持高可用性功能。例如,VMware ESXi也在其设计中采用集群管理的概念。 VMware ESXi使用心跳作为主要的故障检测方法。如果主HA服务器在给定时间段内无法从VM接收心跳线,则主服务器将尝试验证VM是否正忙于在VMware ESXi群集的数据存储服务器中执行I / O。如果答案为否,主HA服务器将会触发恢复过程。

3.系统设计与实现

LW-HA的基本原理与流程如图1所示,控制端对HA的检测与处理各个环节均采用事件监听方式,可支持大规模并发故障处理。这里采用瞬时事件触发和任务轮循并行的方式,即保证检测与恢复的时间最小化,同时又能保证各个环节失败后能自动重试。多点并发启动时,虚拟机启动采用“排它锁”,确保谁优先抢到虚拟机启动锁,由谁执行启动操作,避免两线程同时执行虚拟机启动引起脑裂。

图1 HA总体流程图

计算节点在采集主机注册信息时,将所有网卡设备信息缓存起来。检测时从缓存中遍历所有已配IP的网卡信息,采用命令“ethtool网卡设备名”检测,从输出结果中找到link detected 项的值,如果非”yes”(忽略大小写)则判定为连接中断。计算节点在通信异常时,通过向探测ip清单中所有ip发起通信请求来确认自身是否已成为通信孤岛。

为了提升虚拟机的可用性,减少虚拟机服务停机时间,系统将检测并在尽可能短的时间内将服务中断的虚拟机恢复运行。LW-HA主要对以下六类场景进行设计与实现,如表1所示。

表1

通过对场景的共性进行分析,实际上是解决两类问题,一是虚拟机宕机;二是资源池断电。

3.1 虚拟机宕机

(1)前置条件

控制节点及服务运行正常,通信正常。

宿主机运行正常,通信正常。

(2)故障认定

虚拟机宕机认定条件为,同时符合以下四个条件:

主机心跳均正常情况下,主机前一次心跳信息中某虚拟机domain存在,本次主机正常心跳情况下该虚拟机domain不存在。

数据库中记录的宿主机仍为当前主机(排除刚迁移成功或迁移失败,已解锁)。

虚拟机为运行状态(排除刚强制关机成功,已解锁)。

虚拟机未被锁定为“停止中”或“跨主机迁移中”(排除正在停止或正在跨主机迁移)。

(3)调度流程(如图2所示)

图2 主机宕机HA流程图

3.2 资源池断电

(1)前置条件

控制节点已启动,控制服务已运行,通信正常。

虚拟机原宿主机已启动,并已成功发送心跳至

控制节点。

(2)故障认定

资源池断电后,数据库中仍然保存有虚拟机的运行状态与宿主机信息,当数据库和控制节点启动后,由控制节点周期性轮循检测关系在宿主机上,但无心跳的虚拟机。

(3)调度流程(如图3所示)

图3 资源池断电HA流程图

以上就是LW-HA的原理及针对典型场景的分析与实现。下一节将通过实验验证该方案。

4.测试结果分析

测试环境:

分别使用3台物理机部署VMware ESXi6.0与LW-HA系统,主机配置信息为IBM3550环境,双Intel(R) Xeon(R) CPU E5-2640 V3 @2.60GHz,共32核,内存64G;虚拟机配置信息为4vcpu,4G内存,虚拟机gustos统一为centos7.1mini。

测试场景一:

在两套系统中创建并运行单台虚拟机,通过系统命令强制关闭,模拟虚拟机故障关闭场景。

测试场景二:

在两套系统中某一主机上创建并运行8台虚拟机,通过对运行虚拟机的主机掉电的方式模拟主机故障。

通过日志记录虚拟机恢复时间间隔,对两种场景进行10次测试采样。

测试结果如下图4,5所示:

图4 单台虚拟机HA测试记录

图5 单台主机HA测试记录

可以看到单台虚拟机HA间隔时间VMware平均4.1秒,LW-HA平均间隔2.4秒;单台主机HA间隔时间VMware平均57秒,LW-HA平均间隔21秒。可以看到LW-HA方案对比VMware具有同样的稳定性和更高的敏感度。

5.结论

本文在KVM虚拟化平台上,提出一种轻量级的高可用机制(LW-HA),并给出了在不同场景下的实现原理与机制,最后通过实验得出该LW-HA机制在虚拟机宕机恢复及宿主机宕机虚拟机恢复方面均优于商业软件,是一种完美替换商业软件HA的方案,也可以为虚拟机故障恢复机制方面提供一些参考。

[1]KVM官方网站[OL] http://www.linux-kvm.org/page/Main_Page.

[2]QEMU官方网址[OL] http://wiki.qemu.org/Main_Page.

[3]复旦大学并行处理研究所著.系统虚拟化[M].北京:清华大学出版社,2009

[4]倪华婓.虚拟化技术下高可用大规模集群系统HARing的设计和实现,浙江大学,2012.

[5]耿新民,王少峰,许飞.基于VMware的高可用性集群在电力信息系统中的应用[J].上海电力学院学报,2010,26(2):193-196.

[6]熊梦,杨松,莫展鹏等.一种虚拟机高可用机制:,CN 103729280 A[P].2014.

猜你喜欢

宕机宿主机单台
累计2 100秒!我国百吨级火箭发动机单台试车创下新纪录
关于无锡地铁梅园站计轴宕机的研究
岛内人口普查刚启动就遇“宕机”
嵌入式计算机软件测试关键技术研究
东风汽车将获控股股东2.2亿元新能源补贴
虚拟网络实验室在农村职校计算机网络技术教学中的应用研究
基于集中采购的分布式系统的设计与实现
水电工程施工应急调度模型单台机组算法探究
一起民航气象数据库系统进程频繁宕机故障分析及处理方法
单台多震和达法研究山西地区的波速比变化特征