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),為該叢集配置仲裁

Step1,打開仲裁配置向導(Wizard),開始配置仲裁
step2,選擇仲裁配置選項
仲裁配置共有三個選項:
- 使用預設的仲裁配置:該選項将仲裁配置選項的選擇權交由叢集系統;
- 仲裁見證:該選項将叢集中添加仲裁見證,由叢集決定其他仲裁管理選項;
- 進階仲裁配置:由使用者控制仲裁配置的所有選項
本例選擇進階仲裁配置(Advanced quorum configuration),自主要制仲裁的所有配置選項
Step3,選擇投票設定(Voting)
預設情況下,叢集中的每一個結點都是投票結點,通過顯式的移除結點的投票權,使用者可以調整投票仲裁的設定,本例選擇預設選項:All Nodes,這意味着,叢集中的所有結點都擁有投票權。
Step4,選擇仲裁見證(Quorum Witness)
在叢集中,能夠添加兩類仲裁見證:檔案共享見證(File Share Witness) 和 硬碟見證(Disk Witness),硬碟見證是指增加一個共享的硬碟作為一個仲裁投票結點,檔案共享見證是指增加一個檔案共享作為一個仲裁投票結點,如果叢集中的其他結點能夠通路該結點,那麼認為該結點
Step5,選擇檔案共享路徑
三,投票仲裁
預設情況下,故障轉移叢集中的每一個結點都是叢集仲裁結點,每一個結點都擁有投票權,如果一個結點投贊成票,那麼代表該結點認為叢集是健康的,但是,單個結點不能決定叢集整體的健康狀态,而是由叢集中的所有仲裁結點的投票結果來決定。
在任何時刻,從每一個的結點的角度來看,其他結點可能處于離線狀态,或正在進行故障轉移,或由于網絡連接配接失敗而處于不響應狀态,仲裁投票的關鍵在于确定所有投票結點的真實狀态。除了“Disk Only”仲裁模式之外,其他仲裁模式都依賴于投票結點之間周期性的心跳信号通信,一旦某個結點因為網絡通信故障,系統當機,硬體損壞,機房停電等異常而無法回應心跳信号,那麼剩餘的結點就認為該結點出現異常,把該結點從目前叢集排除。WSFC統計所有投票結點的仲裁結果,決定叢集的健康狀态。
如果叢集的結點位于不同的子網(Subnet)中,當一個結點在子網1中被認為是故障結點時,實際上,該結點可能是由于網絡通信故障而不能被子網1的結點感覺,但是該結點在子網2中是線上的,健康的。如果投票結點在不同的子網中能夠建立多個投票仲裁,那麼将産生腦裂場景。在該場景中,位于不同仲裁的結點有不同的表現,使仲裁産生沖突,WSFC不能正确的執行故障轉移,可能産生資料不同步。腦裂場景隻可能在系統管理者手動執行強制仲裁(Forced Quorum)操作時發生。
四,健康檢測和仲裁投票
WSFC在叢集的結點之間進行健康檢測和仲裁投票,每一個結點通過周期性地發送心跳信号,檢測其他其他結點的健康狀态,并和其他結點共享健康資料,無法響應心跳信号的結點被認為處于異常狀态,叢集的所有健康結點都會很快知道該結點出現故障。
仲裁結點集合是投票結點和見證結點(Witness)結合,仲裁結果由多數(Majority)結點決定,叢集整體的健康狀态是由周期性的仲裁投票的結果決定的,WSFC根據仲裁投票的結果,執行自動故障轉移或者使叢集離線:如果仲裁結點集合(Quorum Node Set)的投票結果表明大多數結點是健康的,那麼叢集将進行故障轉移,繼續提供服務;如果投票結果是少數結點,那麼叢集将處于離線狀态。
引用MSDN上關于WSFC節點的描述:
Each node in a WSFC cluster participates in periodic heartbeat communication to share the node's health status with the other nodes. Unresponsive nodes are considered to be in a failed state.
A quorum node set is a majority of the voting nodes and witnesses in the WSFC cluster. The overall health and status of a WSFC cluster is determined by a periodic quorum vote. The presence of a quorum means that the cluster is healthy and able to provide node-level fault tolerance.
WSFC uses a quorum-based approach to monitoring overall cluster health and maximize node-level fault tolerance. A fundamental understanding of WSFC quorum modes and node voting configuration is very important to designing, operating, and troubleshooting your AlwaysOn high availability and disaster recovery solution.