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

dun*_*nxd 20 electrical-power vmware-esxi apc-smart-ups

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

我想让 UPS 触发已连接服务器的关闭 - 然后我将依靠 ESXi 配置来处理托管在其上的 VM 的关闭/暂停。

我可以看到 APC使用他们的 PowerChute Network Shutdown 记录了一个解决方案,但这涉及为每个办公室设置一个额外的服务器,并且每个 UPS 上都需要网卡。我们通常使用不带网卡的 UPS(例如 Back-UPS Pro)——它们带有 USB 连接器,并且在我们办公室所在的位置随时可用。

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

小智 25

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

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

软件配置: NUT(Network UPS Tools)master运行在VM中,原生ESXi NUT slave运行在ESXi主机上。

关机逻辑: VM 正在运行 UPS 驱动程序usbhid-ups,负责通过 USB 与 UPS 通信。所述UPSD进程连接到通过USBHID起坐驱动和监视UPS状态UPS。在同一台机器上运行的upsmon主进程连接到upsd并启动关闭。ESXi主机运行的第二实例UPSMON也连接到同一个VM UPSD经由内部网络。

电源故障时,会发生以下顺序:

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

下载:

Linux 的 NUT 可以从包中安装。

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

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

笔记:

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

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


MrM*_*tyk 17

超级问题。实际上可以很好地做到这一点 - 至少在某些设置上。我已经在许多 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 -62中的错误dmesg,则物理控制器可能与您的 VM 中的控制器不匹配。如果它们匹配 - 那么这是一个问题。我有一个此类问题的设置,但没有真正的解决方案。
  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/apcupsd具有ISCONFIGURED=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. 确保所有需要在断电情况下正常关闭的 VM 都安装了 VMWare 工具。还要确保它们是 VM 启动/关闭列表的一部分(在 vSphere Web Client 中,转到:)vCenter -> <your host> -> Manage -> Settings -> VM Startup/Shutdown。确保关闭操作是关闭来宾操作系统。

一旦您运行了这些东西,doshutdown就会在电源故障时调用步骤 8 中的scriptlet。这将调用 ESXi 主机上的 shutdown.sh 脚本,该脚本向主机上每个 VM 中的 VMWare 工具包发出信号,以通过来宾操作系统进行干净关闭。根据我的经验,它比 APC 的 PowerChute 软件效果更好。

如果您想从您的 VM 监控事物,您可以在它们上设置从属 apcupsd 实例,这些实例连接到主 UPS 控制 Linux VM。您的从属 apcupsd.conf 文件应该有这样的条目:在这种情况下,诸如此类的
UPSTYPE net < your UPS control VM IP >:3551
条目UPSCABLE无关紧要。这也适用于apcupsd(可在此处获得)的 Windows 版本。您可以使用包含apctray.exe来检查事物的当前状态。

我认为这几乎涵盖了它。


Dav*_*e M 5

根据 APC 的说法,这是不可能的,您需要关闭 Powerchute 网络。我们用 USB 尝试了很多次,但没有找到解决方案。

VMWare在此处提供有关使用 APC 批准的解决方案的信息。

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

  • *不*通过UPS为网络交换机供电没有多大意义......它们消耗的电流非常少,并且对任何网络操作都至关重要。 (2认同)