標籤:軟體定義程式資料中心 windows server sddc 高可用 群集
群及仲裁的用意
群集仲裁的目的之一是防止群集出現網路磁碟分割的時候導致群集腦裂,腦裂是群集出現分區(或者叫分組)的結果,群集分區意味著兩個分區都認為對方已經不存在或者失效,於是會爭奪叢集資源的控制權。腦裂的後果是兩個分區各自同時且獨立讀寫共用磁碟而導致磁碟資料混亂。
仲裁的目的之二是限制群集所能承受的最大故障數,仲裁要求群集有多數投票存在,否則群集將失效,比如一個5節點的群集可以忍受最多兩個節點同時發生故障。
群集投票
投票演算法基於投票結果少數服從多數,群集中各個節點需要心跳機制來通報彼此的"健康狀態”,每收到一個節點的"通報"代表一票。對於三個節點(假設三個節點為A,B,C)的群集,正常運行時,每個節點都會有三票。當結點A心跳出現故障但仍在運行,B和C心跳正常,這時整個群集就會分裂成兩個分區。節點A在一個分區,B和C在另外一個分區。這時必須剔除一個分區才能保障群集的健康運行。按照投票演算法,B和C在一個分區,有兩票,A只有一票,B和C組成的群集獲得控制權,A被剔除。
叢集節點、磁碟見證資源、檔案分享權限設定資源都可以分配投票權,可以在群集管理器裡進行投票權的分配。一個叢集節點可以分配一個投票,同樣,一個磁碟見證或者檔案共用見證資源也可以分配一個投票。
擁有投票權不代表就能參與投票仲裁,必須要確保投票的有效性。在群集管理器裡可以查看到是否分配投票權以及是否具有有效投票,只有已指派的投票才有效,1所示。
650) this.width=650;" title="002-圖1.jpg" style="float:none;" alt="wKioL1igXFWSCp-TAAA1SfjApzo706.jpg-wh_50" src="https://s2.51cto.com/wyfs02/M02/8D/86/wKioL1igXFWSCp-TAAA1SfjApzo706.jpg-wh_500x0-wm_3-wmp_4-s_3342398168.jpg" />
圖1 群集投票權和有效投票
仲裁見證
如果群集只有兩個節點,因為每個節點上都只有一票,所以投票演算法就起不了作用,群集分區後每個區都各一個有效投票導致群集腦裂。同理,如果叢集節點是偶數,而且剛好群集分區後遇到剛好各佔半數節點的情況時導致群集腦裂。為了防止此類的情況發生,需要引入第三個裝置:仲裁見證。仲裁見證的目的和生活中的增加投票的例子類似,共用磁碟和共用資料夾資源都可以充當仲裁見證,共用磁碟被用於仲裁時也叫做仲裁磁碟。用於仲裁的見證的磁碟和共用檔案也能分配一個投票,當在兩結點的群集裡節點間心跳出現問題時,兩個節點同時去爭取仲裁見證這一票,最早到達的請求先被滿足。在分區後偶數節點對半分的群集也是如此,所以先獲得仲裁見證的節點和分區就獲得超過半數的投票,另一個節點或者分區就會被剔除。
在Windows Server群集裡,預設為每個節點分配投票權,當叢集伺服器節點為奇數且不巧出現網路磁碟分割時,因為投票結果可以形成多數節點分區,因此群集會剔除少數節點分區的節點。但是如果叢集節點為偶數且出現網路磁碟分割時,群集可能出現節點對半分的情況,這時候就最好能為群集配置仲裁見證。
目前,群集支援4種仲裁模型,包括節點多數、節點和磁碟多數、節點和檔案分享權限設定多數以及僅磁碟(傳統模型)。節點多數模型只為叢集節點分配投票,節點和磁碟(檔案分享權限設定)多數模型既為叢集節點也為群集磁碟(檔案分享權限設定)分配投票,僅磁碟這種模型是傳統的模型。這4種仲裁模型的投票數和仲裁說明對應表如下:
仲裁模型 |
有投票權的組件(投票數) |
仲裁(v是投票數,v/2向下取整) |
節點多數 |
節點(節點數) |
v/2 + 1 |
節點和磁碟多數 |
節點和磁碟(節點數+1) |
v/2 + 1 |
節點和檔案分享權限設定多數 |
節點檔案分享權限設定(節點數+1) |
v/2 + 1 |
僅磁碟(傳統) |
磁碟見證資源(1) |
v |
見證資源
共用磁碟和共用資料夾都可以作為仲裁見證資源,但是兩者略有不同,磁碟見證除了可以為仲裁提供投票,作為仲裁見證的磁碟還儲存持續更新的群集資料庫副本,協助群集在某個節點失效的情況下維護群集正常狀態和配置資訊,確保各節點儲存最新的資料庫副本。而檔案分享權限設定仲裁見證不能儲存群集資料庫。
群集仲裁演化
仲裁技術隨著Windows Server的迭代更新和環境的複雜程度不斷髮展,從最初的群集開始到Windows Server 2016群集,仲裁模型發生了不小的變化。接下來簡單說明Windows Server群集仲裁方式的演化。
(1)僅磁碟仲裁
早期的Windows Server群集仲裁裡,磁碟具有唯一的仲裁投票,如果磁碟見證資源失敗,群集也會失敗,這種仲裁模型對群集磁碟依賴過大,已經很少被採納。雖然現在在群集裡面還保留了磁碟仲裁機制,但是這種仲裁機制逐漸被放棄了。只有在磁碟網路很穩定,但是節點之間的網路不穩定導致網路和節點通訊間歇性失敗的時候才會考慮用這種仲裁機制,這種情況已經非常鮮見。
(2)見證和節點仲裁
Windows Server群集開發組發現僅磁碟仲裁無法適應大多數環境,於是開始著手研究新的仲裁機制。從Windows Server 2008開始叢集節點也具有了投票權,可以按照需要選擇為節點分配投票權,不僅如此,節點和資源見證還可以組合成更加靈活的投票模型。節點投票和磁碟投票組合成節點多數、節點和磁碟多數、節點和檔案分享權限設定多數等幾種仲裁選項。
(3)動態仲裁
在Windows Server 2012 R2中引入了動態見證仲裁,群集預設配置為動態仲裁,群集基於當前群集投票節點數量進行動態投票調整。動態仲裁意味著群集在增加、刪除、關閉、開啟叢集節點,或者增加刪除見證資源時,群集會動態調整投票數和投票的有效性,讓自己的有效投票數始終保持為奇數。仲裁見證投票還會基於見證資源狀態進行動態調整,如果見證資源離線或者失敗,群集會把該見證投票設定為0,意味著該見證不再參與投票。
比如在一個4節點群集裡,雖然4個節點都分配了投票,但是群集為了讓自己的投票數保持為奇數,“拿走”了一個節點的投票,剩下3個有效投票,2所示。
650) this.width=650;" title="002-圖2.jpg" style="float:none;" alt="wKioL1igXFfiPL2IAAB2CSGddQs365.jpg-wh_50" src="https://s2.51cto.com/wyfs02/M01/8D/86/wKioL1igXFfiPL2IAAB2CSGddQs365.jpg-wh_500x0-wm_3-wmp_4-s_3792602252.jpg" />
圖2 動態仲裁中的投票數和有效投票數
如果這時為群集配置磁碟見證或者檔案共用見證仲裁,3所示,那麼群集裡分配的投票將達到5個,有效投票為4個,這時候群集為了讓自己的有效投票數保持為奇數,於是將之前“拿走”的投票“歸還”給節點。這時候4個節點加上1個見證資源仲裁,一共有5個投票,4所示。
650) this.width=650;" title="002-圖3.jpg" style="float:none;" alt="wKiom1igXFjwL7BTAAA-ZPuAO_g408.jpg-wh_50" src="https://s4.51cto.com/wyfs02/M00/8D/89/wKiom1igXFjwL7BTAAA-ZPuAO_g408.jpg-wh_500x0-wm_3-wmp_4-s_2260828450.jpg" />
圖3群集增加共用見證
650) this.width=650;" title="002-圖4.jpg" style="float:none;" alt="wKioL1igXFuhnHUXAABumiZXySM842.jpg-wh_50" src="https://s5.51cto.com/wyfs02/M00/8D/86/wKioL1igXFuhnHUXAABumiZXySM842.jpg-wh_500x0-wm_3-wmp_4-s_3688765745.jpg" />
圖4動態仲裁中重新調整的投票數
如果這時手動關閉一個節點,那麼群集裡分配的有效投票將剩下4個,這時候群集為了讓自己的有效投票數保持為奇數,於是再“拿走”一個節點的投票,只剩下兩個節點具有有效投票。這時候兩個節點加上一個見證資源仲裁,一共有3個投票,5所示。
650) this.width=650;" title="002-圖5.jpg" style="float:none;" alt="wKiom1igXF2hCHvLAABEKq6U4ec865.jpg-wh_50" src="https://s3.51cto.com/wyfs02/M02/8D/89/wKiom1igXF2hCHvLAABEKq6U4ec865.jpg-wh_500x0-wm_3-wmp_4-s_1605254045.jpg" />
圖5 關閉節點動態仲裁重新調整的投票數
(4)雲仲裁
在Windows Server 2016中引入了雲仲裁模型,6所示。雲仲裁模型可以使用Azure的Blob儲存作為Windows Server 2016的群集仲裁見證資源,7所示。
650) this.width=650;" title="002-圖6.jpg" style="float:none;" alt="wKiom1igXF6wuCEpAABOtI0NKxU059.jpg-wh_50" src="https://s3.51cto.com/wyfs02/M01/8D/89/wKiom1igXF6wuCEpAABOtI0NKxU059.jpg-wh_500x0-wm_3-wmp_4-s_2817215856.jpg" />
圖6 新增雲仲裁見證
650) this.width=650;" title="002-圖7.jpg" src="https://s2.51cto.com/wyfs02/M01/8D/89/wKiom1igXZvwsxRdAABEdn8hQEE964.jpg-wh_500x0-wm_3-wmp_4-s_488597764.jpg" alt="wKiom1igXZvwsxRdAABEdn8hQEE964.jpg-wh_50" />
圖7 配置雲仲裁見證
Windows Server 群集仲裁