通过 USB 连接的 APC UPS 触发 VMware ESXi 关闭

通过 USB 连接的 APC UPS 触发 VMware ESXi 关闭

我正在将一批 ESXi 5.1 服务器运送到远程办公室,它们将通过 APC UPS 供电。

我希望 UPS 触发所连接服务器的关闭 - 然后我将依靠 ESXi 配置来处理托管在其上的虚拟机的关闭/暂停。

我看到 APC 有一个解决方案使用 PowerChute Network Shutdown 记录但这需要为每个办公室设置一个额外的服务器,并且每个 UPS 都需要网卡。我们通常使用不带网卡的 UPS(例如 Back-UPS Pro)- 它们配有 USB 连接器,在我们办公室所在地很容易找到。

如何通过 USB 将 UPS 连接到 ESXi 主机,然后让 ESXi 检测断电并采取相应措施?有人成功做到这一点吗?

答案1

根据 APC 的说法,这是不可能的,你需要关闭 Powerchute Network。我们用 USB 尝试了多次,但没有找到解决办法。

虚拟机此处有关于使用 APC 认可的解决方案的信息。

还认为 SmartUPS 是更好的选择,而且可以安装网卡。当然,这需要花费更多钱,但如果您的服务器非常重要,那么这笔费用是值得的。还可以为您提供更多监控和警报,这可能在远程站点很有用。您还需要确保所有虚拟机有足够的运行时间才能干净地关闭,然后关闭主机

答案2

是的,这是可能的。以下是我的类似设置的详细信息。

硬件配置: APC Smart-UPS 1500 通过 USB 连接到 ESXi 5.1 主机。此 ESXi 主机上运行着 Linux 虚拟机。UPS 使用 ESXi USB 直通选项连接到此 VM。

软件配置: NUT(网络 UPS 工具)主机在 VM 中运行,本机 ESXi NUT 从属机在 ESXi 主机上运行。

关机逻辑: VM 正在运行 UPS 驱动程序usbhid-ups负责通过 USB 与 UPS 进行通信。向上进程通过 usbhid-ups 驱动程序连接到 UPS,并监控 UPS 状态。厄普斯蒙在同一台机器上运行的主进程连接到向上并启动关机。ESXi 主机正在运行厄普斯蒙它也连接到同一个虚拟机向上通过内部网络。

断电时将发生以下顺序:

  1. UPS 通过 usbhid-ups 向 upsd 报告电源故障。
  2. (可选,如果你想在几分钟内关机而不是电池电量不足时关机,则很有用)VM 上的 upsmon 启动更新计划5 分钟计时器。如果电源恢复,计时器将中止。
  3. 当计时器启动或 UPS 报告电池电量低时,upsmon 会将 FSD(强制关机)标志提升到 upsd。
  4. 在独立 NUT 配置中,FSD 标志会关闭机器。但在这里,关机命令被简单的日志记录所取代,例如“我应该现在关机,但我正在等待主机”。并且什么也不做。
  5. ESXi upsmon 也会读取 FSD​​ 标志,从而启动 ESXi 主机关闭。
  6. ESXi 主机逐个关闭所有虚拟机。重要的是,运行 upsd 的虚拟机应该最后关闭(使用 ESXi 启动/关闭顺序配置)。
  7. 重要的:此虚拟机必须安装 vmware tools。当它从主机收到客户机关机命令时,vmware-tools 关机脚本正在启动。此脚本检查/etc/killpower标志。如果没有标志,则不执行任何操作(这意味着用户激活了 Linux 关闭,而不是 UPS 事件)。但如果标志存在(FSD 处于活动状态),则此脚本会向 UPS 发送延迟断电命令(例如,3 分钟后)。
  8. 运行 vmware-tools 脚本后,客户虚拟机关闭。
  9. ESXi 看到最后的 VM 关闭状态并自行关闭(大约需要 1 分钟,因为现在没有其他机器在运行)。
  10. 剩余 2 分钟后,UPS 切断电源。
  11. 当电源恢复时,ESXi 启动并打开所有虚拟机。必须先启动 UPS 监控机(与关机顺序的配置相同)。

下载:

可以从包中安装适用于 Linux 的 NUT。

可以使用此页面上的最后一个链接下载 ESXi 服务器的本机 NUT 客户端:http://www.networkupstools.org/download.html

我的一些脚本和配置文件在这里(仅显示更改的行):http://pastebin.com/KkEeanK1

笔记:

当然还有更多细节,我花了一些时间才让它正常工作。但现在它表现得非常好。该系统考虑了以下情况:您只是从内部关闭监控虚拟机(vmware-tools 脚本未运行),或者 ESXi 主机启动的虚拟机关闭(没有 /etc/killpower 标志,因此没有 UPS 负载关闭),或者 ESXi 关闭(相同)。唯一重要的是让此虚拟机在主机启动后尽快运行,最后关闭它(因此主机停机时间是可预测的 - 如上所述,对我来说大约是 1 分钟,我预留了 2 分钟以防万一)。

我的 UPS 监控 Linux VM 也是用于备份存储的 Samba/NFS 共享服务器、用于 VM 的 NAT/DHCP 服务器以及一些其他轻量级服务。它在空闲时占用大约 22MHz 的 ESXi CPU 份额和大约 10MB 的活动 RAM。由于使用 NUT,您可以在需要时从同一 UPS 为更多设备供电,并且所有设备都可以正常关闭。无需 PowerChute 和/或昂贵的网络监控卡。

答案3

超级问题。实际上可以很好地做到这一点 - 至少在某些设置上。我在许多 ESXi 5.5 主机上尝试了以下方法。基本上,解决方案如下:

  1. 在 ESXi 主机上启用 SSH 访问
  2. 创建 Linux VM - 我使用 Ubuntu。您只需要进行极简设置 - 无需 GUI 或任何其他东西。
  3. 通过 USB 将您的 APC 设备连接到 ESXi 主机并将其传递到 Linux VM。
    • 确保添加到 VM 的 USB 控制器与 APC 设备连接的实际物理 USB 控制器匹配,即,如果物理设备是 USB3 设备,则仅添加 XHCI 控制器。不匹配似乎会导致 Linux USB 设备驱动程序出现奇怪的问题。
    • 如果一切不顺利,您看到类似 的错误ctrl urb status -62dmesg则可能是物理控制器与虚拟机中的控制器不匹配。如果它们匹配 - 那么就是有问题了。我有一个设置有这种问题,但没有真正的解决方案。
  4. 安装apcupsd在 Linux VM 上 - 在 Ubuntu 中,您可以sudo apt-get install apcupsd安装最新版本。NUT 项目也不错,但我是一个传统主义者。
  5. 通过执行以下操作安装 plink 实用程序sudo apt-get install putty-tools
  6. 通过执行以下操作连接到您的 ESXI 主机plink root@<your ESXi host IP>。您可以立即关闭连接。目的是保存主机密钥,以便当我们通过脚本运行它时,plink 不会再次提示输入该密钥
  7. 编辑/etc/apcupsd/apcupsd.conf并更改以下项目,使其匹配: UPSNAME < the name you'd like your UPS to have > UPSCABLE usb UPSTYPE usb # DEVICE DIRECTIVE should be blank for USB DEVICE 还要确保/etc/default/apcupsdISCONFIGURED=yes
  8. 编辑/etc/apcupsd/apccontrol并滚动到doshutdown案例。让它看起来像这样: doshutdown) echo "UPS ${2} initiated Shutdown Sequence" | ${WALL} # Shut down indirectly by triggering the ESXi host to do the # shutdown via VMWare tools /usr/bin/plink root@< your ESXi host IP > -pw < your root pw > "/sbin/shutdown.sh && /sbin/poweroff" ;;
  9. 使用 重启 apcupsdsudo service apcupsd restart并通过调用 查看是否正常运行apcaccess。如果没有,请检查日志和 dmesg
  10. 确保所有需要在断电时正常关闭的虚拟机都安装了 VMWare Tools。还要确保它们是虚拟机启动/关闭列表的一部分(在 vSphere Web Client 中,转到:)vCenter -> <your host> -> Manage -> Settings -> VM Startup/Shutdown。确保关机操作是关闭客户操作系统。

一旦运行了这些程序,doshutdown第 8 步中的脚本就会在电源故障时被调用。这又会调用 ESXi 主机上的 shutdown.sh 脚本,该脚本会向主机上每个 VM 中的 VMWare Tools 包发出信号,让它们通过客户操作系统彻底关闭。根据我的经验,它比 APC 的 PowerChute 软件效果更好。

如果您喜欢从虚拟机监控事物,您可以在虚拟机上设置从属 apcupsd 实例,以连接到主 UPS 控制 Linux VM。您的从属 apcupsd.conf 文件应该有这样的条目:在这种情况下
UPSTYPE net < your UPS control VM IP >:3551
,类似和这样的条目UPSCABLE无关紧要。这适用于 Windows 版本apcupsd(可用这里) 也可以。您可以使用附带的apctray.exe来检查事物的当前状态。

我想,这就基本涵盖了所有内容。

答案4

了解 vSphere Management Assistant (vMA)这里 我们在办公室使用它来做你正在尝试做的事情,但是通过 USB 连接 Smart-UPS 而不是 Back-UPS。

相关内容