在 Proxmox VE 建立好叢集後,已經可以使用遷移、複寫等等的功能以提升客體機的不停機服務時間,但這都是建基於有管理者人工進行操作所達成的效果。
若我們想要它可以自動化的處理這些移轉、接手運作等等的能力,Proxmox VE 也已經準備好了,在叢集建立完成後,即可使用 Proxmox VE 內建的高可用性 (HA,High Availability) 來打造自動化的容錯移轉機制。
儘管 Proxmox VE 已經內建高可用性機制,不過要啟用之前還是有幾個先決條件需要達成:
啟用高可用性的先決條件
在 Proxmox VE 的叢集功能中,只要 1 個節點即可建立叢集,但要使用高可用性則至少要 3 個節點,這是為了維持叢集票數 (Vote) 能夠判斷誰是正確存活節點的重要機制,整個叢集至少要有 51% 的節點在線上
,才能維持正常運作;如果低於 51%,節點會進入鎖定狀態,以保護客體機與相關設定,避免屆時造成腦裂等不可回復的問題。
隔離裝置預設會採用內建的作業系統級監測,主要是以 Watchdog (看門狗) 持續監測節點運作是否正常,若節點運作發生異常它會讓自己進入重新啟動程序,確保回復正常運作模式。
隔離機制的時間範圍預設在 60 秒至 120 秒之間,也就是說當我們設定好高可用性後,當節點發生故障,該節點上的客體機最慢會在 120 秒以內啟動容錯移轉,至其它節點上啟動運作。
共用儲存可以是 iSCSI、NFS、CIFS、ZFS over iSCSI,或者是分散式檔案系統的 Ceph、GlusterFS 等等,只要是 Proxmox VE 所支援的共用儲存類型均可。
補充:
隔離機制的時間是否可以修改為更短?目前這個數字是直接寫在程式碼裡,沒有提供可以設定的選項。
預設並沒有啟動高可用性設定,請選取 資料中心
,切換至 HA
下的 群組
頁籤,再按下 建立
按鈕。
準備建立高可性群組
進入高可用性群組的建立畫面後,在 ID
欄位輸入一個容易識別的名稱。
右方兩個核取方塊的功能,說明如下:
通常我習慣的方式是僅勾選 nofailback
,這樣的做法是避免故障的節點恢復上線後,馬上觸發許多客體機要遷移回原本節點,導致大量網路頻寬與磁碟讀寫效能的佔用狀況,有需要遷移回去的再經過人工判斷後,擇期手動執行。
下方的節點清單中,可以勾選這個高可用性群組要適用至那些節點,後方的 Priority
欄位是優先權設定,數字越高者會在高可用性機制運作時,優先將客體機在高優先權的節點啟動,這部份請依據客體機的資源狀況決定。
建立高可性群組選項視窗
建立完成以後,可以在清單中看到已經多出了這一筆設定,如果有不同的策略,例如某些客體機特別重要,就可以建立一個可以在所有節點啟動接手運作的群組;若有一些客體機只能在某幾個特定節點才有足夠的效能運作,可以建立一個只有勾選特定節點的群組,並啟用 Restricted
選項。
建立客體機高可性群組完成
前面將高可用性群組建立完成後,即可開始將客體機加入高可用性資源清單裡。
選取 資料中心
,切換至 HA
頁籤,再按下 增加
按鈕。
準備將客體機加入至高可性資源
進入高可用性資源增加視窗後,請在 VM
欄位中下拉選取要設定的客體機,本例選取 104
這一部客體機。
客體機加入至高可性資源:VM
接著在 群組
欄位下拉選取這個客體機要套用的群組是那一個,可以選取剛才所建立的 faster-notes
這一個群組。
客體機加入至高可性資源:群組
在 需求狀態
欄位中下拉選取客體機在高可用性機制啟動後,移到另一個節點需要進行的動作:
在左方有兩個數字欄位,分別是:
客體機加入至高可性資源:需求狀態與次數
補充:
如果客體機是被管理者手動停止 (關機),則客體機的高可用性資源會同時被設定為
stopped
。
補充:
如果客體機是被管理者手動啟動 (開機),則客體機的高可用性資源會同時被設定為
started
。
設定完成高可用性的群組以及加客體機加入資源後,可以來實際看看當節點發生故障時,它會怎麼運作。
我們設定的案例是 104
這部客體機的高可用性資源,並且它目前正運作於 host-111
這個節點,當此節點因為故障而當機時,可以從 Proxmox VE 管理介面的資源檢視區中看到 host-111
節點已經變成離線狀態。
高可用性機制:節點故障
接著高可用性機制就會發現這個節點已經與叢集離線,開始準備進入隔離狀態。
高可用性機制:隔離節點
跟著換高可用性資源中的客體機也進入隔離狀態:
高可用性機制:隔離客體機
高可用性機制將該客體機移轉至 host-106
節點,並且準備將它啟動運作。
高可用性機制:客體機準備在其它節點啟動
該客體機已經順利在 host-106
節點啟動成功開始運作,可於左方的資源檢視區看到 104
這部客體機已經被移到 host-106
下方。
高可用性機制:客體已經在其它節點啟動運作
若該客體機的高可用性資源設定裡沒有勾選 nofailback
,如下圖:
未勾選不需容錯回復
當原本故障的 host-111
重新上線與叢集連線正常後,高可用性機制會開始做容錯回復功能,開始將客體機由 host-106
遷移回 host-111
。
開始將客體機遷移回原節點
當遷移完成後,104
這部客體機已經回到原本的節點 host-111
繼續運作。
客體機已經在原節點運作
謝謝節省哥,分享Proxmox VE的相關知識!
一路從第一天學習過來,目前在HA這邊卡了關
問題如下:我在將Node從HA資源中移除時,狀態會一卡在「deleting」上面,卡很久,消除不了也無法再重新加入回去(如下圖)
不曉得,是否有什麼解法呢?
已解決,原來是我沒退出HA就刪除VM導致的
ha-manager add vm:100
恭喜解決啦!