HA概念

【什麼是HA】
HA的英文是High Availability,高可用性。從字面上的意思就是一種讓服務中斷儘可能少的技術。VMware的HA和微軟的MSCS(Win2008以後改稱Failover Clustering)類似,都是將多臺主機組建成一個故障轉移集羣(Cluster),運行在集羣上的服務(或VM)不會因爲單臺主機的故障而停止。
用一個圖來簡單說明HA的工作原理:圖中橙色的主機ESXi01宕機了,其上的2臺虛擬機VM1和VM2就根據HA的調度被ESXi-02和ESXi-03這2臺主機接管,並重啓運行起來。在這裏插入圖片描述
但是要注意的是,HA(無論是VMware的HA還是MSCS)不是通常意義上的完全不中斷服務的高可用性,HA只是一種自動的故障切換機制,當某一主機發生故障時,服務或VM(就配置了MSCS的Hyper-V來看,VM其實也被看作是一個服務)自動到另外的可用的主機上重啓。這其實是一箇中斷然後重啓的過程。就VM來說,看上去就好像是一臺服務器突然被拔掉了電源線,然後又重新加電開機。這個故障然後重啓的過程其實是比較長的,根據不同的VM而不同,少則1-2分鐘,多的則可能達到5-6分鐘。如果運行在一臺缺乏資源的的主機上,這個時間可能更長。

【創建HA的前提】
一個通用的HA的集羣通常有這麼幾個必要的條件組成:

  • 2臺或者更多臺主機
  • 這些主機共享一個外部存儲
  • VM是運行在共享存儲上的
  • 主機上至少有2個以上的網卡,其中一個需要負責傳遞“心跳”信號。
    此外,要成功配置VMware HA,還必須具備這麼幾個必要條件:
    • 必須有vCenter Server(雖然沒有vCenter HA也能發揮作用,但是創建Cluster的時候必須有vCenter的參與)
    • 所有Host都必須有相同的vSwitch配置

特別要注意的是,對於ESX 4.x或之前版本,DNS是建立HA必要前提,所有Host都必須能夠正確的解析其他node的DNS名字,將主機加入到一個集羣也必須用其FQDN名。但是從vSphere 5開始,這已經不是必要的了,IP地址被直接用作HA集羣的通信,這樣減少了HA的依賴性,加快了HA的響應速度。
但是,因爲VMware vSphere 5的其他一些服務和組件仍然需要DNS,使用FQDN雖然仍然是推薦做法。

【HA的組成部分】
vSphere 5的HA的組件有以下三個:

  1. FDM
  2. hostd
  3. vCenter

在這裏插入圖片描述
FDM是Fault Domain Manager的縮寫,它的前身在ESX4叫作AAM,是用來管理HA的最重要的一個組件。它負責cluster的心跳、主機之間的通信,和vCenter的通信、協調虛擬機的位置、調度虛擬機的重啓、記錄日誌等等。

hostd負責監控直接和虛擬機打交道,例如讓虛擬機開機、監控虛擬機的狀態等。FDM需要hostd的幫助來完成對虛擬機的操作(例如開機)。簡而言之,FDM依賴hostd,如果hostd失效了,FDM也會暫停工作。

vCenter是企業中虛擬架構的集中管理平臺,HA雖然不依賴它運轉,但是在組建HA cluster的時候必須通過vCenter來發起。它的主要作用是,在主機上安裝HA的Agent(指FDM和hostd agent),在Cluster配置更改的時候通知各主機。

【Master和Slave】
ESX4的時候,節點分成Primary和Secondary,最先加入cluster的5個節點成爲Primary,並各自存有一份AAM Database。

vSphere 5對此進行了簡化。現在不再有Primary和Secondary的概念了,取而代之的是Master和Slave。一個Cluster中只有一臺Master,其餘都是Slave。

Master的作用是管理整個集羣,作爲集羣的主要管理者,它監控虛擬機的運行狀態,判斷某一個主機是否宕機,它監控每個VM的位置,並判斷VM是否需要在其他主機上重啓。對於一個集羣來說,Master是其上所有虛擬機的“主人”。
在哪裏可以看出主機是否Master?參見下圖
在這裏插入圖片描述
沒有Master的集羣就會羣龍無首,羣龍無首的集羣就fail了。

當Master失效時怎麼辦?集羣不能沒有Master,因此Master的選舉會馬上被觸發。

【Master的選舉】
選舉會在以下情況被觸發:

  1. HA創建時;
  2. Master宕機;
  3. Master處於isolated或者集羣出現了partitioned狀態;
  4. Master被置於維護狀態或Standby狀態;
  5. 集羣被重新配置時;
  6. Master和vCenter失去了聯繫;

選舉需要15秒時間。選舉通過UDP協議(端口8182)進行。
選舉的規則是:擁有最多的datastore的主機當選。如果主機擁有的datastore一樣多,那麼Managed Objective ID號最大的那臺主機當選。

(注:這裏的最大不是數值最大,而是從左向右比較依次比較每一位上的數字的大小,例如99就比100大,因爲第一位的數字首先比較,9大於1)
【Master伸張其主權】

當選後,新的master會伸張其主人的權力,試圖接管所有datastore。

Q: 如何接管?(或者說怎樣纔算接管了datastore)
A: 通過鎖定(lock)一個文件的方式,這個文件存在每個datastore上,名字叫“protectedlist”

該文件的位置是:
//.vSphere-HA//protectedlist
這個文件裏面存放的是受HA保護的VM列表。
若Master壞掉,則其lock會過期,新當選的master就可以接管這個文件,並重新上鎖。
Master還負責監控Slave的狀態,如果發現slave不響應其心跳,則會判斷是否要重啓slave上的虛擬機。
Slave之間是不相互通信的,除了選舉Master的時候。

(注:以上內容均來自於http://blog.51cto.com/delxu/717516,個人覺得寫得不錯,方便自己記憶和學習)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章