【转】 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,以保证主机失败时,虚拟机配置更改不会丢失。
本文出自 “我拿流年乱了浮生” 博客,请务必保留此出处http://tasnrh.blog.51cto.com/4141731/1786872
【转】 XenServer架构之HA概述的更多相关文章
- 搭建一套自己实用的.net架构(1)【概述】
入园很久,一直默默的潜水,近来得空想写点什么. 思前想后,那就把自己平时没事干自己摘抄.引用.瞎写的一些东西写出来.帮助自己巩固一下,顺便请高手们指点一二. 我本人很懒 ,一些代码就是直接复制别人的劳 ...
- Magento 架构基础知识概述
Megento 架构基础知识概述 Magento整合了面向对象的基于PHP的应用程序的核心架构原则.这些一般原则的综合讨论既有在线的,也有印刷形式.以下讨论主要关注这些主题如何直接应用于Magento ...
- 阿里P8架构师深度概述分布式架构
简介 作为一名架构师,我们要专业,要能看懂代码,及时光着臂膀去机房,也能独挡一面!及时同事搞不定问题,或者撂挑子,你也能给老大一个坚定的眼神:不怕,有我在!还能在会议室上滔滔不绝,如若无人,让不懂技术 ...
- ClickHouse(02)ClickHouse架构设计介绍概述与ClickHouse数据分片设计
ClickHouse核心架构设计是怎么样的?ClickHouse核心架构模块分为两个部分:ClickHouse执行过程架构和ClickHouse数据存储架构,下面分别详细介绍. ClickHouse执 ...
- 【转】XenServer架构之XAPI
一.XAPI对资源池的管理 作为XenServer的管理工具集,XAPI管理XenServer的主机,网络和存储.不管是OpenStack还是CloudStack,如果使用XenServer作为虚拟化 ...
- HDFS2.0架构以及HA详解
HDFS2.0概述 一背景,Hadoop1.0中HDFS和MapReduce在高可用,扩展性等方面存在问题 HDFS存在问题,1,NameNode单点故障,难以应用于在线场景.2,NameNod ...
- .Net 大型分布式基础服务架构横向演变概述
一. 业务背景 构建具备高可用,高扩展性,高性能,能承载高并发,大流量的分布式电子商务平台,支持用户,订单,采购,物流,配送,财务等多个项目的协作,便于后续运营报表,分析,便于运维及监控. 二. 基础 ...
- Hadoop_HDFS架构和HA机制
Hadoop学习笔记总结 01.HDFS架构 1. NameNode和ResourceManager NameNode负责HDFS,从节点是DataNode:ResourceManager负责MapR ...
- .Net 大型分布式基础服务架构横向演变概述(转)
一. 业务背景 构建具备高可用,高扩展性,高性能,能承载高并发,大流量的分布式电子商务平台,支持用户,订单,采购,物流,配送,财务等多个项目的协作,便于后续运营报表,分析,便于运维及监控. 二. 基础 ...
随机推荐
- 2.Kali安装VMware tools(详细+异常处理)
dnt@MT:~$ cd /media/cdrom0 进入光驱内 dnt@MT:/media/cdrom0$ ls 查看当前目录下有哪些内容manifest.txt run_upgrader.sh V ...
- Windows 批处理
1. 引言 在Windows上,经常需要做一些重复的工作.比如在不同的工作场所需要切换不同的ip:比如有时需要对一堆文件按1~n进行重命名:再比如我们需要删除一大堆文件,这些文件名字都差不多, ...
- EF Core 数据库迁移(Migration)
工具与环境介绍 1.开发环境为vs 2015 2.mysql EF Core支持采用 Pomelo.EntityFrameworkCore.MySql 源代码地址(https://github. ...
- C# XML转JSON,不引用第三方JSON.NET类库
应用场景:需要调用第三方接口(返回XML)数据,然后供自己多个系统使用(涉及跨域,使用JSONP) 代理:调用接口(把XML转换为JSONP解决跨域问题) B/S应用系统:调用代理返回的数据进行UI显 ...
- grunt自定义任务——合并压缩css和js
npm文档:www.npmjs.com grunt基础教程:http://www.gruntjs.net/docs/getting-started/ http://www.w3cplus.com/to ...
- Discuz X3.2 网站快照被劫持的解决方法
附上另一个人的解决方法:http://www.discuz.net/thread-3549930-3-1.html 问题如下: 快照被劫持,无论怎么申诉,怎么更新快照,都无法消除此问题,第一次打开网站 ...
- 密码学应用(DES,AES, MD5, SHA1, RSA, Salt, Pkcs8)
目录 一.数据加密标准 - Data Encryption Standard(DES) 二.高级加密标准 - Advanced Encryption Standard(AES) 三.消息摘要算法第五版 ...
- Conversations is being developed
Development Conversations is being developed on GitHub by a team of volunteers under the lead of pro ...
- Basic Tutorials of Redis(1) - Install And Configure Redis
Nowaday, Redis became more and more popular , many projects use it in the cache module and the store ...
- 在Wcf中应用ProtoBuf替代默认的序列化器
Google的ProtoBuf序列化器性能的牛逼已经有目共睹了,可以把它应用到Socket通讯,队列,Wcf中,身为dotnet程序员一边期待着不久后Grpc对dotnet core的支持更期待着Wc ...