ESXi 6.7 使用NUT Client连接群晖UPS服务器

近来增加了一台工控机,上面跑了软路由等业务,万一突然断电 `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 http://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` 服务随系统启动即可!

参考链接


发布者

《ESXi 6.7 使用NUT Client连接群晖UPS服务器》上有15条评论

  1. 你好,这篇文章对我有非常大的帮助,十分感谢。但是我想提出一个问题,我看您有勾选群晖里的“进入安全模式后将ups断电”,可是NUT对ups的判定是进入低电量模式(battery.charge.low: 10大概是这一项?10%可能是?)才会开始关机进程,如果群晖马上进入安全模式的话,ups也会跟着一起断电,那到时候esxi也就会被直接拔电了,就失去了ups原本的意义了。
    1. 我这边是设置时间的,断电超过1分钟NUT就命令设备关机,整个设备可以支撑5分钟,我要求群晖坚持到10%,其他设备要求1-2分钟,不管电量是多少,都自动关机,我这边设备比较多,耗电快,如果到10%了,坚持不到设备关机的。
  2. 你好啊,我想问一下,ssh 中执行 /opt/nut/bin/upsc ups@10.10.10.111可以弹出信息来,但是,里面的UPS参数怎么样才能设置呢?比如一个电池电量 低的值是10%,battery.charge.low: 10,可是我的好像是1%,所以ESXI在判断的时候是按照电量低这个值去判断的。我们怎么修改这个值呢
    1. 我这边是设置时间的,断电超过1分钟NUT就命令设备关机,整个设备可以支撑5分钟,我要求群晖坚持到10%,其他设备要求1-2分钟,不管电量是多少,都自动关机,我这边设备比较多,耗电快,如果到10%了,坚持不到设备关机的。
      1. 终于等到大神你回复了,我想知道这个“设置时间的,断电超过1分钟NUT就命令设备关机”,这个时间应该在哪里设置?这个文章里我找了好久都没有看到哦。请教一下,谢谢了
          1. “NUT seconds to wait on low battery event before shutting down”这个图跟设置项我看过了,也测试过,这个设置项的意思不是到达电量低时再等待设置的时候才关机吗,我不知道这个电量低的值是怎么定义的。
          2. 这个是收到低电量警告的时候延迟多长时间关机,我目前接触到的设备一般在 50%-80%的时候,就已经发送低电量警告了,因此我这边可以在收到警告后再去处理。
        1. 注意信息,battery.charge.warning: 50 我这边是在 50%的时候,UPS就发送低电量警告信息了,然后收到这个警告信息之后 60秒关机。 battery.charge.low: 10 的时候,应该发送关机信息了,因此这个参数一般不需要修改的,只需要处理收到警告之后的逻辑即可。
          1. ------------------------------------------------
            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%,是不是有点奇怪?
          2. 今天电话售后,售后说他们不对这个进行技术支持,他们有windows版的软件,但其他工具可能要问开发商了。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注