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


18

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

我想让UPS触发所连接服务器的关闭-然后我将依靠ESXi配置来照顾托管在其上的VM的关闭/挂起。

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

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


1
您是否通过主机关闭来定时关闭VM的关闭过程?电池可以保持足够长的时间吗?
ewwhite

感谢您指出了这一点。还没有-在这个阶段,我只是交付用于运行域控制器的ESXi服务器,但是我确信一旦有了资源,我们将添加更多的服务器,此时时间可能会改变。
dunxd

默认情况下,关闭策略很长。但老实说,我不会在ESXi主机或群集上关闭UPS。似乎违反直觉,但从来都不是问题。
ewwhite

那么为什么还要在ESXi主机上安装UPS?如果由于断电或电池电量耗尽而断电,您将得到相同的结果。
dunxd 2013年

应对短暂的停机。但是在较大的站点,我有2-4个小时的UPS电源可用于VMWare群集,存储和网络。
ewwhite

Answers:


5

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

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

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


1
这似乎是两家供应商都支持的最明智的答案。不幸的是,VMware并未考虑在ESX / ESXi中内置任何可原生执行此操作的功能。网络解决方案要求至少一台网络交换机也要通过UPS供电。
dunxd 2013年

2
到这将没有多大意义并不电网通过UPS切换......他们消耗很少corrent和对任何网络操作的关键。
Massimo 2013年

21

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

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

软件配置: VM中运行的NUT(网络UPS工具)主设备,以及ESXi主机上运行的本机ESXi NUT从设备。

关机逻辑: VM正在运行UPS驱动程序usbhid-up,该驱动程序负责通过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标志将关闭计算机。但是这里的shutdown命令由简单的日志记录代替,例如“我现在应该关机,但我正在等待主机”。什么也没做。
  5. ESXi upsmon也会读取FSD标志,这将启动ESXi主机关闭。
  6. ESXi主机一一关闭所有虚拟机。重要的是,运行upsd的VM应该最后关闭(使用ESXi启动/关闭序列配置)。
  7. 重要:此虚拟机必须安装了vmware工具。当它从主机收到guest虚拟机关闭命令时,将启动vmware-tools关闭脚本。该脚本检查/ etc / killpower标志。如果没有标志,则不执行任何操作(这意味着用户激活了Linux关闭,而不是UPS事件)。但是,如果该标志存在(FSD处于活动状态),则此脚本将延迟的关机命令发送到UPS(例如,在3分钟内)。
  8. 运行vmware-tools脚本后,来宾VM将关闭。
  9. ESXi会看到最后一个VM电源关闭状态并自行关闭(大约需要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关闭(相同)。唯一重要的是让此VM在主机引导后尽快运行并最后关闭它(因此主机停机时间是可以预见的-如上所述,对于我来说大约是1分钟,为防止万一,我还要保留2分钟)。

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


14

超级问题。实际上,可以很好地做到这一点-至少在某些设置上。我在许多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/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. 使用重新启动apcupsd,sudo service apcupsd restart并通过调用查看一切是否正常apcaccess。如果不是,请检查日志和dmesg
  10. 确保在断电的情况下需要关闭的所有VM均已安装VMWare Tools。还要确保它们是VM启动/关闭列表的一部分(在vSphere Web Client中,请转到:)vCenter -> <your host> -> Manage -> Settings -> VM Startup/Shutdown。确保关闭操作是关闭来宾操作系统。

一旦运行了这些内容,doshutdown电源中断就会调用步骤8中的scriptlet。依次调用ESXi主机上的shutdown.sh脚本,该脚本向主机上的每个VM中的VMWare Tools软件包发出信号,以通过来宾OS进行干净关闭。以我的经验,它比APC的PowerChute软件更好。

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

我想这几乎涵盖了它。


+1就像一种魅力。第一次!
Morten Kristensen

这个答案非常有效,尽管我们必须在客户办公室调整一下doshutdown顺序。我们${APCUPSD} --killpower/usr/bin/plink零件之前添加了电源,这样一会儿,UPS会在一段时间后关闭,并在断电时自动重启。另外,值得注意的是,步骤6应该root通过su或完成sudo su,但不能通过 来完成sudo -s
Andrea Lazzarotto


2

这里查看vSphere Management Assistant(vMA), 我们可以在我的办公室使用它来完成您要尝试的操作,但是通过USB而不是Back-UPS连接Smart-UPS即可。


请添加更多详细信息,因为这是涉及APC或vmware的未记录的设置。
dunxd 2013年

1

尽管有可能(可能/通常),但我不认为使用电池电源自动关闭计算机是个好主意。如果要这样做,则出于大多数实际目的和目的,您可能应该只为自己节省电池供电的UPS的钱,并让断电为您关闭机器。(当然,干净关机总是比停电更可取,但是,如果您在断电时自动关闭所有设备,那么电池时间可能会长于几分钟,这似乎使您不翼而飞。 )

我一直处理的方法是在电源关闭时让SA发出监视警报,因此SA可以使用其灰色内容来决定何时(或什至)关闭服务器。如果是短暂的中断,则最好根本不关闭服务器,或者您可能希望尽可能长时间地保持某些服务器的运行状态,并仅在电池即将耗尽之前将其关闭。在我看来,确实比简单的规则更适合人类的决策任务。


您不必将UPS配置为立即触发关机,而是希望在电池完全耗尽之前将其关闭,否则您将不得不购买更多电池,尤其是在我工作且断电的某些地方日常。当然,让人们参与进来也很棒,但是您并不总是在远程办公室有系统管理员。
dunxd 2013年

@dunxd好点-我更习惯于至少某些服务器必须保持运转,进入地狱或水位过高的HA环境,因此游戏的名称正在研究如何最佳分配功率(选择性关闭)设备),以尽可能减少服务影响,而这并不是每个人的关注点或用例。
HopelessN00b 2013年

1

在过去的裸机安装中,APC PowerChute Plus是我安装过程中必不可少的部分。使用简单的串行信号电缆及其仅Red Hat二进制文件,可以轻松设置规则来管理本地连接的服务器。提供有关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设备。


0

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


0

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.