varkai

要么孤独,要么庸俗

VMware ESXi 使用 NUT 实现断电自动关机

2020.05.29 运维

前言

这篇文章主要讲解 VMware ESXi 下安装 NUT 客户端实现断电自动关机,同样的,NUT 在 ESXi 下也提供了现成的软件包,我们只需要安装并配置好就行了,我这里采用的 ESXi 版本是 VMware ESXi 6.7.0 Update 3,其他版本应该也是通用的。

准备工作

ESXi 默认是关闭主机 SSH 功能的,但是我们后续会使用到,所以我们首先要去 WEB 后台开启,进入 WEB 后台,打开 管理后,切换到 服务 选项卡,最后找到列表中的 TSMTSM-SSH 服务将其启动,这样 SSH 功能就临时可以用了。

另外需要修改 ESXi 的默认软件安装策略,否则会阻止软件的安装,进入 WEB 后台后,打开 管理,切换到 安全和用户 选项卡,点击左侧的 接受级别 会弹出软件接受级别的设置,我们将其修改为 社区

接着,我们下载 ESXi 平台下的 NUT 客户端软件包(下载地址:NutClient-ESXi),将下载好的软件包上传到 ESXi 的 /tmp 目录待安装使用。

安装 NUT 客户端

通过 SSH 连接到 ESXi 主机,然后进入到 /tmp 目录后,解压缩 NUT 软件包,最后执行安装脚本 upsmon-install.sh,返回如下的安装信息代表安装成功了。

$ cd /tmp
$ tar -xzvf NutClient-ESXi-2.8.2-2.6.2.x86_64.tar.gz
$ sh upsmon-install.sh
Installation Result
   Message: Operation finished successfully.
   Reboot Required: false
   VIBs Installed: Margar_bootbank_upsmon_2.8.2-2.6.2
   VIBs Removed:
   VIBs Skipped:

配置 NUT 客户端

NUT 客户端安装成功后,我们返回到 ESXi 的 WEB 后台,打开 管理后,切换到 系统 选项卡,在 高级设置 菜单的右边列表中找到 NUT 相关的设置项,可以直接在右上角的搜索中输入 NUT 进行快速查找,一共有6个参数设置,如果没有,可以尝试重启 ESXi 主机后再看,如下图所示:

各参数作用说明:

UserVars.NutFinalDelay:关闭 ESXi 前的等待时间,单位为秒。
UserVars.NutMailTo:接收邮件通知的邮箱地址,如果没有开启邮件通知,这里不用设置。
UserVars.NutPassword:密码,如果没有在群晖上修改过,这里统一填:secret
UserVars.NutSendMail:关机前是否发送邮件通知(0:不发送,1:发送)
UserVars.NutUpsName:监听的网络 UPS 服务器,例子:[email protected](这里填写你们自己群晖地址)
UserVars.NutUser:用户名,如果没有在群晖上修改过,这里统一填:monuser

参数配置完成后,需要重新启动 NutClient 服务,进入 WEB 后台,打开 管理后,切换到 服务 选项卡,找到 NutClient 服务,然后点击上方的 重新启动 按钮,以后每次修改配置参数后,都需要重启该服务,另外需将该服务设置为 随主机启动和停止

到这里,我们的 ESXi 服务器已经可以实现断电自动关机了,但是 ESXi 平台上的虚拟机并不会安全的关闭,我们还需要在 ESXi 上设置虚拟机在主机关闭前自动关机,在主机启动后自动开机,前提条件是虚拟机已经安装好了 VMware Tools,设置方法:进入 WEB 后台,打开 管理后,切换到 系统 选项卡,打开左侧的 自动启动 菜单,然后点击最上方的 编辑设置,按下图设置:

上面的设置只是系统一个总的自动启动停止开关,我们还需要对每台虚拟机进行启用设置,依次点击列表里的虚拟机进行 启用

结语

经过以上的配置,我们的 ESXi 主机以及上面的虚拟机都能断电后自动关机了,我最初的设想也得以完美实现,UPS 系列文章也就到此完结,至于 Windows 和 macOS 系统,网上都有第三方的图形客户端,配置也比较简单,大家可以自行研究。。。😴