ESXi 透過 NUT Client 連接 Synology 網路不斷電系統伺服器

自從買了第一台的 NAS (Synology DS1511+) 之後,為了確保市電斷電時 NAS 能夠穩定正常的關機,當時就添購了俗稱 UPS 的不斷電系統 (APC BV650-TW),可以提供 3 個備援供電插座,以及 3 個穩壓插座。NAS 上的硬碟透過 UPS 的保護,的確穩定程度好很多,當時有部分的 2TB 硬碟到現在仍然繼續存活著穩定工作。不過隨著添購的設備越來越多,原來的 UPS 已經不敷使用,所以在去年八月時就更換了容量達到 1500VA,以及更多電源插座的 CyperPower CP1500PFCLCD,透過 LCD 螢幕還可以顯示目前電池存量,以及總耗電量等資訊,目前這台 UPS 一共供應了三台 NAS / MacMini / HPE. Microserver Gen10+ 以及重要的 Switch 設備等等。上面接了這麼多設備,從 UPS LCD 的資訊中顯示電池仍可供應 24 分鐘才會完全沒電,對於將設備安全的關機來說應該是綽綽有餘了。

不過因為 UPS 只能透過 USB 接線安裝在一台 NAS 上,其餘的設備如何偵測到 UPS 市電斷電的訊號而配合進行關機呢?由於家裡的 NAS 都是 Synology 的設備,所以可以透過 Synology 本身的網路不斷電系統伺服器來連接,只需要將遠端的 NAS IP 設定上去即可。

負責連接 UPS 的 NAS,可以到控制台 > 硬體 & 電源 > 不斷電系統,啟動網路不斷電系統伺服器,然後將遠端需要接收 UPS 訊號的網路設備 IP 加入即可。

其他的 Synology NAS 就一樣到控制台 > 硬體 & 電源 > 不斷電系統 設定中,將不斷電系統類型改為「Synology 不斷電系統伺服器」,然後設定遠端提供 UPS 訊號的 Synology NAS IP 即可。如此一來連接 UPS 的 NAS 偵測到市電斷電訊號,就會通知所有遠端的 NAS 一起進入安全模式,藉以保護硬碟上的資料以及各項運作的服務。

但是其他非 Synology NAS 的設備,像是我的 HPE Microver Gen10+ 安裝了 ESXi 之後是否也有辦法透過類似的方式來接收 Synology NAS 所提供的訊號來進行關機呢?研究了一下,其實 Synology NAS 所提供的網路不斷電系統伺服器其實就是標準的開源軟體 Network UPS Tools (NUT),只要在 ESXi 上安裝 NUT 套件後,透過適當的設定就可以正確地接收 Synology 的網路不斷電系統伺服器訊號來進行關機。下面就是我安裝設定過程的筆記。

  • 下載編譯好的 NUT Client ESXi 套件

這世界上真的有很多好心人,除了寫了很多免費的開源軟體(開源萬歲),還幫你編譯成為可以直接使用的執行檔,像 ESXi 上的套件就可以在這裡 (http://rene.margar.fr/2012/05/client-nut-pour-esxi-5-0/) 找到編譯好的二進位執行檔,當然我是看不懂法文啦,不過幸好有萬能的 Google Translate 來幫忙翻譯成中文,在該篇文章中作者說他測試使用 ESXi 5.0~7.0.0 都可正常使用,而我自己用 ESXi 7.0.2 也是可以完美搭配,所以請安心服用。如果上述下載連結不幸遺失了,也可以從 這兒 來下載。

  • 將 NUT Client 套件上傳到 ESXi

當然要將 NUT Client 上傳到 ESXi 才能執行,除了透過原本 ESXi 管理介面的資料存放區檔案總管來上傳之外,因為後續都要透過 SSH 終端介面 CLI 指令方式進行安裝,所以我選擇使用 scp 指令將 NUT Client 上傳到 ESXi 的 /tmp/NutClient 目錄下解開。

scp NutClient-ESXi-X.X.X.i386.tar.gz esxiuser@[esxi-host-name]:/tmp/NutClient
ssh esxiuser@[esxi-host-name]
cd /tmp/NutClient
tar zxvf NutClient-ESXi-X.X.X.i386.tar.gz

解開之後會有五個檔案,除了 readme 說明檔及 ESXi vib 套件檔以外,就是 安裝 / 移除 / 更新 三個 shell script,望文生義,所以就不再加以說明。

  • 調整 ESXi 套件模式為 CommunitySupported

直接執行 ./upsmon-install.sh 來進行安裝,但安裝時出現警示訊息提示,目前的套件模式為 PartnerSupported,請調整為 CommunitySupported 模式才能進行安裝社群所提供的開源套件。

可以透過指令 esxcli software acceptance set –level=CommunitySupported 來修改安裝模式。修改完畢後再透過 esxcli software acceptance get 指令來查閱目前安裝套件的模式是否已正確調整為 CommunitySupported。

  • 安裝 NUT Client 套件

再次執行 ./upsmon-install.sh 來安裝 NUT Client 套件,這次就顯示安裝成功。安裝成功後,ESXi 主機需重新開機以便讓 NUT Client 套件生效。

  • 設定 ESXi NUT 套件參數

NUT Client 套件生效之後,在 ESXi 的管理介面 (導覽器 > 管理 > 服務) 中就可以找到 NutClient 這個套件,只是目前狀態為「已停止」。

不過在啟動之前,需要設定相關遠端 Synology 網路不斷電系統伺服器相關參數,可以在導覽器 > 管理 > 系統 > 進階設定 中找到 NUT Client 的相關參數,分別說明如下

UserVars.NutFinalDelay: 接收到遠端斷電後執行關機的秒數(seconds)
UserVars.NutMailTo: 設定電子郵件進行通知
UserVars.NutPassword: 連接密碼,Synology 預設為 secret
UserVars.NutSendMail: 設定是否要以電子郵件通知 (1=要通知,0=不通知)
UserVars.NutUpsName: 格式為 <upsname@NAS_IP>,name 預設為 ups
UserVars.NutUser: 連接帳號,Synology 預設為 monuser

  • 啟動 NUT Client

設定好參數後就可以再 (回到 導覽器 > 管理 > 服務) 嘗試啟動 NutClient ,選擇 NutClient 後按左上角「啟動」按鈕。

啟動成功的話,NutClient 狀態應該會顯示為「執行中」。

若啟動失敗,則可以檢查 /var/log/syslog.log 看看 NUT Client (upsmon daemon) 啟動是否有發生錯誤。

確認啟動成功後,就可以修改套件啟動的選項,將 NUT Client 套件改為開機後自動啟動,也就是「隨主機一起啟動和停止」。

  • 確認有正確接收遠端的 UPS 資訊

最後可以來確認一下是不是有正確接收到遠端 UPS 的相關資訊。NUT Client 預設安裝在 ESXi 主機 /opt/nut 目錄中,可以透過 /opt/nut/bin/upsc 指令來測試是否有正確取得遠端 UPS 的相關資訊。指令格式如下

/opt/nut/bin/upsc <upsname>@<nas_ip>

可以看到 ESXi 這邊也可以取得正確的 UPS 相關資訊了。

2 thoughts on “ESXi 透過 NUT Client 連接 Synology 網路不斷電系統伺服器

  • 2023/09/08 at 17:28:07
    Permalink

    您好
    請問這種做法是只會讓 ESXi 主機關閉,還是會先讓所有的虛擬主機都關機後,接著才會關閉 ESXi 主機呢?

  • 2023/10/10 at 21:12:18
    Permalink

    很抱歉,我已改用Proxmox VE作為我的主力虛擬環境,所以無法幫你測試,不過依據NUT的github網頁說明,NUT會適當的關閉所有 VM 再關閉主機。

    https://github.com/rgc2000/NutClient-ESXi

    “Provide UPS connectivity to a single vSphere Hypervisor 5.0 to 8.0
    Will shut down properly the host and vms with vmware-tools installed”

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料