XenServer架构之HA概述

一、XenServer HA概述

XenServer HA是一套全自动功能设计,规划,安全地恢复出现问题的XenServe 主机上的虚拟机的功能组件。

启用 HA 后,XenServer 将持续监视池中主机的运行状况。如果当前 VM 主机发生故障,HA 机制会自动将受保护的 VM 移动到一台运行状况良好的主机上。此外,如果发生故障的主机是Pool Master,HA 会自动选择另一台主机来接管Pool Master的角色,以便XenServer 资源池能够继续正常的工作。

XenServer HA通过多个检测信号机制来定期检查主机。这些检测信号使用存储接口(至检测信号 SR)和网络接口(通过管理接口)进行信号的检测和传递。这两种检测信号路由都可以是多宿(多连接)的,以防止产生误报,从而进一步提高可靠性。

要实现XenServer HA功能,只要满足以下几个条件:

(1)虚拟机必须置于共享存储中,例如iSCSI、FC SAN,NFS;

(2)需要两台以上的XenServer,并且设置了资源池,Citrix最佳实践建议使用3台XenServer及以上时设置HA;

(3)所有XenServer有静态管理IP地址;

(4)购买的XenServer版本需要支持HA。

下图显示了在启用HA的资源池中,前后两个主机之间的网络链路发生故障后,虚拟机所进行的自动迁移过程。

当启用HA时,池中的所有主机:

  • 通过网络定期交换心跳消息;
  • 发送心跳到共享存储设备;
  • 不断尝试获取共享存储的“Master lock”权限。

HA设计就是为了避免一台物理主机损坏出现单点故障,因此需要它消除在出现单点故障后尽可能的不影响资源池的运行和上面虚拟机的运行。

  • 首先需要找出这些虚拟机是否处在最大的全连接设置状态(以下简称“liveset”状态);
  • 如果这些虚拟机不是在最大的全连接状态,那么这些虚拟机就会根据“受防护”的策略进行相应操作(即通过虚拟机管理程序重启);
  • 选择Master使用“Master lock”进行锁管理;
  • 重新启动所有在HA保护下丢失连接的虚拟机。

通过HA可以更快的恢复资源池运行,因为资源池一旦出现故障,资源池剩余的池成员可能无法应付任何更多的故障,采用HA在故障产生的第一时间进行自动恢复,可以保证有充足的资源应对随时可能下一次故障。

HA绝不能违反以下安全规则:

  • 在任何时候必须有一个而且最多只有一个Master。这是因为需要Master来保护VM,同时控制磁盘锁。
  • 在任何时候一个特定的虚拟机必须有一个特定的实例。这是因为启动同一个VM两次会导致严重的文件系统损坏或崩溃。

然而HA更加重要的地方还在下面的这些选项里:

  • 快速检测故障;
  • 在故障检测中尽量减少误报的数量;
  • 使故障处理逻辑尽可能可靠。

当试图在同一时间既需要快速精确又需要安全可靠的时候,实施起来的困难就应运而生了。

在描述本文中我们使用下面的术语:

  • fencing:又称I/O防护,指的是从网络和存储中隔离一个主机的行为。一旦主机已经被隔离起来,其上任何虚拟机运行就不可能被第三方检测到并因此而产生相应操作。这意味着这些虚拟机可以安全的在另一个节点上重新启动起来运行而不违反安全规则,并在两个主机上同时运行相同的虚拟机。
  • 心跳:定期根据预先安排的时间间隔与其他主机交换状态更新。心跳正常的消息主要表明主机还处于活动状态,并且I/O路径均工作正常。
  • 状态文件:共享磁盘(也称为“仲裁磁盘”)的“心跳”SR被映射为一个块设备并链接到每个主机的Dom 0当作共享磁盘,并作为心跳消息的通道,也可以作为一个资源池的主锁定块磁盘,以防止多台主机违反安全规则(其中一种比较危险的情况也被称为“裂脑”)。
  • 管理网络:这是Xen API的XML / RPC请求流量,也可用于发送心跳消息网络。
  • liveset:每个主机视图包含在由主机认为活动状态即响应XenAPI命令运行并在资源池中被Master标记为resident_on的虚拟机的子集。Liveset子集上的虚拟机被视为是运行在一个安全的主机上的,假如在当主机B出现故障时,主机B此时已经被隔离起来,那么主机B上的Liveset子集虚拟机在不违反任何的安全规则的前提下就需要采取恢复措施(如重新启动虚拟机)。
  • 正确共享SR:其中SR有shared = true的SR属性;并根据PBD连接到池中的每台主机;而其中每个PBD相关的已currently_attached的字段设置为true。如果VM其磁盘起正确的共享SR上,那么如果主机的内存和网络允许的情况下,允许在任何主机重新启动。
  • 正确共享网络:有一个PIF将其连接到池中的每个主机并启用该网络;而其中每个的PIF已将currently_attached的字段设置为true。一个VM将主机的VIF连接到适当的主机共享网络,在主机内存和存储允许的情况下允许在任何主机重新启动。
  • agile:一个虚拟机的表示状态,即表示虚拟机连接到正确的共享出错率和正确的共享网络中。
  • unprotected(无保护):未受保护的虚拟机,其虚拟机的配置字段ha_always_run设置为false,将永远不会在主机故障的情况下受到HA的保护而重新启动。
  • best-effort:处于该状态的虚拟机,在主机出现故障的时候竟可能的在该台主机上进行重新启动,不受HA的策略操作。一个best-effort的虚拟机的配置字段ha_always_run设置为true,ha_restart_priority设置为best-effort。一个best-effort的虚拟机如果处于(生存法则1)那么在主机出现故障时,虚拟机将仅被重新启动一次;如果一个best-effort的虚拟机处于(生存法则2)那么在主机出现故障时,虚拟机将会立即重新启动,直到虚拟机重新成功启动为止。
  • protected:受HA保护的虚拟机。高虚拟机的配置字段ha_always_run设定为true,且虚拟机配置字段ha_restart_priority没有设置为best-effort。
  • 生存法则1:该生存法则指在宿主主机生存,因为这些虚拟机无法通过网络获取状态文件。这是xhad守护进程的正常状态。
  • 生存法则2:描述中的所有主机都丢去了访问状态文件的连接或权利,但主机仍然处于活动状态,并且这些主机都可以在网络上看到对方,即通过网络心跳可以检测到对方的回复。在这种状态下任何进一步的故障都会导致所有节点进行自动隔离,即断开于网路心跳和存储心跳的检测和连接。这种状态是为了应付存储状态文件的存储服务暂时失效的情况。

所有I/O用于监控主机的运行状况(即基于存储和基于网络的心跳)是相互冗余的路径,使得她在单一硬件故障下也正常生存(例如一个开关偶然关掉或拔出电缆)。这个时候根据其中一方心跳的信息维持相应的生存法则,并进行相应报警告知管理员进行修复,以确保环境在不必要的条件下生效HA的安全规则,从而迁移虚拟机并重启。

同时管理程序监视机制将能保证一旦预先安排的时间段之内通信失效节点的隔离。

如果一台虚拟机被标记为agile(受保护的),那么该台虚拟机就是完全灵活的,即可以在任何主机上运行。但是其任何形式的附加约束是无法在其他主机上被重现的,比如指定``CPU预留‘‘。

资源池假定为对同质CPU的类型和存在的VT / SVM支持(也称为“HVM”)。如果一个池使用--force标志不均匀的主机,这等于是创建了额外的限制,那么在主机故障的时候,有可能导致HA切换策略操作不生效。

同时XenServer 会动态维护故障转移方案,该方案详细说明了如果池中的一组主机在任意给定时间出现故障时应执行的操作。其中一个重要概念是允许的主机故障数,该值作为 HA 配置的一部分进行定义。该值确定在不丢失任何服务的情况下所允许的故障数。例如,如果资源池包括 16 台主机,而允许的故障数的设置为 3,则池将计算故障转移方案,该方案允许任意 3 台主机出现故障,并仍然能够在其他主机上重新启动 VM。如果找不到方案,则会认为该池使用过量。方案根据 VM 生命周期操作和移动动态地进行重新计算。如果所做的更改(例如将新 VM 添加到池)导致池使用过量,则会发送警报(通过 XenCenter 或电子邮件)。

同时在进行虚拟机的重启和迁移的时候,将永远作出关闭或挂起“低”优先级的虚拟机,以保证“较高的”优先级的虚拟机的生存。在设置HA的时候,虚拟机需要分配一个重新启动优先级和一个标志状态,以指示是否应该受到保护以及受到保护的级别。

启用HA时,尽一切努力保护的虚拟机。如果服务器出现故障运行的虚拟机将迁移到另一台服务器上启动,根据优先级规定,任何受保护的虚拟机将自动启动或停止。重新启动优先级的说明:

对于那些重要的虚拟机以及处于共存存储上的虚拟机应给予重新启动优先级0。所有次要的虚拟机应分配一个优先级1或2优先级。重新启动优先级是确定在发生故障时,XenServer尝试启动虚拟机的顺序。虚拟机重新启动优先级0,1,2或3,这样可以保证服务器故障的时候,按照预先安排好的既定数量的有序重新启动虚拟机。

同时XenServer的HA需要特定的容量来保证重新启动计划的成功。如果资源池遇到服务器故障并进入HA切换状态的容量不足以全部切换完毕,剩下受保护的虚拟机将不再保证重新启动。如果这个条件到达时,系统将生成警报。如果一个受保护的虚拟机在服务器发生故障的时候无法重新启动(例如,资源池故障发生时容量已使用完毕,这时再次故障),启动此虚拟机的进一步尝试将根据资源池的容量变化的状态来进行。这意味着,没有资源的情况下HA不会生效,并且切换计划会一直进行尝试。

还应该说明的是,一旦启用HA,资源池是不可能重新配置管理网络以及用于存储心跳的SR的。同时在启用HA的时候,还存在一个HA配置数据库,该数据库配置为“心跳”的所有更新写入“心跳”SR,以保证主机失败时,虚拟机配置更改不会丢失。

时间: 2024-10-30 00:35:29

XenServer架构之HA概述的相关文章

cloudstack4.6 + xenserver架构云环境部署

cloudstack4.6 + xenserver架构云环境部署 一.提供简单类似cloudstack架构如下(仅供简单参考): 二.安装cloudstack4.6+xenserver6.5 系统环境:centos6.5_64 1.修改各主机相应静态ip地址 2.修改hostname vi /etc/sysconfig/network 3.添加dns记录 vi /etc/hosts 192.168.5.8cs01.esc.com 192.168.5.1xen01.esc.com 192.168.

XenServer架构之XAPI

一.XAPI对资源池的管理 作为XenServer的管理工具集,XAPI管理XenServer的主机,网络和存储.不管是OpenStack还是CloudStack,如果使用XenServer作为虚拟化底层,其对XenServer的调用必然使用XAPI.真正意义上的XAPI在XenServer中主要提供XenCenter以及资源池中各个XenServer主机的通信的接口. 首先,资源池中的所有XenServer主机的操作请求都是通过XAPI传递给Dom0的,同时在池中的所有XenServer主机间

MongoDB自学日记3——架构及HA

在对mongoDB的操作有了一定基础后,终于可以扯扯HA和架构这两个高大上的概念了.在这之前当然还得弄清楚mongoDB的Key feature:Sharding. 1. Sharding Shard从逻辑上来说就是整个数据的一个子集,从物理来说就是管理这一子集的服务器.一个分片可以包含多台服务器.若一个分片包含多台服务器则每台服务器都有一份完全相同的数据子集副本(Replica set). 分片是MongoDB强调的一个Feature.分片的目的就在于完成自动化集群运维.mongoDB clu

AWS 架构最佳实践概述(十一)

AWS 架构最佳实践 AWS合理架构的框架支柱 安全性 - 保护并监控系统 能够保护信息.系统和资产 通过风险评估和缓解策略 可靠性 - 从故障中恢复并减少中断 从基础设施或服务故障中恢复 动态获取计算资源以满足需求 减少配置错误和暂时性网络问题来减少中断 绩效 - 谨慎使用资源 高效的使用计算资源以满足系统需求 在需求改变和技术发展时依旧保持效率 成本优化 - 消除不必要的费用 减少不必要的成本和次优资源 卓越操作 合理架构设计原则 停止猜想容量需求 - 传统环境存在浪费 在生产层面测试系统

Linux架构之HA配置

简介 通过安装该Linux-HA软件,可以实现Linux双机系统的高可用性解决方案,实现双机系统的热备份,并能够做到双机之间的无缝切换,从而对外 提供稳定可靠的服务,最终实现系统高性能RAS(reliability, availability, and serviceability). 实验环境 这里使用heartbeat来做HA集群,并且把nginx服务作为HA对应的服务. Chumjtest01 eth0 172.31.24.199  eth0:1   192.168.1.109 VIP: 

XenServer架构之XAPI的调用流程

XAPI 调用是使用XML-RPC协议通过网络发送到安装有XenServer 的主机上.XAPI对象的引用不保证对象的永久标识符,引用不允许对象进行相等比较.对同一物体的两个引用,不保证是文本相同的.对象UUID(Universally UniqueIdentifier,通用唯一识别码)的目的是永久的名字,客户可以通过比较对象的UUID 字符串测试平等.XenServer的XAPI 提供UUID 和不透明引用之间的转换机制,每个类都包含有一个UUID 字段. XenServer API 是基于X

OpenStack之路: OpenStack架构设计指南 - 概述(摘录并翻译)

OpenStack是在云技术淘金过程中的领导者,作为一个组织,让形形色色的企业发现了可以以更大的灵活性和速度,向市场推出自助服务的云计算及基础架构即服务(IaaS)产品.然而,为了能够真正享受到这些好处,云必须通过适当的架构设计. 一个良好的云计算架构,应该是一个稳定的IT环境,可以提供方便访问所需的资源,基于使用的计算费用,按需求增加额外的容量,灾难恢复和安全的环境:一个良好架构的云计算平台不能奇迹般地自身建成的.这需要仔细考虑多种因素,包括技术和非技术的. 目前没有单一的架构是"非常合适&q

《系统架构师》——概述

考试大纲: 考试时间: 综合知识考题分布: Gantt(甘特图)特点:能清晰的描述每个任务从何时开始,到何时结束,以及任务之间的并行关系.但是他不能清晰的反应出各任务的依赖关系. Pert(项目计划评审技术图) 特点:不仅给出了每个任务的开始时间.结束时间和完成该任务所需的时间,还给出了任务之间的关系.在PERT图中,关键路径是图中最长的一条路径.而松弛时间则反映了完成某些任务时可以推迟其开始时间或延长其所需完成的事件.但是PERT图不能反应任务之间的并行关系. 总结一下,Gantt图适合描述彼

[Wolfgang Mauerer] 深入linux 内核架构 第一章 概述

作为Linux开发爱好者,从事linux 开发有两年多时间.做过bsp移植,熟悉u-boot代码执行流程:看过几遍<linux 设备驱动程序开发>,分析过kernel启动流程,写过驱动,分析过网卡驱动,制作过文件系统.但,仍无法对kernel有全局认识.为了更清晰的展示kernel概念,结构,实现,以思维导图的形式记录关键点,以便以记忆.增强理解.该部分是总体描述,大致介绍内核及其结构.同时也希望其能够帮助对linux 内核感兴趣朋友. 原文地址:https://www.cnblogs.com