首页 Smart ZK:面向虚拟化集群的高可用服务系统

Smart ZK:面向虚拟化集群的高可用服务系统

举报
开通vip

Smart ZK:面向虚拟化集群的高可用服务系统Smart ZK:面向虚拟化集群的高可用服务系统 Smart ZK:面向虚拟化集群的高可用服务系统 ADissertation Submittedto Zhejiang Univer!。‘ sreVforftheoeree 1tY Degree Masterof Engineering ? TI TLE:?堡垒!主圣K;?H至gh?Y垒至里垒坠至呈至主Y Service for metSy5lautriV System Cluster Author: sor: Wenzhi ...

Smart ZK:面向虚拟化集群的高可用服务系统
Smart ZK:面向虚拟化集群的高可用服务系统 Smart ZK:面向虚拟化集群的高可用服务系统 ADissertation Submittedto Zhejiang Univer!。‘ sreVforftheoeree 1tY Degree Masterof Engineering ? TI TLE:?堡垒!主圣K;?H至gh?Y垒至里垒坠至呈至主Y Service for metSy5lautriV System Cluster Author: sor: Wenzhi Supervi ,19f!Chen Subject: Coll ege: Submitted Date: (I垒凸坠垒!Y墨:!。2Q!窒 浙江大学硕+学位论文 摘要 摘要 随着虚拟化产品的不断普及和云计算技术的蓬勃发展,虚拟化集群被广泛的 用于各行业领域中,用以支撑关键应用和服务;与此同时,人们对于集群高 可用 性要求也变的越来越高。虚拟化集群在架构上区别于传统集群,不仅增加了一个 虚拟机层,在节点数量上也扩大了数十倍,这给集群的高可用服务带来新的挑战。 在这种背景下,本文 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 并实现一个面向大规模虚拟化集群的高可用服务系 统,该系统对集群中的物理机和虚拟机进行实时监控,能够准确有效的检测到故 障节点,同时在网络分割等复杂场景下仍能保持集群业务的一致性。本文的主要 贡献体现在以下五个方面: 1 提出一种可靠的视图同步 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 ,利用分布式数据一致算法Paxos支撑视 图同步功能,保证多点视图的一致性。 2 提出一种多层次的故障检测方案,能够实时监控物理机、虚拟机以及 虚拟机操作系统三个层次的运行状态。同时,本文提出的两种虚拟机监控方法均 支持全虚拟化和类虚拟化架构。 3 提出一种分布式的物理机心跳检测方案,物理机可以在多台服务器之 间切换心跳发送目标,以避免在服务器单点故障、网络闪断或者网络局部故障的 情况下出现误报。该方案同时能够保证在网络分割的情况下集群业务的一致性。 4 提出一种可靠的组通讯方案,可以在集群内部实现指令和数据的可靠 组播。指令组播可以同时对多个节点进行操作,数据组播则能够实现节点关键数 据的多点备份。 5 实现一个原型系统,实施设计方案,并通过实验验证其功能和性能。 本文实现方案可靠性强,检测方式新颖可靠,同时基于开源产品设计,具有 再定制能力。目前已被一些国内公司认可和采用,具有良好的应用前景。 关键词: 高可用,虚拟化集群,故障检测,Paxos Abstract of andtheboomofcloud Withthe virtualization computing growingpopularity are usedvariousareasto theircritical clusters in support technologies,virtualwidely this demandsforthe andservices(In clusters’ availability applications way,people’S onesnot clustersaredifferentfromthetraditional become and higher(VirtuaI higher thenumberof virtualizationbutalsointhe of intheadditionof layer expansion only severaltimes thanthetraditional couldbe ones(Thus,it nodes,which larger brings for new clusters’highavailability( challenges availableservice and a Inthis system context,thispaperdesignsimplementshigh monitorboththe andvirtual virtual can for clusters,which physical large(scale faultnode and at machinesintheclusterin real-time,detectcorrectlyefficiently,and under ofthecluster’Sserviceeven thesame the time,maintainconsistency and such懿network maincontribution conditions partition(The sophisticated ofthis areinthe fourareas: innovation paper following takes ofthedistributed aview scheme(It advantage 1 Proposesynchronization theserviceofview data synchronization(It consistencyalgorithm,Paxos,tosupport ensurethe of view( could consistencymulti-point statusof canmonitorthe ahierarchicalfaultdetection scheme,which 2 Propose machinesandvirtual-machine thethree machines,virtual operating levels,physical schemethis thevirtual-machine real(time(Meanwhile,both monitoring systems,in architecture( and bothfullvirtualization para-virtualization paperproposessupport whicha a machineheartbeatdetectionscheme,in distributed 3 Propose physical severalservers(In machinecan oftheheartbeat switch target among physical sending of canavoidfalse inthecasessuchasserver’S failure, this result singlepoint way,it alsoensures flashand failure(Atthesame scheme network network time,the partial ofthe undertheconditionofnetwork the cluster’sservice partition( consistency it to areliablecommunication makes scheme,which possible 4 Proposegroup Instruction anddataintheclusten achievereliable broadcastofinstructions group 堂塑21堂塑?堂垒丝茎 垒 堕塑竺 broadcastcould group on nodesatthesame time(Data operatemultiple group broadcast isabletoachieve on nodesforthe nodes’ criticaldata( backupmultiple a to allthe 5 Implement schemes(Validate protypesystemcompletedesign it's and tests( functionalityperformance through The this isofh reliabil protypesystem thedetection paperproposesigh ity,and methodis creative(Theis based-on program itcanbefurther open-sourceprogram,SO customized(In has addition,the been and program some approved adoptedby in China(Itis crediblethat companies the hasa highly programverygood prospect( Keywords:HighAvailability,VirtualCluster,FaultDetection,Paxos 浙江大学硕+学位论文 目录 工贸企业有限空间作业目录特种设备作业人员作业种类与目录特种设备作业人员目录1类医疗器械目录高值医用耗材参考目录 目录 摘昙 要„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„ „„„„„„„„„(i Abstract„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„ „„„„„„„„„„ii 第1章绪论„„„„„„„„„„„„„„„„„„„„„„„„„„„„l 1(1课题背 景„„„„„„„„„„„„„„„„„„„„„„„„„„„l 1(2研究意义和目 标„„„„„„„„„„„„„„„„„„„„„„„。2 1(3本文工作内 容„„„„„„„„„„„„„„„„„„„„„„„„„2 1(4本文的创新 点„„„„„„„„„„„„„„„„„„„„„„„„。3 1(5本文组织结 构„„„„„„„„„„„„„„„„„„„„„„„„((5 1(6本章小结„„„„„„„„„„„„„„„„„„„„„„„„„„((6 第2章相关技术综 述„„„„„„„„„„„„„„„„„„„„„„„„7 2(1集群高可用技术介 绍„„„„„„„„„„„„„„„„„„„„„。7 2(1(1集群高可用性定义„„„„„„„„„„„„„„„„„„„„„(7 2(1(2集群故障检测方法综述„„„„„„„„„„„„„„„„„„„(8 2(2虚拟化集群介 绍„„„„„„„„„„„„„„„„„„„„„„„l0 O 2(2(1系统虚拟化分 类„„„„„„„„„„„„„„„„„„„„„。l 2(2(2虚拟化集群优 势„„„„„„„„„„„„„„„„„„„„„„ll 2 2(2(3虚拟化集群现 状„„„„„„„„„„„„„„„„„„„„„。l 2(2(4虚拟化集群的高可用 性„„„„„„„„„„„„„„„„„„„12 2(3 3 Zookeeper介绍„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„l 5 2(4本章小结„„„„„„„„„„„„„„„„„„„„„„„„„„(1 6 第3章Smart―ZK关键技术研究„„„„„„„„„„„„„„„„„„„„l 6 3(1集群视图的组织结 构„„„„„„„„„„„„„„„„„„„„„(1 7 3(2集群视图同 步„„„„„„„„„„„„„„„„„„„„„„„„l 3(3多层次故障检 测„„„„„„„„„„„„„„„„„„„„„„„2l 浙江大学硕十学位论文 目录 l 3(3(1物理机层故障检测„„„„„„„„„„„„„„„„„„„„。2 3(3(2虚拟机层故障检测„„„„„„„„„„„„„„„„„„„„„22 3(3(3虚拟机操作系统层故障检测„„„„„„„„„„„„„„„„((26 3(4集群状态实时监 控„„„„„„„„„„„„„„„„„„„„„„29 3(5网络分割检测和处 理„„„„„„„„„„„„„„„„„„„„„30 3(6本章小结„„„„„„„„„„„„„„„„„„„„„„„„„„30 l 第4章Smart―ZK的设计和实现„„„„„„„„„„„„„„„„„„„((3 4(1总体设计架 构„„„„„„„„„„„„„„„„„„„„„„„„32 4(2 ZKServer的设计和部 署„„„„„„„„„„„„„„„„„„„„36 4(2(1 Zookeeper原 理„„„„„„„„„„„„„„„„„„„„„„„„„„„„„36 4(2(2 Zookeeper关键参 数„„„„„„„„„„„„„„„„„„„„37 4(2(3 Zookeeper初始化„„„„„„„„„„„„„„„„„„„„„37 4(3ZKCl ient的设计和实 现„„„„„„„„„„„„„„„„„„„„(38 4(3(1连接模块„„„„„„„„„„„„„„„„„„„„„„„„„39 4(3(2视图维护模块„„„„„„„„„„„„„„„„„„„„„„„40 4(3(3指令解析模块„„„„„„„„„„„„„„„„„„„„„„„42 4(3(4虚拟机监控模块„„„„„„„„„„„„„„„„„„„„„。42 4(3(5组通信模块„„„„„„„„„„„„„„„„„„„„„„„((43 4(4ZKMoni tor的设计和实 现„„„„„„„„„„„„„„„„„„„(44 4(4(1接口„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„(45 4(4(2集群监控模块„„„„„„„„„„„„„„„„„„„„„„„46 4(4(3故障转移模块„„„„„„„„„„„„„„„„„„„„„„。48 4(4(4组通信模块„„„„„„„„„„„„„„„„„„„„„„„„48 4(5本章小结„„„„„„„„„„„„„„„„„„„„„„„„„„49 第5章Smart―ZK的测试与分析„„„„„„„„„„„„„„„„„„„。50 5一Smart―ZK系统部署„„„„„„„„„„„„„„„„„„„„„„„50 5(2故障检测测 试„„„„„„„„„„„„„„„„„„„„„„„„(52 浙江大学硕十学位论文 目录 5(2(1单虚拟机故障„„„„„„„„„„„„„„„„„„„„„„((52 5(2(2多虚拟机故障„„„„„„„„„„„„„„„„„„„„„„„54 5(2(3单物理机故障„„„„„„„„„„„„„„„„„„„„„„„(55 5(2(4多物理机故障„„„„„„„„„„„„„„„„„„„„„„„57 5(2(5物理机和虚拟机同时故障„„„„„„„„„„„„„„„„„。59 5(2(6故障检测测试总结„„„„„„„„„„„„„„„„„„„„„60 5(3组通信测 试„„„„„„„„„„„„„„„„„„„„„„„„„((6l 5(4网络分割测 试„„„„„„„„„„„„„„„„„„„„„„„„(6l 5(4(1服务集群和客户端之间网络分割„„„„„„„„„„„„„„。62 5(4(2服务集群内部网络分 割„„„„„„„„„„„„„„„„„„。63 5(5本章小结„„„„„„„„„„„„„„„„„„„„„„„„„„63 第6章总结与展 望„„„„„„„„„„„„„„„„„„„„„„„„„65 6(1本文工作总 结„„„„„„„„„„„„„„„„„„„„„„„„(65 6(2未来的进一步工 作„„„„„„„„„„„„„„„„„„„„„„66 参考文 献„„„((((„„„„„„„„„„„„„„„„„„„„„„„„„(67 攻读硕士学位期间主要的研究成 果„„„„„„„„„„„„„„„„„„69 致 谢„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„(70 浙江大学硕十学位论义 图目录 图目录 2(1 4 Zookeeper性能表 现„„„„„„„„„„„„„„„„„„„„((1 3(1视图的组织结 构„„„„„„„„„„„„„„„„„„„„„„„(16 3(2 Paxos算法流程 图„„„„„„„„„„„„„„„„„„„„„„„。20 3(3 xm工作原 理„„„„„„„„„„„„„„„„„„„„„„„„„((23 3(4xm list命令结 果„„„„„„„„„„„„„„„„„„„„„„„„„„((24 3(5xm top命令结 果„„„„„„„„„„„„„„„„„„„„„„„(25 3(6Xen网桥架构„„„„„„„„„„„„„„„„„„„„„„„„(27 3(7虚拟机心跳通路设计„„„„„„„„„„„„„„„„„„„„。28 4(1Smart ZK逻辑框 图„„„„„„„„„„„„„„„„„„„„„„32 4(2Smart ZK总体架构 图„„„„„„„„„„„„„„„„„„„„一34 4(3 Zookeeper服务器列 表格 关于规范使用各类表格的通知入职表格免费下载关于主播时间做一个表格详细英语字母大小写表格下载简历表格模板下载 式„„„„„„„„„„„„„„„„„„(36 4(4leader选举过 程„„„„„„„„„„„„„„„„„„„„„„„38 4(5 ZKClient架构„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„39 l 4(6集群视图 树„„„„„„„„„„„„„„„„„„„„„„„„„4 4(7 ZKMonitor架构„„„„„„„„„„„„„„„„„„„„„„„„„„„„„45 4(8图形界面下的集群运行状 态„„„„„„„„„„„„„„„„„46 5(1单虚拟机故障 vmtimeout 7 „„„„„„„„„„„„„„„„。52 5(2单虚拟机故障 vmtimeout 9 „„„„„„„„„„„„„„„„53 timeout i2 „„„„„„„„„„„„„„„„。53 5(3单虚拟机故障 vm timeour 7 „„„„„„„„„„„„„„„„„54 5(4多虚拟机故障 vm timeout 9 „„„„„„„„„„„„„„„„(54 5(5多虚拟机故障 vm 5(6多虚拟机故障 vmtimeout 12 „„„„„„„„„„„„„„„„„55 timeout 7 „„„„„„„„„„„„„„„„56 5(7单物理机故障 pm timeout 9 „„„„„„„„„„„„„„„„„56 5(8单物理机故障 pm timeout 12 „„„„„„„„„„„„„„„„56 5(9单物理机故障 pm 5(1 timeout 7 „„„„„„„„„„„„„„„„(57 O多物理机故障 pm timeout--9 „„„„„„„„„„„„„„„„„58 5(1l多物理机故障 pm 5(1 timeout l2 „„„„„„„„„„„„„„„((58 2多物理机故障 pm 5(13混合故障 timeout 7 „„„„„„„„„„„„„„„„„„„。59 5(14混合故障 timeout 9 „„„„„„„„„„„„„„„„„„„„59 5(1 5混合故障 timeout l2 „„„„„„„„„„„„„„„„„„„60 5(16组通信测试结 果„„„„„„„„„„„„„„„„„„„„„„„((6l 5(1 7网络闪断恢 复„„„„„„„„„„„„„„„„„„„„„„„„„„(62 图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图 5(18客户端网络分 割„„„„„„„„„„„„„„„„„„„„„„(63 浙江大学硕十学位论文 表目录 表目录 表3(1常用xm命令解释„„„„„„„„„„„„„„„„„„„„。24 表3(2xm命令中虚拟机的6种状 态„„„„„„„„„„„„„„„„(25 表4(1 Zookeeper关键参数解 释„„„„„„„„„„„„„„„„„„(37 V 浙江大学硕十学位论文 第l章绪论 第1章绪论 虚拟化技术由于其资源利用率高,隔离性好等优点被越来越广泛的应用于集 群系统中,作为关键业务和服务的支撑。但与传统集群相比,虚拟化集群在架构 和节点规模上都发生了很大的变化,给虚拟化集群的高可用服务带来新的挑战, 传统的集群高可用系统无法满足虚拟化集群的高可用需求,有必要设计一个原型 系统,为这种新架构的大规模集群提供高可用服务。 本章首先概述了课题研究背景,研究意义和目的,然后归纳本文的主要工作 和主要创新点,最后介绍全文的组织结构。 1(1课题背景 集群技术是目前支撑各行业领域计算机系统的主要方式,日常娱乐生活所需 的应用服务 如微博,电子商务,网络游戏等 ,关键行业的作业和业务 如银 行,政府单位,科研机构等 都依赖于集群技术。人们在追求集群性能的同时, 对于集群系统的高可用性也变得越来越关注。系统可用性 Availability 是指系 统正常运行并且能够提供服务时间所占的百分比【?。集群的高可用服务是为了保 证集群能够连续稳定的工作,当有节点发生故障时,集群能够最快的恢复 Failover ,尽量减少宕机时间。高可用性对于关键领域的业务来说尤为重要, 因为每秒钟的宕机时间都会带来巨大的损失,有的甚至会是不可估计的灾难。 高可用服务系统的重要职责在于实时监控集群运行状态,定位故障节点。对 于故障处理,不同的集群采取不同的方式,对于采用双机备份的集群,由于每个 关键节点都有一个冗余备份,故在主节点故障后,备份节点能够立刻启动服务。 但对于多业务大规模集群,冗余备份节点有限,故障后需要结合动态资源调度服 务逻辑,将故障节点的业务转移到合适的节点中。 虚拟化技术的快速发展为集群技术提供了新的方向,它使得集群单节点的硬 件使用效率更高,资源分配更加弹性,同时简化了业务迁移的流程。目前业界瞩 目的云计算技术,云端服务器一般都使用了大规模的虚拟化集群。 l 浙江大学硕十学位论文 第l章绪论 但虚拟化技术的引入对集群高可用服务提出了更高的挑战。相较于传统集群 只存在物理机节点,虚拟化集群增加了虚拟机节点,这种架构的变化不仅仅只是 增加了一个节点层次,更重要的是在节点的数量上扩大了几十倍甚至上百倍。国 外知名公司 如亚马逊,微软等 拥有自己的成熟的虚拟化集群以及高可用性解 决方案,国内企业也都在投入大量人力物力发展本土云计算,但都处于起步阶段。 因此,业界亟需设计开发一种高性价比的产品,面向大规模虚拟化集群,为其提 供高可用服务。 1(2研究意义和目标 集群技术与虚拟化技术的融合是未来集群系统的发展趋势,大规模虚拟化集 群会得到越来越广泛的应用。虚拟化技术的引入在给集群带来诸多好处的同时, 也给集群的可用性带来挑战,调查发现,62,的受访者表示虚拟化技术解决方案 的可靠性是他们最关注的,人们对可靠性的需求超过了对性能的要求。 本文希望设计一个面向大规模虚拟化集群的高可用服务系统,它适应集群的 大规模环境,能够提供多层次的故障检测功能,以满足引入虚拟化技术后集群架 构的变化。通过这个系统,集群中的物理机和虚拟机能够动态的加入或者退出高 可用监控范围,当监控范围内的物理机或虚拟机运行状态变化时,服务系统能够 迅速捕捉,并准确的定位到具体的节点。与此同时,该服务系统在复杂场景中仍 然能够保持故障检测的可靠性和准确性,当集群出现网络分割这种恶劣状况时, 服务系统能够保证被分割集群业务的一致性。该服务系统还必须提供可靠的组通 信功能,能够保证节点间传递消息的一致性、可靠性和有序性,用来实现命令的 组播,数据的多点备份。 本文希望该原型系统部署简单,功能可靠,同时具有良好的扩展性,为今后 提供关键程序和关键进程的高可用提供扩展接口。 1(3本文工作内容 根据课题的研究内容和研究目标,本文的主要工作内容为设计与实现一个面 向虚拟化集群的高可用服务系统,具体工作内容安排如下: 2 浙江大学硕十学位论文 第l章绪论 1 虚拟化集群高可用技术相关工作的研究。 ’‘ 在设计和实现本文系统之前,笔者对高可用技术和虚拟化技术进行了调研, 着重研究了集群故障检测方法,虚拟化平台架构,集群视图同步算法等关键技术。 同时对虚拟化集群现状及集群相关高可用产品进行了调研,如Linux(HA的 Heartbeatl21,VMware vSphere的HAt3】组件等。为提出本文的解决方案打下基础。 2 面向虚拟化集群高可用服务系统的设计。 本文设计了一个在Xeni4】虚拟化平台上基于Zookeeperi51的原型系统,设计内 容主要包括视图结构和同步方法,多层次节点故障的检测方法,组通信方法,网 络分割处理方法等。 3 面向虚拟化集群高可用服务SmartZK原型系统的实现。 基于调研结果和设计方案,本文实现了SmartZK原型系统,系统由 用于集群视图的维护和同步。ZKClient为客户端,负责物理机和虚拟机的状态 监控,并在状态变化时修改集群视图。ZKMonitor为监控器,负责实时监控集 群视图变化,并提供接口,用于和集群管理员交互。 4 测试验证SmartZK系统。 测试包括功能测试和性能测试,用来验证SmartZK系统的准确性和可靠性。 1(4本文的创新点 在完成课题工作的过程中,本文创新性的提出了一些方案和设计,并最终在 原型系统中得到实现,在测试环节中,这些内容都得到了验证。本文主要的创新 点包含以下几个方面: 1 树形结构的集群视图方案 本文提出一种树形结构的集群视图方案,该方案中利用树形结构来抽象集群 的物理拓扑关系,物理机与运行在其上虚拟机的关系对应视图树中父节点与子节 点的关系,集群节点的运行状态则储存在树节点中。这种结构的视图层次清楚, 信息完整,且具有良好的扩展性。 3 浙江大学硕十学位论文 第l章绪论 2 基于Zookeeper实现的视图同步方案 的分布式数据一致算法Paxos支撑视图同步功能,能够保证多个备份点上视图的 一致性。Paxos[6】算法是学术界公认的保证分布式数据一致性最有效的方 法之一, 务系统中,这对Zookeeper来说是一个全新的应用场景,对高可用服务系统来说 也是一次大胆的尝试。 3 动态多层次的节点故障检测方案 本文提出一种基于Xen虚拟化平台的动态多层次的节点故障检测方案,分别 包括物理机故障检测,虚拟机故障检测,虚拟机操作系统故障检测。同时本文系 统允许管理员动态调整集群监控范围,设置故障检测时间,大大提高系统监控的 灵活性。 4 多粒度虚拟机故障检测方案 本文提出一种多粒度虚拟机故障检测方案,包括两种虚拟机检测方法:xm 工具方法和网桥心跳方法。xm工具方法粗粒度的检测虚拟机运行状态;网桥心 跳方法则可以监控虚拟机操作系统的详细运行状态,并未今后实现关键程序和关 键进程的高可用性提供数据通道。两种虚拟机故障检测方式均支持Xen的全虚化 和类虚拟化架构。 5 分布式的物理机心跳检测方案 本文提出一种分布式物理机心跳检测方案,物理机同一时刻只向一台服务器 发送心跳,但可在多台服务器之间切换心跳发送目标。这种架构能够保证当服务 器单点故障或网络闪断时,不会出现故障误报。同时该架构保证集群在网络分割 等复杂场景下,集群业务仍能保持一致性,即在分割情况下,不同区块上不会出 现重复业务。 6 可靠的组通信系统方案 本文提出一种可靠的组通讯系统方案,支持命令组播和数据组播两种信息通 讯方式。在原型系统中,集群管理员可同时往多台主机发送命令,实现命令组播。 4 浙江大学硕+学位论文 第l章绪论 同时原型系统提供接口,其他程序可通过系统进行可靠的数据组播,实现数 据的 多点备份。 1(5本文组织结构 ZK的设计和实 本文重点研究面向虚拟化集群的高可用服务系统一Smart 现,围绕这个中心,本文的组织结构如下: 第l章是本文的绪论。 本章首先介绍了本文课题的研究背景,在分析了需求和挑战后,指出课题研 究的意义,并明确本文的研究目标。最后总结归纳了本文的主要工作内容以及主 ( 要创新点。 第2章是相关技术综述。 本章首先介绍了集群高可用技术,着重分析了常见的集群故障检测方法。然 后对虚拟化技术进行分析,包括虚拟化分类,虚拟化集群优势,虚拟化集群高可 用技术现状。最后对Zookeeper产品进了介绍。 第3章是本文关键技术的研究与分析。 本章针对虚拟化集群高可用服务需要解决的关键技术点进行了逐个分析,并 提出本文的解决思路。主要包括集群视图组织结构,集群视图同步方式,物理机 和虚拟机的故障检测方式,集群视图的实时监控,网络分割检测和处理等内 容。 第4章是本文系统的设计与实现。 本章首先定义了原型系统Smart_ZK,并展示系统的总体架构和总体功能。 计和实现进行详细的阐述。 第5章是本文的测试部分。 本章首先介绍测试平台的搭建和Smart―ZK系统的部署过程。随后按照原型 系统的功能要求和性能要求,设计了严格的测试用例对系统进行测试验证工作, 并对测试结果做了详细的分析。 第6章是本文的总结与展望。 5 浙江大学硕十学位论文 第l章绪论 本章总结全文工作内容,并指出原型系统的不足之处,为今后的改进工作指 出了方向。 1(6本章小结 本章介绍了课题研究的背景,并指出课题的研究意义和目标,同时归纳本文 的主要工作内容和创新点,最后对本文的组织结构进行了介绍。 6 浙江大学硕十学位论文 第2章相关技术综述 第2章相关技术综述 高可用性和虚拟化技术是研究本文课题最重要的基础知识(在本章中将对这 两项技术作详细的介绍。同时由于本文系统Smart―ZK基于开源分布式协调系统 Zookeeper开发,故会在本章最后对Zookeeper进行介绍。 2(1集群高可用技术介绍 2(1(1集群高可用性定义 集群按照功能结构,一般分为高可用集群,高性能计算集群以及负载均衡集 群[71。虽然高可用集群被单独分为一类,但事实上集群和高可用性从来都是密不 可分的。高性能计算集群和负载均衡集群,很多时候需要高可用服务的支持。 按照要求的严格程度,集群的高可用性从广义来说可以分为三个等级 【8】: 1 连续可用性 Continuous Availability 。 Tolerance 。 2 容错‘91 Fault 3 高可用性 HighAvailability 。 连续可用性是指集群的服务“零中断”,这是一种理想状态,在实际环境中 很难实现。 容错是一种高级别的高可用技术,业界对容错系统的可靠性要求一般采用 “59” Io】 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 ,即系统正常工作时间需要超过99(999,,如果以年为单位,容 错系统只允许集群的累积宕机时间不超过5分钟。容错系统需要增加冗余硬件组 件,包括冗余的电源,RAID磁盘阵列,风扇,网卡等等,保证硬件故障时能够 迅速从冗余组件恢复。容错系统对软,硬件的要求都很高,实现的成本较大。 集群的高可用性一般是指第三个等级,它是容错技术较为低成本的实现方式。 高可用通过软件的方式,使用现成 off-the(shelf 的硬件组件来实现。高可用性 技术通常用来解决系统的单点故障。 广义上说,一个典型的高可用解决方案包括两个部分: 7 浙江大学硕十学位论文 第2章相关技术综述 1 一个高可用基础平台,能够提供集群统一的视图,并监控集群所有节 点运行状态,能够迅速定位故障。 2 一个高可用应用,能够迅速处理故障,保证集群业务的连续性。 本文设计实现的SmartZK系统主要是完成第一部分的功能,即实现了高可 用基础平台。对于第二部分,高可用应用的故障处理并不能独立完成,典型的情 况是,检测到故障后,由动态资源调度服务根据集群负载情况,决定故障恢复位 置,然后高可用应用处理故障。故障业务可能是被同时转移,也可能被分散转移, 这都需要根据集群运行实际情况判断。 高可用服务系统的另一个重要功能是组通信„l。在集群范围内,组通信功能 提供可靠的消息组播,一个节点可以向其余一个或多个节点发送信息,组通信机 制保证消息传递的一致性、可靠性和有序性。组通信功能可以用来实现命令组播, 数据多点备份等功能。 2(1(2集群故障检测方法综述 故障检测方法是集群高可用服务的关键,不同规模不同业务的集群采用的故 障检测方式也不同。本节总结了业界目前普遍使用的检测方法,并分析了它们各 自的优缺点。 2(1(2(1双机热备方法 双机热掣121是高可用集群最为常见的实现方法,主要存在两种备份方式,主 (主模式和主(从模式。在主(主模式中,两台服务器各自运行独立的业务,但通过 网络或者其他方式,相互发送心跳,实现相互监控。当一台服务器故障时,另外 一台立刻接管其业务。主(从模式中只有主服务器运行业务,从服务器监控主服务 运行状态,并作适当备份。当主服务器出现故障时,从服务器升级为主服务器提 供服务。典型的双机热备产品如Linux(HA的Heartbeat。 这种故障检测方式简单可靠,但需要为每台关键节点提供冗余备份。在业务 简单,集群规模不大的场景下可以使用这种方式。但对于多业务大规模集群来说, 这种方式并不合适。 8 第2章相关技术综述 浙江大学硕+学位论文 2(1(2(2全对等心跳检测 全对等心跳检测是一种常见的故障检测方式,它的原理如下,每个节点都发 送心跳给其余所有节点,集群维护一份心跳表,数据结构类化2--维数组H[nl[n】, H【(】D】代表了节点i对节点j的状态判断,0代表故障,l代表正常。矩阵的每一 列数字之和代表了一个节点的生存状态,当其小于某个值时,系统判断其故障。 全对等结构的优点是故障检测可靠性强,但缺点是不适用于大规模集群,当节点 数量超过一定数目后,由于心跳链接数量是N?? N(1 ,心跳处理时间和发送时 FailSafe[13】软件 间都会变长,导致心跳处理延迟。SGI和SUSE公司开发的Linux 使用全对等心跳检测方法。Linux(HA的Heartbeat软件在节点数大于2时采用组 播心跳,其原理和全对等心跳检测类似。 2(1(2(3单向环心跳检测 环形结构是另一种发送心跳的选择方式,常见的环形结构有单向环,双向环, 以及令牌环。单向环的设计是将集群节点依次前后连接,每个节点发送心跳给前 驱节点,该节点的后驱节点则向它发送心跳,于是整个集群的心跳流向构成一个 单向环。当节点失去后继节点心跳时,向Leader汇报故障。这种心跳方式由于采 用分布式心跳检测方式,故可以用于大规模集群。但缺点是故障误报率较高,而 且需要Leader二次检测“疑似故障”节点来确认,处理时间变长。如果发生环内 多个连续节点同时故障,Leader的二次检测会更长,因为故障节点不能报告其后 继节点的状态,Leader必须依次检测其后继节点,直到发现正常节点为止。 Symantec公司设计的一项专利【14】就采用了单向环的心跳检测方式。 2(1(2(4双向环心跳检测 双向环的结构和单向环的结构相似,但是每个节点需要同时向它的前驱结点 和后继节点发送心跳,同时也会收到前驱和后继节点的发送过来的心跳。在这种 设计中,只有当节点的前驱节点和后驱节点同时上报故障时,Leader才会认定该 节点故障,否则忽略故障上报信息。双向环的好处是免除了Leader的二次确认操 作,同时对于多点故障的情况,能够快速的定位到故障节点的开始和结束。但缺 9 浙江大学硕十学位论文 第2章相关技术综述 点是当集群出现网络分割时,即环中的某点断开时,将仍然认为集群正常工作, ‘这可能导致严重的后果。Linux(HA的Heartbeat通过串口线来实现双向环心跳检 测,Lisa等人在它们实现的Scattertl51分布式系统中采用双向环维护组群成员关系, 61。 尹康凯等人则设计了用网络方式实现的双向环邻居模型【1 2(1(2(5令牌环故障检测 令牌环【"】也是单向的,但是心跳发送方式和其他设计有所差别。令牌持有者 N向后继节点M发送令牌,M收到令牌后需回复。若在指定时间内,N多 次重 发令牌都没有收到M的回复消息,认定M故障。N向环内所有人询问M的后继 节点地址,M的后继节点X收到请求后回复N,此时令牌从N传到X,令牌中 记录了节点M的故障消息。一种更严重的情况是,N询问M后继节点时无人回 复,此时出现多点故障的概率很大,故N请求重新组环。一些计算机免疫系统会 使用令牌环来提高可靠性,Siddesh等人设计的网格容错中间件GRMf’81,以及 Corosync|悖】等组通信产品也使用令牌环方式检测节点故障和成员管理管理。但令 牌环的缺点是故障检测时间较长,不适合大规模集群。 2(2虚拟化集群介绍 集群中使用的虚拟化技术主要是指系统虚拟化技术。如果说集群是整合多台 服务器的处理能力,虚拟化技术则是将一台机器分割成多台具有独立处理能力的 虚拟服务器。通过虚拟机监控器 VMM 的抽象,每台虚拟机都认为自己独占 了所有资源 如CPU,内存,I,O设备等 ,每台虚拟机可以运行独立的操作系统, 它们之间的作业互不干涉。 2(2(1系统虚拟化分类 按照对指令集虚拟方式的不同,可以将虚拟化分为3类【2011201:解释执行和 动态翻译,硬件辅助完全虚拟化,类虚拟化。 解释执行和动态翻译又被称为软件辅助虚拟化,VMM运行在最高特权级上, 虚拟机操作系统被降级运行,虚拟机的敏感指令会被VMM截获,翻译为宿主机 10 浙江大学硕十学位论文 第2帝相关技术综述 指令执行。在x86架构下,由于一些敏感无法被截获,所以需要预先对客户操作 系统指令进行二进制扫描,替换这些特殊的敏感指令。这种方式虚拟化方式代价 VTi21】 巨大,效率低下。于是硬件厂商推出了支持虚拟化的处理器新架构,比如 Intel 0。虚拟机需要访问关键资源时调用 0,虚拟机运行在非根区Ring 行在根区Ring VMX指令,使VMM获得控制权。这种方式避免了特权级压缩问题和二进制扫 描问题,大大提高了效率。同时Intel的VT-d技术重新定义了DMA架构和中断 映射架构,使得虚拟机的!,O性能提高很多。如今主流的虚拟机产品,如VMware, VirtualBox,KVM,Xen等都支持硬件辅助虚拟化来提高虚拟机性能。 类虚拟化技术通过修改客户操作系统源代码来解决x86架构的虚拟化漏洞, 同时类虚拟化优化了I,O。类虚拟化最典型的代表是Xenl221,Xen拥有一个特权 虚拟机,称为Domain0,其他的虚拟机则称为DomainU。Xen的类虚拟化I,O模 Model ,Domain 0中实现后端驱动,直接和 型称为前后端驱动模型 Split(Driver 真实物理设备交互,Domain0中的前端驱动,通过事件通道 EventChannel 和 后端驱动建立请求,回复通道,通过环形缓冲收发I,O操作描述符,具体的数据则 通过经过授权的共享内存完成。类虚拟化的I,O效率很高,性能接近真实物理机 水平。 2(2(2虚拟化集群优势 在集群中应用虚拟化技术是未来发展的趋势,尤其当前云计算发展如火如荼, 国内外各家知名公司都在积极发展自己的云平台,使得虚拟化集群技术受到更多 的重视。将虚拟化技术和集群技术结合具有很多优势g 1 提高整合和资源利用率。有统计表明,企业级服务器的利用率通常在 5,左右,95,的空余时间产生了极大的浪费。虚拟化技术允许一台服务器上运行 多台虚拟机,不同虚拟机通过合理调度充分利用硬件资源。通过这种服务器整合 技术,可以将多台服务器合并到少数台服务器上,进而大大提高了资源利用 率。 2 降低IT成本。虚拟化技术使得资源利用率提高,减少了硬件投入成本, 浙江大学硕十学位论文 第2章相关技术综述 同时相应的降低了电力、空间、冷却等投入。虚拟机易于维护,进而降低维护成 本和人力成本。 3 提高可用性。虚拟化技术以单台虚拟机为粒度进行“封装”,可以方便 的快照、保存、挂起和重启虚拟机。封装后的虚拟机可以从一台物理服务器迁移 到另外一台物理机器上,不仅简化了集群负载均衡的操作,在物理服务器故 障时 可以快速的异地重启,保证了业务的连续性。 2(2(3虚拟化集群现状 在虚拟化集群技术中,对于虚拟化技术的选择是一项重要内容。一些拥有虚 拟机产品的公司推出了基于自己虚拟化技术的云计算平台,IBM推出的“Power Cloud”基础云平台采用PowerVM虚拟机,这是为IBMPower处理器以及Power 的私有云架构,而微软的Azure采用自家的Hyper-v技术。 但对于更多的公司来说,采用开源的虚拟化技术来构件虚拟化集群可能是更 好的选择,主流的产品就是Xen和KVM。由于Xen同时支持硬件辅助虚拟化和 类虚拟化,且技术成熟,性能卓越,成为许多公司的首选,著名的亚马逊EC2弹 性计算云就是基于Xen虚拟化技术。国内许多公司的云计算架构,如阿里云,盛 大,华为等都选择基于Xen来构建虚拟化集群。正因如此,本文研究也主要基于 Xen的虚拟化集群。 2(2(4虚拟化集群的高可用性 虚拟机由于其封装性和隔离性,使得业务迁移和虚拟机重启变的更加简单和 可靠,这本身就提高了集群的可用性。但是在架构上,虚拟化集群同时存在物理 机和虚拟机,在大规模集群中,虚拟机节点的数量会很多 可能会达到上千台 , 传统的集群故障检测方法很难适应这样规模的集群。应对这种需求,许多公司都 推出了各自的虚拟化集群高可用性解决方案。 VMware HA是VMware HA集 vSphere的高可用组件,最新一代的VMware 群支持32台物理机,3000台虚拟机。集群采用主,从结构,即一台服务器为主节 12 浙江大学硕+学位论文 第2章相关技术综述 点,其余服务器为从节点。VMwareHA采用复合式故障检测方式,正常情况下 从服务器通过网络向主服务发送心跳。当主服务器在一段时间内未收到某台服务 器心跳时,会启动共享存储心跳检测,主,从服务器可以通过共享存储完成心跳检 测。这种方式使得故障检测可靠性变得非常高。VMwareHA一般需要配合 DRS Distributed VMware ResourceScheduler,分布式资源调 服务,来完成故 障业务的恢复。VMwareHA在集群规模和故障检测上都表现优异,但由于技术 EXSi 捆绑,必须配合VMwareServer。同时产品的价格昂贵,更重要的是所有技 术保密,无法根据实际需要进行定制。 Windows Hyper-V配合FailoverClustering软件可以用来配置高可用集群 1231123],但集群最多只支持16个节点,并不适合大规模虚拟化集群,同时集群在 Shared 存储上必须支持微软的ClusterVolumes,主机必须运行基于x64或Itanium 2008 架构的Windows R2系统,配置复杂度很高,而且对于很多集群来说,并不 希望宿主机运行Windows,即使虚拟机仍然可以使用Linux系统。 开源社区虽然也有相关的产品,但都不是针对大规模的虚拟化集群,业界需 要一款开源的面向大规模虚拟化集群的高可用产品。 2(3 Zookeeper介绍 本文系统――Sman 维护和同步集群被监控节点的视图。Zookeeper是Hadoop的正式子项目,它作为 一个集中式服务,能够维护配置信息,提供命名服务,提供分布式同步以及组服 务,这些服务都是各类型分布式应用所需要的。 为避免单点故障,Zookeeper本身需要多点备份,一般配置启动多台Zookeeper 这个算法是分布式一致性的重要算法,在3(2节中将会详细介绍。Zookeeper通过 Paxos算法保证了多台Zookeeper服务器之间数据保持一致性和正确性。 Zookeeper在设计和实现上提供如下保证【24】: ?顺序一致性。一个客户端的所有操作,严格按照它们的递交顺序执行。 13 浙江大学硕十学位论文 第2章相关技术综述 ??原子性。数据更新操作要么成功,要么失败,没有中间状态。 ?? 单一系统映像。对于客户端来说,无论它和哪台Zookeeper服务器连接, 都能看到完整的视图。 ??可靠性。数据在下一个更新之前,不会发生更改。 ?? 时效性。客户端看到的视图总是最新的。 翟。殳珥(1墨嚣墨口^匮 图2(1 Zookeeper性能表现【24】 图2(1展示了Zookeeper的一些性能表现,横轴表示“读操作”占所有客户 端操作的比例,纵轴表每秒操作次数,测试场景存在910个客户端,不同曲线代 表不同节点数量的Zookeeper集群。从图中可以看到,Zookeeper集群的性能在“读” 操作比例较高时表现较好,原因是“写”操作会涉及Zookeeper之间的数据同步。 同样当Zookeeper节点增多时,虽然增加了集群的可靠性,但是性能下降,这需 要在根据实际的场景做出权衡,一般Zookeeper集群节点数量不会超过7个。在 这个节点数量上,Zookeeper集群在最差情况下还是能够提供大于每秒10000次 操作,能满足大多数应用的需求。 14 第2章相关技术综述 浙江大学硕+学位论文 其提供协同服务,Yahoo的messagebroker中Zookeeper提供配置服务。本 文将 Zookeeper引入高可用服务系统,这是Zookeeper一个全新的应用场景。 2(4本章小结 本章主要对集群高可用技术和虚拟化技术进行综述。给出了集群高可用性的 定义,并对常用的集群故障检测技术做了综述。随后介绍了虚拟化技术分类,虚 拟化集群的优势以及对高可用性产生的影响,并分析虚拟化集群高可用技术现状。 的特点及其性能。 15 浙江大学硕十学位论文 第3章Smart_ZK关键技 术研究 第3章Smart_ZK关键技术研究 在具体介绍Smart―ZK高可用服务系统之前,首先介绍在设计过程中,本系 统需要着重考虑的关键技术点。这些技术点的有效性和可靠性直接决定了 Smart―ZK的最终性能。本章主要会阐述在这些关键问题上Smart―ZK采用怎样的 解决思路及其好处。 3(1集群视图的组织结构 在虚拟化集群中,视图的信息包括物理机,虚拟机以及它们的运行状态。可 能存在的情况是不同的物理机上所运行的虚拟机有重名现象,这要求视图必须能 够清楚划分虚拟机的归属情况。同时视图的组织结构必须具备可扩展性,当高可 用系统需要保证关键应用程序和关键进程的可用性时,能够将它们扩展到原有的 视图结构中,而不影响原有的设计。 通过对比各种数据结构,本文选择采用树形的结构来保存集群的视图,这种 结构解决了虚拟机重名问题,同时层次结构很清楚,而且具有良好的扩展性。 图3(1视图的组织结构 如图3(1所示,集群拓扑被抽象为一棵视图树,视图树保存在服务集群中。 每个根节点的子节点表示一台物理机,节点中保存了物理机的运行状态。物理机 16 浙江大学硕+学位论文 第3章Smart_ZK关键技术研宄 节点的子节点表示运行在它上面的虚拟机,虚拟机节点中保存了虚拟机的运行状 态。正常情况下,节点的信息显示机器运行正常。当某台物理机或者虚拟机发生 故障或者退出集群时,系统会采用一定的方式检测到这些情况,然后修改对应节 点的运行状态。视图树的修改会触发系统的监控程序,由它来定位发生故障机器。 采用这种树形结构不仅层次清楚,信息完整,同时具有良好的扩展性,典型 的场景是,当需要监控虚拟机上关键应用程序或关键进程的运行状态时,它 们的 运行状态可以保存在对应虚拟机节点的子节点中,这样视图树增长了一层,监控 范围也随之扩大一层。 3(2集群视图同步 器之间的数据的有效同步,同步过程依赖FastPaxos算法,其基本原理和Paxos 算法相同,但稍有改变。Paxos是一个分布式一致性算法,它保证了在分布式系 统中,所有节点的操作序列相同,从而达到状态一致性。Paxos有很多种具体实 现,Google 实现。Paxos算法在分布式领域具有非常重要的作用,Google在其Chubby论文【25】 中提到:目前为止所有Google知道的分布式一致性算法都是以Paxos算法为核心 的。 后,提案生效,所有的learner学习提案的内容。每台服务器在Paxos算法的不同 阶段可能处于不同的角色。 每台服务器都维护一个变量xid,称为事务号,事务号是全局一致的,它是 一个偏序的整数,而且必须保证单步递增。每当一个提案获得通过时,所有learner 17 浙江大学硕+学位论文 第3章SmarUZK关键技术 研究 最高投票轮数,v表示在第N轮投票中,acceptor投票的值。Paxos算法的作者 Leslie Lamport在他论文i261中将一个Paxos算法场景分为两个阶段: 阶段1 pid号提案的投票轮数。 说明该提案已经表决过,回复reject PID,N ;否则,判断n的大小,如果n N, 将本地的N值更新为n。如果之前没有对pid号提案进行过表决,设置本地PID 阶段2 a 如果proposer收到超过半数的promise回复后,就需要选出一个候 选值作 为投票的对象。选出候选值的方法会在下文描述,这里假设已经选定了候选值v, proposer向所有的acceptor发送accept pid,n,v 消息。 X都不相同,避免出现竞争问题。 回复reject PID,N 。 proposer收到超过半数的accepted消息后,认定提案的决议已经产生,故关 新从阶段l a 开始选举流程。 18 浙江大学硕十学位论文 第3章Smart_ZK关键技术研究 会先把accepted中的信息保存下来,等向所有acceptor学习遗漏的事务后,在学 习该保存的信息。 以上就是Paxos算法的整体思路,它保证每个提案号为pid的提案,最终选 且仅选出一个决议值V,而保证这一点的核心就是proposer在阶段2 a 阶段时 时,按照以下规则选出候选值:首先确定最大的n值,并找出在最大n值情况下 的v,如果一切流程都是按照规则来做,当存在多个最大n值时,它们对应的v 值是相同的。Leslie Lamport在它的论文中用数学方法证明了这个假设。此时 null,则说明在pid号提案中,还没有候选值,此时proposer可以任意挑选一个值 作为候选,即选择一个客户端的请求值作为候选。 Paxos两阶段的执行过程如图3(2所示。可以看到,Paxos的两阶段过程有效 的解决了集群中可能存在的数据处理不一致的情况。但是该算法有一个瑕疵,在 某些情况下会造成一个“活锁”,场景可以如下描述:proposerA在阶段l a 发 B 故回复给B 接受消息后发现3 3,4 5,说明有新一轮的投票已经被发起,故拒绝proposer的 A和B会不断的重复prepare阶段,无法进入投票阶段。这种情况在实际情况中 很少发生,但至少在理论上是一个小瑕疵。 19 浙江大学硕十学位论文 第3章Smart_ZK关键技术研究 图3(2Paxos算法流程图 浙江大学硕十学位论文 第3章Smart_ZK关键技术研究 Paxos Paxos算法在设计上避免“活锁”的情况,Fast Zookeeper采用的Fast 算法规定只存在一个proposer,所以在任意一个提案中,不会同时出现两个相互 竞争的prepare消息,这从根本上避免了这个活锁,同时简化了设计。Zookeeper Smart ZK系统将集群的视图以树的形式保存在Zookeeper服务器中,当集群 运行状态发生变化,客户端会向与之相连Zookeeper服务器发出请求,要求修视 图树对应节点的状态。这一请求首先被递交到leader处,由leader发起提案,通 过Fast Paxos算法保证,最终被一致写入所有的Zookeeper服务器中,保证视图 的可靠有效同步。 3(3多层次故障检测 虚拟化集群由于引入了虚拟化技术,集群结构和传统集群会有所不同;同时 由于每台物理机上的虚拟机数量较多,如果采用传统的故障检测方法,会由于节 点数目过于庞大而产生各种问题。本文针对虚拟化集群的特点,提出了多层次故 障检测方法。多层次的故障检测包括物理机层 PM 故障检测,虚拟机 VM 层故障检测和虚拟机操作系统层 Guest OS 故障检测。基于Xen平台的虚拟化 0 集群,Domain0是特权操作系统,本文这里指的物理机层一般也是指Domain 层。 3(3(1物理机层故障检测 物理机层的故障检测是用来确定集群中的物理机节点工作状态是否正常。集 群中节点的故障检测一般都是通过网络相互发送心跳来判断的,如何设计心跳发 送方式是故障检测效率和准确率的关键。 本文2(1(2节中介绍了几种业界常用的故障检测方式,每种方式都有自己的 适用场景,但也都存在着各自的缺点。在本文的设计中,采取了一种更加可靠的 分布式心跳检测方式,在这种方式下,物理机的客户端首先选择一台服务器并与 2l 浙江大学硕十学丝堡塞 第3章Smart_ZK关键技术研究 其建立长连接,通过这个长连接,物理机周期性的向服务集群发送心跳,以此来 表明自己的存活状态。在建立过程中,客户端需要指定连接丢失时允许的重连时 间 timeout 和连接状态发生变化时的响应函数 Connection Watch 。在连接成 功建立之后,服务器会给该指定连接分配一个会话ID SessionID ,用来唯一确 定这个连接。timeout规定了连接丢失后,客户端可以尝试重连的时间限制,如果 在timeout时间内,客户端以Session ID为标志重新与服务器建立了连接,则该连 接仍然有效,服务器认为物理机仍然存活;如果在timeout时间内客户端重连失 败,则服务器判定该连接失效,从而判定对应的物理机故障。由于服务集群存在 多台服务器,当物理机和某台服务器连接发生故障时,客户端会自动选择其余可 用的服务器进行连接,只要在timeout时间内完成,连接仍然有效。 这种分布式的心跳发送方式具有明显的优点,首先故障检测的可靠性很高, 如果造成物理机和某台服务器之间长连接断开的原因是网络闪断或网络分割,而 不是由于物理机故障,本文的客户端会自动的选择其余的服务器进行连接,重连 后物理机被认为仍然有效。这种自动切换大大降低了误报率,而且如果在部署时, 服务器分布在不同的交换机上,这种可靠性会变得更强。其次,这种方式保证每 台物理机的心跳发送互不干涉。在全对等结构设计中,当有物理节点加入或者退 出集群系统时,每个节点都要更改自己的心跳表,同时需要增加或减少发送心跳 的连接。在环形结构设计中,物理机的加入和退出会影响至少两个节点的心跳发 送。而本文的设计在物理机加入退出时,完全不影响其余节点的心跳发送。最后, 本文的设计对于大规模集群同样具有高效率和高可靠性,由于心跳检测的任 务分 布在多台服务器上,对于具有几十个节点的大规模集群,每台服务器完全可以承 受检测十几台物理机心跳的任务。 3(3(2虚拟机层故障检测 Xen提供一套可以用来监控管理运行在其上虚拟机的工具,称为xm工到271。 xm工具包含很多有用的xm命令,xm命令由python编写,可以在Xen源码树的 toos,python,xen,xm,目录中找到源代码,每一个xm命令都单独写成一个源文件。 浙江大学硕十学位论文 第3章SmartZK关键技术研究 在Xen 3(1之前,xm是唯一可以用来监控管理虚拟机的工具,但之后的版本 为不同的语言提供了不同的绑定库,如为C语言的libxen库,python语言的pyxen 库。这些库包含与Xen守护进程交互的API,方便开发者实现虚拟机管理的功能。 xm工具现在虽然不是Xen上唯一的虚拟机管理工具,但因为其配置和使用都最 为简单,所以是最佳选择。xm命令的工作原理【27】【281如图3(2所示。 驴争妒争 图3(3xm工作原理 并发送xmi到xend的一个监听实例中。xend接受请求后,可能直接处理命 令, 理。 xm工具可以用来创建、销毁虚拟机,查看虚拟机数量,运行状态等。常用 xm命令列表如表3(1所示。 浙江大学硕十学位论文 第3章Smart_ZK关键技术研究 表3(1常用xm命令解释 xm命令 作用 Xl'nIist 列出所有虚拟机 包括domain0 的名称,domain 号,运行状态 Xmcreate 根据指定配置文件启动虚拟机 xnl destroy 强制关闭一台虚拟机 xm reboot 命令一台虚拟机重新启动 xnlshutdown 正常关闭一台虚拟机 xm pause 暂停虚拟机的活动,但是不释放使用的内存资源 xm unpause 激活因为xm pause暂停的虚拟机 XmSaVe 将虚拟机状态保存到一个文件,之后可以重新载入 xm console 以控制台的形式连接到虚拟机 xm migrate 将一台虚拟机迁移到其他机器上 xm top 列出所有domain详细状态信息 对于本系统来说,关注的重点是虚拟机的实时运行状态,故xmlist和xm top list命令和xm 是最有用的两条命令。xrn top命令的结果分别如图3(4,图3(5所 示: xm 图3(4 list命令结果 24 浙江大学硕十学位论文 第3章SmartZK关键技术研究 图3(5xl'ntop命令结果 图3(4和图3(5中的虚拟机状态 SW汀E 列显示了Domain0处于运行状态 r ,所有的虚拟机都处于阻塞状态 b 。对于虚拟机来说,它的可能状态有6 种,如表3(2所示。 表3(2xm命令中虚拟机的6种状态 STATE列 含义 r 代表running,说明虚拟机运行正常。 b 代表blocked,说明虚拟机阻塞。这可能是虚拟机在等待I,O,或处 于闲置状态。 p 代表paused,虚拟机被暂停,通常是通过xmpause命令方式造成的。 处于这个状态的虚拟机不释放资源,但是不会被hypervisor调度。 S 代表shutdown,说明虚拟机被关机,或者挂起,或者正在重 启中。 C 代表crashed,说明虚拟机故障。 d 代表dying,说明虚拟机即将处于死亡状态,但还没有完全的关机或 者故障。 对应表3(2所列出的6种虚拟机状态,可以得出: 1 当STATE列显示“r’’或“b”时,虚拟机运行正常 浙江大学硕+学位论文 第3章SmartZK关键技术研究 2 当STATE列显示其余四种状态时,如果不考虑人为因素 比如手动关 闭一台虚拟机 ,认为虚拟机故障。 xm命令通过hypervisor得到虚拟机的信息准确性和实时性都很高,且不会占 用虚拟机资源,是一种十分理想的监控方式。本文系统通过周期性调用xm命令 来获取虚拟机状态,当发现虚拟机出现故障时,修改服务器上视图树信息。使用 xm命令是本文系统实现监控虚拟机运行状态的方法之一。 3(3(3虚拟机操作系统层故障检测 通过Xen提供的工具能够监控虚拟机的运行状态,但是这种方式获取的状态 比较粗略,尤其是当虚拟机采用全虚拟化 HVM 安装时,有些信息是无法捕捉 到的,比如操作系统的实际内存占用率 通过xm命令只能获取虚拟机占用的总 内存,但无法知道操作系统中内存的使用情况 。如果需要监控操作系统更加详 0之间的通信 细的运行状态,那么在客户操作系统中插桩,然后实现与Domain 是不错的解决办法。这种设计方式的好处是一旦Domain0与DomainU的信道被 打通,就可以使系统具有很强的扩展性,即当需要实现对关键程序 APP 和关 键进程 Process 进行高可用性保证时,也可以利用这条信道来传递这些关键程 序和关键进程的实时运行状态。 U和Domain0 这种设计方式的关键是找到一种合理的通讯方式,使Domain 能够可靠有效的通信。考虑到Xen上的虚拟机分为全虚拟化和类虚拟化,在实现 架构有很大的差别,这种通信方式必须能够忽略这种差异。 在充分调研了Xen的网络架构之后,本文设计了一种基于Xen网桥的通信方 式来连接Domain0和DomainU。虚拟化技术可以使多台虚拟机“同时”使用一 个物理设备,对于每个虚拟机来说,都认为自己独占所有物理资源。虚拟机监控 器的工作就是要制造这样一种假象。对于网络设备,所有的包都通过实际的物理 设备进行收发,虚拟机监控器必须能够对这些包进行正确的区分,使得每个虚拟 0中存在一 机之间的网络通信互不干扰。Xen采用了一种网桥的技术,在Domain 个网桥,它的功能类似于交换机,数据包通过网桥后分发至各个虚拟机中。多个 浙江大学硕+学位论文 第3章Smart_Zg关键技术研究 物理网卡可以同时连接到同一网桥中,Xen中网桥的结构如图3(1所示 图3(6Xen网桥架构 如图3(6所示,物理网卡NICI和NIC2同时连接在网桥上,同时Xen在网 桥上为每一块虚拟网卡都配置了一个后端接入点,虚拟网卡通过后端接入点和网 桥相连。这个架构无论是全虚化安装还是类虚拟化安装都是相同的。虚拟机的数 据通过虚拟网卡发送到网桥上的vif后端,在经由网桥达到网卡,从而向外发送 数据。当外部数据到达时,网桥负责分发数据到正确的虚拟机中。 Xen允许添加多个虚拟网桥,当数据传输只发生在Domain0和DomainU之 间,而不需要向外传输数据时,并不需要将物理机网卡绑定到网桥上。也就是说 数据只会通过网桥,而不涉及物理网卡的操作。网桥上的数据时通过Xen的共享 内存机制来完成的,所以这种设计虽然通过网络完成,但实际上是快速的内 存数 据共享,效率很高。 这种基于虚拟网桥的通信方式满足功能需求,本文采取的设计描述如下: 1 新建虚拟网桥xenbrl,专门用于Domain0和Domain U之间交互。 27 浙江大学硕十学位论文 第3章Smart―ZK关键技术研究 2 设置xenbrl为私有网段,如192(168(X(X,并开启DHCP服务。 3 修改虚拟机配置,为其多分配一块虚拟网卡,绑定到xenbrl网桥上, 并设置IP获取方式为DHCP。 4 虚拟机中安装一个心跳程序,用于发送虚拟机心跳。 5 Domain 0中的客户端负责监听虚拟机心跳。 6 虚拟机中的心跳程序通过xenbrl和Domain0中的心跳接收程序建立连 接,发送,C,,gJb。 图3(7虚拟机心跳通路设计 图3(7中红色实线箭头表示集群业务网卡的网络收发,而黑色虚线箭头表示 Domain0和Domain U之间的通信,可以看到,这样的设计保证了心跳发送 不影 响业务网络的工作。 与使用xm工具的方式相比,这种设计的扩展性更好,获取的数据也更详细, 但同时增加了配置的复杂度。所以本文将这两种方式设置为可配置,管理员可以 根据实际应用场景选择一种方式。 28 浙江大学硕十学位论文 第3章SmartZK关键技术研究 3(4集群状态实时监控 当集群的状态发生变化时,视图树会被修改,比如有新的物理机加入集群, 视图树中会增加一个对应的物理机节点,或者有某台物理机上的
本文档为【Smart ZK:面向虚拟化集群的高可用服务系统】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_105949
暂无简介~
格式:doc
大小:97KB
软件:Word
页数:0
分类:工学
上传时间:2017-11-25
浏览量:5