Proxmox VE 最重要的功能之一是叢集,既然它如此重要,維持叢集的正常運作就是管理 PVE 的重要關鍵。
要怎麼避免叢集斷線引發管理問題?我們可以加入備援連線 IP 機制。
設定結果
請登入 WebUI,進入 [Datacenter 資料中心] > [Cluster 叢集],查看目前叢集資訊。
節點增加第二組叢集 IP
上圖是已經設定完成的範例,在沒有正確設定前,叢集資訊的每一個節點只會在 Ring 0 有 IP,而 Ring 1 是空白的。
在節點有兩個以上的網路連接埠情況下,通常我們會區分服務、儲存兩個區域,甚至是更嚴格的服務、儲存與叢集三個區域。
節點分別連接服務與儲存網路區域
節點分別連接服務、儲存與叢集網路區域
不管是上述的那一種作法,節點都會具備有至少兩個以上的 IP,我們可以把另一個非叢集在用的那一組 IP 納入。
若原叢集所使用的溝通網路 (Ring 0) 無法通訊,PVE 叢集可以立即走備用網路 (Ring 1) 接手,確保叢集運作正常。
設定方式
很遺憾,目前雖然可以在 WebUI 上查看 Ring 1 的 IP 資訊,但卻還無法在 WebUI 上簡單點選就設定完成,還是需要修改設定檔。
請以文字編輯器開啟 /etc/pve/corosync.conf。
在檔案中找到 nodelist 區塊,並在每一個節點的 ring0_addr 下新增一行 ring1_addr 設定,再把另一個 IP 填入。
接著檔案中找到 totem 區塊,新增一行 rrp_mode: passive 設定、增加 interface 把其中一台節點 ring1 IP 設定進去,最後將版本號加一(若原本為 1,請改為 2,依此類推),叢集才會把這次修改視為新的設定,從而複寫到其它節點。
增加 ring1_addr 設定 (可以是 IP 或 Hostname)
ring1_addr: x.x.x.x
增加 rrp_mode 設定
rrp_mode: passive
增加 ring1 interface 設定 (填入任一節點即可)
interface{ bindnetaddr: x.x.x.x ringnumber: 1 }
增加版本號 (請依您原本的版本號數+1)
config_version: 3
修改完成的設定檔如下:
修改 corosync.conf 設定檔 (官網範例)
確認修改完成後,存檔退出,接著將 corosync 與 pve-cluster 服務重啟進行生效,每一個節點都需要執行。
重啟叢集服務
systemctl restart corosync systemctl restart pve-cluster
提醒:
進階修改請小心服用,建議先做備份再進行,以策安全。
結論
若連線問題導致叢集無法溝通,會引發一些障礙,例如無法建立虛擬機器或容器、關機或開機等等。不過,由於叢集管理與虛擬機器、容器管理是分別獨立的套件,所以原本正在運作的虛擬機器或容器將不受影響繼續運作。
經由上述的方法設定備援 IP 以後,可以讓 PVE 的叢集運作更加穩固,減少因網路問題讓叢集無法溝通而帶來的種種問題。
參考資料
- Separate Cluster Network - Proxmox VE
https://pve.proxmox.com/wiki/Separate_Cluster_Network#Redundant_Ring_Protocol
- [議程簡報]Proxmox VE 叢集、高可用性與其它進階技巧
https://blog.jason.tools/2019/01/proxmox-ve-cluster-ha-others.html
- [經驗分享]開源伺服器虛擬化平台 - Proxmox VE
https://blog.jason.tools/2017/08/proxmox-ve-share.html