Windows Server中的故障轉移羣集的實現機制

    Windows服務器故障轉移集羣(Windows Server Failover Cluster,簡稱WSFC)使用仲裁投票(Quorum Voting)決定集羣的健康狀況,或使故障自動轉移,或使集羣離線。當集羣中的節點發生故障時,會由其他節點接手繼續提供服務,不過,當節點之間通信出現問題,或大多數節點發生故障時,集羣就會停止服務。可是集羣可以容忍多少個結點發生故障呢?這要由仲裁配置(Quorum Configuration)決定,仲裁配置使用多數(Majority)原則,只要集羣中健康運行的節點數量達到仲裁規定的數量(多數結點投贊成票),集羣就會繼續提供服務,否則集羣就停止提供服務。在停止提供服務期間,正常節點持續監控故障節點是否恢復正常,一旦正常節點的數量恢復到仲裁規定的數量,集羣就恢復正常,繼續提供服務。仲裁投票默認是啓用的(Cluster Manged Voting:Enable)。

 

一、仲裁模式

    仲裁模式是在WSFC 集羣級別配置的,規定仲裁投票的方法,默認情況下,故障轉移集羣管理器會基於集羣節點的數量,自動推薦一個仲裁模式。仲裁配置影響集羣的可用性,在集羣中,重組的集羣節點必須在線,否則集羣將由於仲裁不足而必須停止服務。

1、術語解釋

仲裁(Quorum):法定數量,預先規定具有投票權的節點或見證(Witness)的數量;

仲裁投票(Quorum Voting):法定數量的節點和見證進行投票,如果多數投贊成票,那麼判斷集羣處於健康狀態;

投票節點(Voting Node):在集羣中,擁有投票權的節點稱作投票節點,如果投票節點投贊成票,代表該節點認爲集羣是健康的;但是,單個節點不能決定集羣整體的健康狀態。

投票見證(Voting Witness):除了投票節點能夠進行投票之外,共享的 File 和 Disk 也能投票,稱作投票見證,共享的File 投票見證,稱作文件共享見證(File Share Witness);共享的Disk 投票見證,稱作硬盤見證(Disk Witness);

仲裁節點集合(Quorum Node Set):擁有投票的結點和Witness統稱仲裁節點集合;由仲裁節點集合的投票結果決定集羣整體的健康狀態。

2、仲裁模式

    仲裁模式多數原則是指所有投票節點進行投票,如果贊成票佔比在50%以上,那麼WSFC認爲集羣處於健康狀態,執行故障轉移,繼續提供服務,否則,WSFC認爲集羣出現嚴重故障,WSFC使集羣離線,停止提供服務。根據仲裁節點集合的組成類型,將仲裁模式分爲以下四種類型:

  • 節點多數(Node Majority):在集羣中,投票結點都是集羣的節點服務器,如果一半以上的投票節點(Voting Node)投贊成票,那麼WSFC判定集羣是健康的;

  • 節點和文件共享多數(Node and File Share Majority):和Node Majority模式相似,除了將遠程文件共享配置爲一個投票見證(Voting Witness)之外,該共享文件稱作仲裁文件,或見證文件。使用仲裁文件,遠程文件擁有投票權,如果其他結點能夠連接到該共享文件,那麼認爲該文件投一個贊成票。如果投票節點和文件共享投的贊成票佔一半以上,那麼WSFC判定集羣是健康的。作爲一個最佳實踐,文件共享見證(File Share Witness)不要存儲在集羣中的任何一個結點服務器上,並且設置任何一個結點服務器都有權限訪問。 

  • 節點和硬盤多數(Node and Disk Majority):和Node Majority模式相似,除了將共享硬盤配置爲一個投票見證(Voting Witness)之外,該共享硬盤稱作仲裁硬盤,或見證硬盤。仲裁硬盤需要共享存儲,集羣中各個節點都需要掛載同一個共享硬盤。

  • 只硬盤(Disk Only):沒有多數,僅僅把一個共享的硬盤作爲唯一見證,集羣中的任何一個節點能夠訪問該共享硬盤,這意味着,一旦仲裁硬盤脫機,集羣就會停止提供服務。

    常見的仲裁模式是點多數(Node Majority) 和 點和文件共享多數(Node and File Share Majority),如果集羣節點數量是奇數,那麼使用節點多數仲裁模式;如果集羣結點數量是偶數,那麼使用節點和文件共享多數仲裁模式,該模式需要配置一個共享文件夾,集羣中的各個節點都有權限訪問該共享文件夾,並且該共享文件夾不能創建是集羣的節點上。

 

二,仲裁配置(Quorum Configuration)

打開故障轉移管理器(Failover Cluster Manager),右擊集羣結點,在上下文菜單中點擊「More Actions」,在擴展菜單中選擇「Configure Cluster Quorum Settings」,打開仲裁配置嚮導(Wizard),爲該集羣配置仲裁

ac1.png

Step1,打開仲裁配置嚮導(Wizard),開始配置仲裁

ac1.png

 

step2,選擇仲裁配置選項

仲裁配置共有三個選項:

  • 使用默認的仲裁配置:該選項將仲裁配置選項的選擇權交由集羣系統;

  • 仲裁見證:該選項將集羣中添加仲裁見證,由集羣決定其他仲裁管理選項;

  • 高級仲裁配置:由用戶控制仲裁配置的所有選項

ac1.png

 

本例選擇高級仲裁配置(Advanced quorum configuration),自主控制仲裁的所有配置選項

Step3,選擇投票設置(Voting)

    默認情況下,集羣中的每一個結點都是投票節點,通過顯式的移除節點的投票權,用戶可以調整投票仲裁的設置,本例選擇默認選項:All Nodes,這意味着,集羣中的所有節點都擁有投票權。

ac1.png

 

Step4,選擇仲裁見證(Quorum Witness)

    在集羣中,能夠添加兩類仲裁見證:文件共享見證(File Share Witness)和硬盤見證(Disk Witness),硬盤見證是指增加一個共享的硬盤作爲一個仲裁投票節點,文件共享見證是指增加一個文件共享作爲一個仲裁投票節點,如果集羣中的其他節點能夠訪問該節點,那麼認爲該節點

ac1.png

Step5,選擇文件共享路徑

ac1.png

 

三,投票仲裁

    默認情況下,故障轉移集羣中的每一個節點都是集羣仲裁節點,每一個節點都擁有投票權,如果一個節點投贊成票,那麼代表該節點認爲集羣是健康的,但是,單個節點不能決定集羣整體的健康狀態,而是由集羣中的所有仲裁節點的投票結果來決定。

    在任何時刻,從每一個的節點的角度來看,其他節點可能處於離線狀態,或正在進行故障轉移,或由於網絡連接失敗而處於不響應狀態,仲裁投票的關鍵在於確定所有投票節點的真實狀態。除了「Disk Only」仲裁模式之外,其他仲裁模式都依賴於投票節點之間週期性的心跳信號通信,一旦某個節點因爲網絡通信故障,系統宕機,硬件損壞,機房停電等異常而無法迴應心跳信號,那麼剩餘的節點就認爲該節點出現異常,把該節點從當前集羣排除。WSFC統計所有投票節點的仲裁結果,決定集羣的健康狀態。

    如果集羣的節點位於不同的子網(Subnet)中,當一個結點在子網1中被認爲是故障節點時,實際上,該節點可能是由於網絡通信故障而不能被子網1的節點感知,但是該節點在子網2中是在線的,健康的。如果投票結點在不同的子網中能夠建立多個投票仲裁,那麼將產生腦裂場景。在該場景中,位於不同仲裁的節點有不同的表現,使仲裁產生衝突,WSFC不能正確的執行故障轉移,可能產生數據不同步。腦裂場景只可能在系統管理員手動執行強制仲裁(Forced Quorum)操作時發生。

 

四,健康檢測和仲裁投票

    WSFC在集羣的節點之間進行健康檢測和仲裁投票,每一個節點通過週期性地發送心跳信號,檢測其他其他節點的健康狀態,並和其他節點共享健康數據,無法響應心跳信號的節點被認爲處於異常狀態,集羣的所有健康節點都會很快知道該節點出現故障。仲裁節點集合是投票節點和見證節點(Witness)結合,仲裁結果由多數(Majority)結點決定,集羣整體的健康狀態是由週期性的仲裁投票的結果決定的,WSFC根據仲裁投票的結果,執行自動故障轉移或者使集羣離線:如果仲裁節點集合(Quorum Node Set)的投票結果表明大多數節點是健康的,那麼集羣將進行故障轉移,繼續提供服務;如果投票結果是少數節點,那麼集羣將處於離線狀態。