作者:范军 (Frank Fan) 新浪微博:@frankfan7
一 为什么使用HA
高可用性是虚拟化平台最突出的特性之一,设置和维护非常简单,技术非常成熟。对于一些非常关键的应用,可能对容灾的要求特别高,可以考虑采用基于应用层的HA,或者操作系统层的HA,比如MSCS。虚拟层的HA是在底层架构上实现的高可用性,在恢复时间可接受的情况下是非常好的选择。
相对应用层和操作系统层HA而言,vSphere HA以较低的成本实现了整个集群的高可用性,同时实施和维护都十分的简单。无需在应用或者VM上作任何设置或改动。
二 HA是如何工作的?
HA Agent
vSphere5.0之后的版本对架构作了很多的改动。摒弃了原来Cluster中的Primary Node和Secondary Nodes的概念。并且引入了Master HAagent 和 Slave HA Agent的概念。通常情况下一个Cluster中仅有一个Master HA Agent。HA Agent有以下的功能:
-与vCenter互相交换信息
-Master HA Agent监控VM的状态,在其出现问题时重启
-Slave HA Agent把VM的状态信息传递给Master HA Agent, 并且在MasterAgent 的指令下重启VM
-检测VM上运行的应用的状态
当Master HA所在的主机出现问题时,其他主机上的Agent开始参与竞选成为MasterHA, 连接DataStore数目最多的主机会成为Master。如果两台主机DataStore数目相同,Managed Object Id较高的主机会成为Master。
HeartBeating
用来判断主机是否仍然正常运行。
Network Heartbeating
每台Slave都和Master主机互相发送Heartbeat信息。
Datastore Heartbeating
有的情况下Management网络中断之后,如果VM还能够继续访问其他网络和存储,那么就无需对被隔离主机上的VM采取响应措施。这是就需要检测Datastore Heartbeating来进一步验证。
对于Converged Infrastructure,比如Cisco UCS等系统,Datastore Heartbeating能起的作用不大,因为管理网络和存储共用物理链路,在管理网络中断的情况下,存储很可能也无法访问了。
主机隔离
检测: 在某个主机无法与Management Network通讯时,也就是ping isolation Address失败后,该主机会被认为处于隔离状态。 Management Network的网关缺省作为isolationAddress。 为了增加可靠性和避免误判,可以设置多个isolationAddress
响应:
下面的分析帮助你在确认主机处于隔离状态后,选择合适的响应动作
主机可以访问VM DataStore的可能性 |
可以访问VM网络的可能性 |
建议的响应动作 |
理由 |
可能 |
Leave Powered On |
VM可能仍在正常运行 |
|
可能 |
不可能 |
Leave Powered On 或 Shut Down |
因为VM仍然可以访问DataStore,选择shutdown可以把该VM在其他主机上重启 |
不可能 |
可能 |
Power Off |
避免两个VM拷贝同时运行的情况。尤其是使用iSCSI或NFS的情况下。 |
以上仅仅是建议参考,Leave Powered On适用于大多数的情况。因为虚拟化设计大多考虑了网络的冗余,出现HostIsolation本来就是很少见的情况。
在使用iSCSI或NFS的情况下,如果你估计管理网络中断的同时,可能存储网络也会中断。考虑使用PowerOff. 在主机无法访问存储时,HAAgent会在其他主机上启动VM的第二个Instance.而此时第一个Instance仍然在被隔离的主机上运行,当所有网络正常恢复时,这可能会造成很麻烦的情况。因为同一个VM有两个Instance同时运行。
Admission Control
用来保证在主机出问题时,Cluster有充足的资源供问题主机上的VM使用。
有以下策略可供选择:
1 Define failover capacity bystatic number of hosts
2 Use dedicated failover hosts
3 Define failover capacity byreserving a percentage of the cluster
resources
第三种方式,也就是用百分比方式定义Failover Capacity,适用于大多数情况。最大可能的高效使用资源,从而可以运行较多的VM。
三基本设计原则
-
HA策略中优先启动vCenter以及较重要的VM。比如DNS,AD,MS SQL等。同时需要注意HA并不能完全保证VM重启的顺序。如果VM之间有复杂的依赖关系以及严格的启动顺利,可以考虑VMware SRM。
-
如果维护可能造成Management Network的中断,考虑暂时屏蔽HA,避免触发HA的隔离响应措施
-
最好每台主机有一致的CPU和RAM配置。如果一个Cluster中某个主机有较高的配置,HA的策略需要保证有充足的资源来保证运行该主机的VM
-
虽然多个Cluster可以共享同一个DataStore,但最好还是为每个Cluster分配专属的Datastore。这样可以简化管理,同时在某主机被隔离后,HA可以较容易的重启VM。
-
一定注意Management Network的冗余。 因为HA的Network Heartbeating依赖于ManagementNetwork
-
在Stretched Cluster情况下,也就是Cluster中的主机和存储分布在两个间隔较远的数据中心,建议最少设置4个HeartbeatDatastore. 每个数据中心设置2个。
参考:
VMware vSphere 5.1 ClusteringDeepdive by Duncan Epping
HAArchitecture Decision by Josh Odgers
VMware vSphere High Availability5.0 Deployment Best Practices