作者:範軍 (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