近来增加了一台工控机,上面跑了软路由等业务,万一突然断电 ESXi
坏了启不了,估计就得废好大劲折腾了。以前有给群晖配过一台 APC BK650
的 UPS
,目前 UPS
的 COM
数据输出直接给到了群晖,毕竟无论如何也得优先保障群晖的可靠性。在群晖的设置里面看到过 UPS
服务器的选项,所以想着 ESXi
能不能连接群晖的 UPS
服务器,实现断电自动关机以保证数据安全。
首要登录群晖的 DSM
,在设置里面找到电源选项,打开 UPS
服务器并添加允许连接的 IP
,这里就把 ESXi
的 IP
填写进去(我们的设备地址被静态配置成 10.10.10.2
):
SSH
进到 ESXi
(SSH
功能,默认是关闭的,需要在 ESXi
的服务里面打开 SSH
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# 下载到本机,然后远程传输到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 |
安装的结果如下:
1 2 3 4 5 6 7 |
[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
需要重启服务器,否则软件选项看不到):
1 |
[root@localhost:/tmp] reboot |
接着登录 ESXi
,打开管理,高级设置,找到 NUT
相关的设置选项:
1 2 3 4 5 6 |
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
需要重启服务器,否则配置不能保存):
1 |
[root@localhost:~] reboot |
ssh
中执行 /opt/nut/bin/upsc ups@10.10.10.111
,如果输出类似如下信息,则表示连接 ups
成功:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
[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
服务随系统启动即可!
UserVars.NutFinalDelay
,这个项目的意思是最后延迟时间,单位是秒,你设置后,手工断电观察一下,应该在规定时间就关机了。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%,是不是有点奇怪?