近来增加了一台工控机,上面跑了软路由等业务,万一突然断电 `ESXi` 坏了启不了,估计就得废好大劲折腾了。以前有给群晖配过一台 `APC BK650` 的 `UPS`,目前 `UPS` 的 `COM` 数据输出直接给到了群晖,毕竟无论如何也得优先保障群晖的可靠性。在群晖的设置里面看到过 `UPS` 服务器的选项,所以想着 `ESXi` 能不能连接群晖的 `UPS` 服务器,实现断电自动关机以保证数据安全。
首要登录群晖的 `DSM`,在设置里面找到电源选项,打开 `UPS` 服务器并添加允许连接的 `IP`,这里就把 `ESXi` 的 `IP` 填写进去(我们的设备地址被静态配置成 `10.10.10.2` ):
`SSH` 进到 `ESXi`(`SSH`功能,默认是关闭的,需要在 `ESXi` 的服务里面打开 `SSH`)
# 下载到本机,然后远程传输到ESXi的服务器上,有些ESXi服务器由于安全原因不允许访问远程服务器 # 这个软件包是法国人提供的,原始下载地址是 http://rene.margar.fr/download/1368/ $ wget https://www.mobibrw.com/wp-content/uploads/2019/05/NutClient-ESXi-2.0.0.tar.gz $ scp NutClient-ESXi-2.0.0.tar.gz root@10.10.10.2:~/tmp/ # 登录带ESXi服务器 $ ssh 10.10.10.2 -l root $ cd /tmp $ tar xvf NutClient-ESXi-2.0.0.tar.gz # 设置软件安装策略,否则会被阻止安装 $ esxcli software acceptance set --level CommunitySupported $ ./upsmon-install.sh
安装的结果如下:
[root@localhost:/tmp] ./upsmon-install.sh Installation Result Message: Operation finished successfully. Reboot Required: false VIBs Installed: Margar_bootbank_upsmon_2.7.4-2.0.0 VIBs Removed: VIBs Skipped:
重启服务器(我这边的 `ESXi 6.7.0` 需要重启服务器,否则软件选项看不到):
[root@localhost:/tmp] reboot
接着登录 `ESXi`,打开管理,高级设置,找到 `NUT` 相关的设置选项:
UserVars.NutUpsName:ups@10.10.10.111(这里的地址填你们群晖的地址) UserVars.NutUser:monuser UserVars.NutPassword:secret UserVars.NutFinalDelay:60(关机时间,我这是1分钟后关闭esxi) 配置完后在vSphere Client的配置-安全配置文件-服务-NutClient设置与主机一起启动和停止(NutClient是守护进程,要先配置UserVars中的NUT参数再运行NutClient服务。并且每次修改UserVars参数后都要重启NutClient服务才有用)
重启服务器(我这边的 `ESXi 6.7.0` 需要重启服务器,否则配置不能保存):
[root@localhost:~] reboot
`ssh` 中执行 `/opt/nut/bin/upsc ups@10.10.10.111` ,如果输出类似如下信息,则表示连接 `ups` 成功:
[root@localhost:~] /opt/nut/bin/upsc ups@10.10.10.111 battery.charge: 100 battery.charge.low: 10 battery.charge.warning: 50 battery.date: not set battery.mfr.date: 2018/11/04 battery.runtime: 3937 battery.runtime.low: 120 battery.type: PbAc battery.voltage: 13.5 battery.voltage.nominal: 12.0 device.mfr: APC device.model: Back-UPS 650 device.serial: 3B1844X86955 device.type: ups driver.name: usbhid-ups driver.parameter.pollfreq: 30 driver.parameter.pollinterval: 5 driver.parameter.port: auto driver.version: DSM6-2-1-23824-broadwellnk-repack-23824-181009 driver.version.data: APC HID 0.95 driver.version.internal: 0.38 input.sensitivity: low input.transfer.high: 266 input.transfer.low: 165 input.voltage: 216.0 input.voltage.nominal: 220 ups.beeper.status: enabled ups.delay.shutdown: 20 ups.firmware: 822.A3.I ups.firmware.aux: A3 ups.load: 0 ups.mfr: APC ups.mfr.date: 2018/11/04 ups.model: Back-UPS 650 ups.productid: 0002 ups.serial: 3B1844X86955 ups.status: OL ups.timer.reboot: 0 ups.timer.shutdown: -1 ups.vendorid: 051d
验证防火墙设置,执行 `esxcli network firewall ruleset list`,如果看到 `NutServer` 为 `ture` 则表示正常。
最后在 `ESXi` 的服务里面设置 `Network UPS Tools client` 服务随系统启动即可!
battery.charge: 100
battery.charge.low: 1
battery.mfr.date: 2020/06/07
battery.runtime: 2225
battery.runtime.low: 120
battery.type: PbAc
battery.voltage: 13.7
battery.voltage.nominal: 12.0
device.mfr: American Power Conversion
-----------------------------------------------
我这边好像没有“battery.charge.warning: 50”这个参数,不知道什么原因;而且“battery.charge.low: 1”这个参数是1%而不是10%,是不是有点奇怪?