iT邦幫忙

2021 iThome 鐵人賽

DAY 27
0
IT管理

突破困境:企業開源虛擬化管理平台系列 第 27

Proxmox VE 設定客體機高可用性

https://ithelp.ithome.com.tw/upload/images/20211012/20118848KLNHcUpvSJ.png

在 Proxmox VE 建立好叢集後,已經可以使用遷移、複寫等等的功能以提升客體機的不停機服務時間,但這都是建基於有管理者人工進行操作所達成的效果。

若我們想要它可以自動化的處理這些移轉、接手運作等等的能力,Proxmox VE 也已經準備好了,在叢集建立完成後,即可使用 Proxmox VE 內建的高可用性 (HA,High Availability) 來打造自動化的容錯移轉機制。


高可用性的必要條件

儘管 Proxmox VE 已經內建高可用性機制,不過要啟用之前還是有幾個先決條件需要達成:

  • 已建立好的叢集,且至少 3 個節點
  • 客體機磁碟存放在共用儲存,或是本機儲存搭配複寫機制
  • 具作業系統級或硬體級的隔離裝置 (Fence Device)

https://ithelp.ithome.com.tw/upload/images/20211012/20118848CJBrRWgDOW.png
啟用高可用性的先決條件

 

在 Proxmox VE 的叢集功能中,只要 1 個節點即可建立叢集,但要使用高可用性則至少要 3 個節點,這是為了維持叢集票數 (Vote) 能夠判斷誰是正確存活節點的重要機制,整個叢集至少要有 51% 的節點在線上,才能維持正常運作;如果低於 51%,節點會進入鎖定狀態,以保護客體機與相關設定,避免屆時造成腦裂等不可回復的問題。

隔離裝置預設會採用內建的作業系統級監測,主要是以 Watchdog (看門狗) 持續監測節點運作是否正常,若節點運作發生異常它會讓自己進入重新啟動程序,確保回復正常運作模式。

隔離機制的時間範圍預設在 60 秒至 120 秒之間,也就是說當我們設定好高可用性後,當節點發生故障,該節點上的客體機最慢會在 120 秒以內啟動容錯移轉,至其它節點上啟動運作。

共用儲存可以是 iSCSI、NFS、CIFS、ZFS over iSCSI,或者是分散式檔案系統的 Ceph、GlusterFS 等等,只要是 Proxmox VE 所支援的共用儲存類型均可。

補充:
隔離機制的時間是否可以修改為更短?目前這個數字是直接寫在程式碼裡,沒有提供可以設定的選項。

建立高可用性群組

預設並沒有啟動高可用性設定,請選取 資料中心,切換至 HA 下的 群組 頁籤,再按下 建立 按鈕。

https://ithelp.ithome.com.tw/upload/images/20211012/20118848uEHXxjCTvW.png
準備建立高可性群組

 

進入高可用性群組的建立畫面後,在 ID 欄位輸入一個容易識別的名稱。

右方兩個核取方塊的功能,說明如下:

  • Restricted (限定運作節點):
    在勾選這個項目的情況下,當下方清單中有勾選的節點全原部故障後,如果有其它節點還正常運作但沒有被勾選的話,客體機也不會嘗試在其它未勾選的節點上啟動。
  • Nofailback (不需容錯回復):
    在勾選這個項目的情況下,客體機原本所在的節點發生故障而在其它節點上啟動起來運作,若原本所在的節點已經恢復上線運作,高可用性機制不會再自動將它遷移回去原本的節點。

通常我習慣的方式是僅勾選 nofailback,這樣的做法是避免故障的節點恢復上線後,馬上觸發許多客體機要遷移回原本節點,導致大量網路頻寬與磁碟讀寫效能的佔用狀況,有需要遷移回去的再經過人工判斷後,擇期手動執行。

下方的節點清單中,可以勾選這個高可用性群組要適用至那些節點,後方的 Priority 欄位是優先權設定,數字越高者會在高可用性機制運作時,優先將客體機在高優先權的節點啟動,這部份請依據客體機的資源狀況決定。

https://ithelp.ithome.com.tw/upload/images/20211012/20118848fXCCh8hP6c.png
建立高可性群組選項視窗

 

建立完成以後,可以在清單中看到已經多出了這一筆設定,如果有不同的策略,例如某些客體機特別重要,就可以建立一個可以在所有節點啟動接手運作的群組;若有一些客體機只能在某幾個特定節點才有足夠的效能運作,可以建立一個只有勾選特定節點的群組,並啟用 Restricted 選項。

https://ithelp.ithome.com.tw/upload/images/20211012/20118848FwSh5YCQLS.png
建立客體機高可性群組完成

 


建立高可用性客體機

前面將高可用性群組建立完成後,即可開始將客體機加入高可用性資源清單裡。

選取 資料中心,切換至 HA 頁籤,再按下 增加 按鈕。

https://ithelp.ithome.com.tw/upload/images/20211012/20118848EZtUMR0T9O.png
準備將客體機加入至高可性資源

 

進入高可用性資源增加視窗後,請在 VM 欄位中下拉選取要設定的客體機,本例選取 104 這一部客體機。

https://ithelp.ithome.com.tw/upload/images/20211012/20118848g7C67lAwwB.png
客體機加入至高可性資源:VM

 

接著在 群組 欄位下拉選取這個客體機要套用的群組是那一個,可以選取剛才所建立的 faster-notes 這一個群組。

https://ithelp.ithome.com.tw/upload/images/20211012/20118848yTYqEzgenU.png
客體機加入至高可性資源:群組

 

需求狀態 欄位中下拉選取客體機在高可用性機制啟動後,移到另一個節點需要進行的動作:

  • started:高可用性機制完成後,在另一節點啟動客體機 (開機)。
  • stopped:高可用性機制完成後,在另一節點保持停止 (關機)。
  • ignored:高可用性機制會忽略這部客體機,不做任何處理。
  • disabled:高可用性機制會停止這部客體機 (關機)。

在左方有兩個數字欄位,分別是:

  • 最多重新啟動:
    當客體機在新的節點啟動如果失敗,要在再次嘗試重新啟動的上限次數。
  • 最多重新遷移:
    當客體機在新的節點無法啟動時,要移往下一個節點的上限次數。

https://ithelp.ithome.com.tw/upload/images/20211012/20118848k911Yku0HJ.png
客體機加入至高可性資源:需求狀態與次數

 

補充:
如果客體機是被管理者手動停止 (關機),則客體機的高可用性資源會同時被設定為 stopped
補充:
如果客體機是被管理者手動啟動 (開機),則客體機的高可用性資源會同時被設定為 started

 


高可用性機制運作實例

設定完成高可用性的群組以及加客體機加入資源後,可以來實際看看當節點發生故障時,它會怎麼運作。

我們設定的案例是 104 這部客體機的高可用性資源,並且它目前正運作於 host-111 這個節點,當此節點因為故障而當機時,可以從 Proxmox VE 管理介面的資源檢視區中看到 host-111 節點已經變成離線狀態。

https://ithelp.ithome.com.tw/upload/images/20211012/20118848vzXF9iX91p.png
高可用性機制:節點故障

 

接著高可用性機制就會發現這個節點已經與叢集離線,開始準備進入隔離狀態。

https://ithelp.ithome.com.tw/upload/images/20211012/20118848zEzypLgR05.png
高可用性機制:隔離節點

 

跟著換高可用性資源中的客體機也進入隔離狀態:

https://ithelp.ithome.com.tw/upload/images/20211012/20118848xAQAqmDtDF.png
高可用性機制:隔離客體機

 

高可用性機制將該客體機移轉至 host-106 節點,並且準備將它啟動運作。

https://ithelp.ithome.com.tw/upload/images/20211012/20118848TgfbgkNEco.png
高可用性機制:客體機準備在其它節點啟動

 

該客體機已經順利在 host-106 節點啟動成功開始運作,可於左方的資源檢視區看到 104 這部客體機已經被移到 host-106 下方。

https://ithelp.ithome.com.tw/upload/images/20211012/20118848QauNRVNxvO.png
高可用性機制:客體已經在其它節點啟動運作

 
 

不需容錯回復選項

若該客體機的高可用性資源設定裡沒有勾選 nofailback,如下圖:

https://ithelp.ithome.com.tw/upload/images/20211012/2011884842G6oFaeHM.png
未勾選不需容錯回復

 

當原本故障的 host-111 重新上線與叢集連線正常後,高可用性機制會開始做容錯回復功能,開始將客體機由 host-106 遷移回 host-111

https://ithelp.ithome.com.tw/upload/images/20211012/20118848XNyfoe48vp.png
開始將客體機遷移回原節點

 

當遷移完成後,104 這部客體機已經回到原本的節點 host-111 繼續運作。

https://ithelp.ithome.com.tw/upload/images/20211012/20118848SgZao43Ray.png
客體機已經在原節點運作

 


參考資料


上一篇
Proxmox VE 啟用客體機複寫及搭配遷移功能使用
下一篇
Proxmox VE 帳號管理及權限指派
系列文
突破困境:企業開源虛擬化管理平台30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 則留言

0
juck30808
iT邦研究生 1 級 ‧ 2021-10-12 18:39:05

恭喜大大即將完賽XD !!!

/images/emoticon/emoticon01.gif

0
踏雪尋梅
iT邦研究生 5 級 ‧ 2022-01-20 10:31:55

謝謝節省哥,分享Proxmox VE的相關知識!

一路從第一天學習過來,目前在HA這邊卡了關

問題如下:我在將Node從HA資源中移除時,狀態會一卡在「deleting」上面,卡很久,消除不了也無法再重新加入回去(如下圖)

不曉得,是否有什麼解法呢?
https://ithelp.ithome.com.tw/upload/images/20220120/20114520nRmUHgiec1.png

踏雪尋梅 iT邦研究生 5 級 ‧ 2022-01-20 11:01:30 檢舉

已解決,原來是我沒退出HA就刪除VM導致的

ha-manager add vm:100

恭喜解決啦!

我要留言

立即登入留言