當虛擬化節點越來越多時,使用 Cluster 叢集進行管理是必要的工具。
在建置 Proxmox VE 的叢集時,網路的高穩定性、低延遲性將是確保叢集運作機制的重要關鍵,那麼我們可以用什麼方式來檢測呢?
叢集連線
第一件事要知道,PVE 的叢集連線需要使用到那些網路連接埠:
叢集運作所需連接埠號
總共需要使用三個埠號,若有經過防火牆阻擋,請予以放行。
- UDP / 5404, 5405
- TCP / 22
特別注意,UDP 所使用的這兩個埠號,需要使用 Multicast 廣播發送,如果 Switch 關閉了這個功能將影響叢集運作,直接斷線。
若無權限調整或無法修改廣播設定,請參考近期將發佈的另一篇文章。
連線測試
確認應該使用的連接埠都有正常開啟以後,我們可以利用一支工具程式來測試,好消息是 PVE 已經直接內建,不需要再另外安裝。
omping 工具程式
這是一支開源的工具軟體,使用方式如下:
omping 指令用法
omping -c 10000 -i 0.001 -F -q ip1 ip2 ip3 ....
特別注意:
如果要檢測的叢集有三個節點,那麼在這三個節點上都要執行同樣的指令,更多的節點請依此類推。
執行以後,畫面會開始出現測試數據,我們可以參考最後的結果來判斷狀況。
omping 執行結果
從執行結果的數據,我們簡單看幾個點就能知道目前叢集溝通的情況與網路是否符合規範,重點已在上圖中紅色框線所示。
依據 PVE 官方手冊建議,第一個紅框處 Loss% 的數值,應小於 1%;第二個紅框處 Avg 的數值,應小於 2ms (更好的是連 Max 都不要超過)。上圖的數值符合規範,狀況良好。
結論
在官方手冊裡面,有提到應該把對外服務、叢集溝通與儲存設備這三者完全獨立網路,以降低各種干擾情況對運作造成影響。
官方手冊建議應將三者區隔
在實務上因為種種因素,也許是設備現況、管理程度或者是經費...等等所限,不見得可以完全做到這樣的設計,所以我個人的作法是把叢集溝通與儲存設備這兩件事切開,也就是對外服務與叢集一邊,儲存設備一邊。
不管是分成三區或是兩區,叢集的溝通一定要經過 omping 的驗證無虞再上線,以免實際運作後產生更多的問題。
參考資料
- Multicast notes - Proxmox VE
https://pve.proxmox.com/wiki/Multicast_notes
- omping(8): test IP multicast - Linux man page
https://linux.die.net/man/8/omping
- troglobit/omping: Open Multicast Ping (omping)
https://github.com/troglobit/omping
- Proxmox VE 叢集、高可用性與其它進階技巧 http://blog.jason.tools/2019/01/proxmox-ve-cluster-ha-others.html
- [經驗分享]解決 Proxmox VE 在不支援 Multicast 環境下叢集通訊問題
https://blog.jason.tools/2019/02/pve-unicast.html