Proxmox VE 基於伺服器上使用廣泛的 Linux 作業系統,運作穩定,但人生總是有
做為無人值守的機房伺服器,不管是應用軟體當機、作業系統當機,都應該俱備有自我恢復機制,讓服務能夠重新上線。
監測機制
在伺服器服務上,我們經常使用 Watchdog (看門狗) 這樣的機制。
設置一個自動計數的計時器不斷的進行,讓運作的服務或程式透過定期來把計數器重置,讓 Watchdog 知道服務還活著。
或服務或系統死當導致無法對 Watchdog 計數器發出重置指令時,當達到所預先設定的計數器門檻值,Watchdog 就會對系統發出指定的動作,通常是強制重新啟動,或者關閉。
這個 Watchdog 裝置可以是外掛硬體,也可以是主機所內建的硬體裝置。在現代的伺服器系統上,通常具備有 IPMI 或與其相容 (例如 Dell iDRAC、HP iLO 等) 的管理介面,而這些管理介面也都擁有 Watchdog 的機制。
運作模式
在 Proxmox VE 裡,提供了兩種 Watchdog 模式。
Proxmox VE Watchdog 層級示意
Proxmox VE 同時支援了作業系統級監測與硬體物理級監測,但不管是這種兩種的那一種模式,都提供了兩個必要的功能。
Watchdog 主要功能
這兩種方式各有優缺點,說明如下。
作業系統級監測
- [優] 不需硬體 Watchdog 裝置即可支援
- [優] 不需設定即已內建啟用與支援
- [優] 相容與泛用性最好
- [缺] 若作業系統死當到連 Softdog 也死掉,無法自我重啟
- [缺] 自我重啟時間較久
硬體物理級監測
- [優] 較準確的系統生存狀態判斷
- [優] 可以完全重啟作業系統
- [優] 可以更快速的完成重啟動作
- [缺] 需要硬體支援
- [缺] 需要另外設定開啟
設定方式
若要啟用 IPMI Watchdog 支援,需要調整系統設定檔。在修改重要檔案前都應該先做好備份。為此,官方手冊上還提出了一份警訊。
官方手冊對於啟用 IPMI Watchdog 的警語
官方說啟用硬體式的 Watchdog 就如同「一把上了膛的槍」,表示若您沒有正確的設定好這件事,反而會造成大災難,例如節點會不斷的自我重新啟動。
若您已做好心理準備與備份,還是可以進行設定。
在過去 PVE 4.x 或更早的版本,要設定這件事非常麻煩,後來的 PVE 5.x 版越改越簡單,現在您只需要開啟一個設定檔案 /etc/default/pve-ha-manager。
啟用 IPMI Watchdog
請將第二行 #WATCHDOG_MODULE=ipmi_watchdog 最前方的註解 # 給去掉,並於存檔退出後重新開機,即可生效。
開機完成後,可以執行服務狀態指令確認是否已經生效,採用 ipmi watchdog 了。
查看 watchdog 服務
service watchdog-mux status
執行以後,會顯示服務的狀態資訊,其中已經有我們需要的關鍵。
查看 watchdog 服務狀態
請留意最後幾行的記錄內容,顯示 ... Watchdog driver 'IPMI' ... 即表示已成功使用 IPMI Watchdog 機制。
若想要更進一步的了解 IPMI Watchdog 的目前資訊,可以使用 IPMI 工具查詢,此工具預設沒有安裝,請先安裝方能使用。
安裝 IPMI Tool
apt-get install ipmitool
查看 IPMI Watchdog 設定
ipmitool mc watchdog get
這個指令可以顯示在 IPMI 裝置上,目前的 Watchdog 設定值內容。
查看 IPMI Watcdoh 設定值
在這個資訊中,我們只需要關注幾項重點:
- Watchdog Timer Is: Started/Running
這個計數器的狀態為 Started/Running 表示正常,運作中。
- Watchdog Timer Actions: Hard Reset (0x01)
當計數器到達門檻時,要做硬體重新開機的動作。
- Initial Countdown: 10 sec
表示計數器門檻為10秒,達到後觸發 Actions 所定義的動作。
結論
Proxmox VE 提供了越來越好的硬體設備整合能力,以及越來越簡單的設定方法,這些都讓我們使用的穩定成熟度提升。
在 Watchdog 這件重要的事情上,Proxmox VE 同時提供了兩種方案,本意都是希望縮短服務中斷的時間,確保服務的品質與上線能力,我們可以善加運用。
參考資料
- [議程簡報]Proxmox VE 叢集、高可用性與其它進階技巧
https://blog.jason.tools/2019/01/proxmox-ve-cluster-ha-others.html
- High Availability - Proxmox VE
https://pve.proxmox.com/wiki/High_Availability