【虚拟化实战】Cluster设计之三HA

作者:范军 (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

vSphereAvailability Guide

VMware vSphere High Availability5.0  Deployment Best Practices

















本文转自frankfan751CTO博客,原文链接:http://blog.51cto.com/frankfan/1329945 ,如需转载请自行联系原作者

上一篇:【虚拟化实战】VM设计之一vCPU


下一篇:JavaAgent-SandBox