AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 462993
Accepted
dunxd
dunxd
Asked: 2013-01-05 06:33:41 +0800 CST2013-01-05 06:33:41 +0800 CST 2013-01-05 06:33:41 +0800 CST

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

  • 772

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

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

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

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

vmware-esxi
  • 9 9 个回答
  • 90246 Views

9 个回答

  • Voted
  1. Oleg Semyonov
    2013-01-30T17:43:41+08:002013-01-30T17:43:41+08:00

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

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

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

    关机逻辑: VM 正在运行 UPS 驱动程序usbhid-ups,它负责通过 USB 与 UPS 进行通信。upsd进程通过usbhid -ups驱动连接UPS,监控UPS状态。在同一台机器上运行的upsmon主进程连接到upsd并启动关闭。ESXi 主机正在运行upsmon的第二个实例,它也通过内部网络连接到同一个虚拟机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 的 VM 应该最后关闭(使用 ESXi 启动/关闭顺序配置)。
    7. 重要提示:此 VM 必须安装 vmware 工具。当它从主机接收到 guest shutdown 命令时,vmware-tools shutdown 脚本正在启动。此脚本检查/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

    我的一些脚本和 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 和/或昂贵的网络监控卡。

    • 25
  2. MrMajestyk
    2014-09-10T00:42:46+08:002014-09-10T00:42:46+08:00

    超级问题。实际上可以很好地做到这一点——至少在某些设置上是这样。我在许多 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. 在 Linux VM 上安装apcupsd- 在 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 Tools 包发出信号,以通过来宾操作系统进行干净关闭。根据我的经验,它比 APC 的 PowerChute 软件更好用。

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

    我认为这几乎涵盖了它。

    • 17
  3. Best Answer
    Dave M
    2013-01-05T06:41:56+08:002013-01-05T06:41:56+08:00

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

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

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

    • 5
  4. the-wabbit
    2013-01-05T06:42:56+08:002013-01-05T06:42:56+08:00

    您可能会考虑将USB 设备直通功能用于运行 PowerChute 或其他能够监控 UPS 运行状况并能够触发 ESXi 主机(例如apcupsd)关机的软件的来宾。ESXi官方仅支持数量非常有限的 USB 设备进行直通,但人们连接和直通不同类别的设备已有一段时间,但取得了不同程度的成功,但 APC UPS USB 似乎根据此演练适用于 Windows VM或者这一个用于 CentOS Linux VM。

    • 4
  5. deveneyi
    2013-01-05T08:21:59+08:002013-01-05T08:21:59+08:00

    从此处查看 vSphere Management Assistant (vMA) 我们在我的办公室使用它来执行您正在尝试的操作,但是通过 USB 而不是 Back-UPS 连接 Smart-UPS。

    • 2
  6. HopelessN00b
    2013-01-05T07:33:44+08:002013-01-05T07:33:44+08:00

    虽然可能(可能/通常),但我认为使用电池自动关闭计算机不是一个好主意。如果你打算这样做,那么出于最实际的意图和目的,你应该只为自己省下电池供电 UPS 的钱,让断电为你关闭你的机器。(诚​​然,完全关闭总是比断电更可取,但如果在断电时自动关闭所有东西,你似乎就错过了电池使用时间超过几分钟的机会。 )

    我一直采用的处理方式是在断电时通过监控向 SA 发出警报,这样 SA 就可以使用他们的灰质来决定何时(甚至是否)关闭服务器。如果是短暂的中断,关闭服务器可能根本不是一个好主意,或者您可能希望让一些服务器尽可能长时间地运行,并且只在电池即将耗尽之前关闭它们。在我看来,这真的像是一项比简单规则更适合人类的决策任务。

    • 1
  7. ewwhite
    2013-01-05T08:06:07+08:002013-01-05T08:06:07+08:00

    在过去的裸机安装时代,APC PowerChute Plus 是我安装过程中不可或缺的一部分。使用简单的串行信号电缆和他们的Red Hat-only 二进制文件,很容易设置规则来管理本地连接的服务器。UPC 电池事件、线路电源事件和关机操作的基本电子邮件通知可用:

    POWERCHUTE MAIL MESSAGE
    Message from PowerChute@Bonanza:
    
    UPS on battery: Blackout 000.0 V. 
    

    和

    POWERCHUTE MAIL MESSAGE
    Message from PowerChute@Bonanza:
    
    Normal power restored: UPS on line.  
    

    或者

    POWERCHUTE MAIL MESSAGE
    Message from PowerChute@Bonanza:
    
    Shutdown started.  
    

    加上一个合理的界面来查看发生了什么......

    在此处输入图像描述

    该软件最终商业化(或被埋在 APC 网站上)。有一些开源方法可以提供类似的东西。但是,对于单个 VMWare ESXi 主机,这一切都会变得复杂。

    这似乎是 VMWare 应该合并到基本管理程序中的东西。它是基本的,可以为用户提供体面的保护。我现在看到的最常见的补救措施是 USB 直通到专用 VM、网络守护程序方法或做我做的事情;没有配置任何自动或电池关机...

    诚然,我通常会使用可以支持系统负载一个小时或更长时间的 UPS,但确实会发生长时间停电。也许另一种选择是收集一些低成本或翻新的网络接口卡,并计划至少购买 SmartUPS 设备......

    • 1
  8. user207685
    2014-02-01T11:57:00+08:002014-02-01T11:57:00+08:00

    查看以下链接。不是最优雅的解决方案,而是一个非常实用、非常直接的解决方案。在安全方面可能存在缺陷(取决于您的特定网络设计、主机上加载的来宾以及用户对这些来宾的访问权限,但您可以进行调用。

    • 0
  9. Norberto Altalef
    2016-05-09T07:49:50+08:002016-05-09T07:49:50+08:00

    我使用了 MrMajestyk 解决方案,仅通过 plink 更改了 ssh 访问,使用 rsa 公钥无需密码即可访问 ssh。apcupsd VM 中生成的 rsa 密钥必须包含在 vmware 主机的 /etc/ssh/keys-root/authorized_keys 中。

    • 0

相关问题

  • ESXi NAS 配置

  • 如何将 Acronis 生成的 vmdk 添加到 esxi?

  • 在 VMWare ESX 和 ESXi 之间进行选择 [关闭]

  • 将(大)虚拟机从 ESXi 3.5 转换为 Hyper-V Server 2008 R2

  • VMWare:ESX 还是 3i?我需要COS吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve