我正在向一些远程办公室发送一堆ESXi 5.1服务器,他们将通过APC UPS供电。
我想让UPS触发连接服务器的closures – 然后我将依靠ESXiconfiguration来closures托pipe在其上的虚拟机的closures/挂起。
我可以看到APC 使用PowerChute Network Shutdownlogging了一个解决scheme,但是这需要在每个办公室设置一个额外的服务器,并且在每个UPS上都需要网卡。 我们通常使用不带网卡的UPS(例如Back-UPS Pro) – 它们带有USB连接器,在我们的办公室所在地可以随时使用。
如何通过USB将UPS连接到ESXi主机,然后让ESXi检测到停电并据此采取行动? 有没有人设法做到这一点。
根据APC,这是不可能的,你需要Powerchutenetworkingclosures。 我们用USB试了很多次,发现没有解决办法。
VMWare有关使用APC批准的解决scheme的信息。
也会认为SmartUPS将是一个更好的select,你可以适应网卡。 自然更多的钱,但如果你的服务器是非常重要的,这个成本应该是值得的。 还可以为您提供更多的监控和警报,这在远程站点可能有用。 您还需要确保有足够的运行时间让所有虚拟机彻底closures,然后closures主机
是的,这是可能的。 这里是我的类似设置的细节。
硬件configuration:通过USB连接到ESXi 5.1主机的APC Smart-UPS 1500。 在此ESXi主机上运行的Linux虚拟机。 UPS使用ESXi USB传递选项连接到此VM。
软件configuration:在VM中运行的NUT(networkingUPS工具)主服务器以及在ESXi主机上运行的本机ESXi NUT从服务器。
关机逻辑: VM正在运行UPS驱动程序usbhid-ups ,负责通过USB与UPS进行通信。 升级过程通过usbhid-ups驱动程序连接到UPS并监视UPS状态。 运行在同一台机器上的升级主进程连接到upsd并启动关机。 ESXi主机正在运行第二个upsmon的实例,它也通过内部networking连接到相同的虚拟机upsd 。
发生电源故障时,将执行以下步骤:
下载:
Linux的NUT可以从软件包安装。
ESXi服务器的本地NUT客户端可以使用此页面上的最后一个链接进行下载: http : //www.networkupstools.org/download.html
一些我的脚本和conf文件在这里(只显示更改的行): http : //pastebin.com/KkEeanK1
笔记:
当然,还有更多的细节,我花了一些时间才能做到这一点。 但现在它performance非常好。 这个系统解释了刚刚从内部closures监控虚拟机的情况(vmware-tools脚本未运行),或者是ESXi主机启动的虚拟机closures(没有/ etc / killpower标志,因此没有UPS卸载),或者如果是ESXi关机(相同)。 唯一重要的是让这个虚拟机在主机启动后尽快运行,并最后closures它(所以主机停机时间是可以预测的 – 就像上面说的那样,对我来说大概是1分钟,我保留2分钟以防万一)。
我的UPS监控Linux VM也是用于备份存储的Samba / NFS共享服务器,用于虚拟机的NAT / DHCP服务器以及其他一些轻量级服务。 在闲置时,大约需要22MHz的ESXi CPU份额和大约10MB的活动RAM。 由于使用NUT,您可以根据需要为同一UPS上的更多设备供电,并且可以正常closures所有设备。 不需要PowerChute和/或昂贵的networking监视器卡。
超级问题。 实际上可以做得很好 – 至less在一些设置上。 我在许多ESXi 5.5主机上尝试了以下配方。 基本上,解决scheme是这样的:
dmesg
看到ctrl urb status -62
这样的错误,则可能是物理控制器与虚拟机中的物理控制器不匹配。 如果他们匹配 – 那么这是一个问题。 我有一个这样的问题的设置,并没有真正的解决scheme。 apcupsd
– 在Ubuntu上,你可以用sudo apt-get install apcupsd
安装最新版本。 NUT项目也很好,但我是一个传统主义者。 sudo apt-get install putty-tools
plink sudo apt-get install putty-tools
plink root@<your ESXi host IP>
连接到您的ESXI主机。 您可以立即closures连接。 我们的目标是保存主机密钥,以便在我们通过脚本运行时,plink不会再次提示 /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
has ISCONFIGURED=yes
/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" ;;
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" ;;
sudo service apcupsd restart
重新启动apcupsd,并通过调用apcaccess
查看是否正在工作。 如果没有,请检查日志和dmesg vCenter -> <your host> -> Manage -> Settings -> VM Startup/Shutdown
)。 确保closures操作是closures客户操作系统。 一旦你运行了这些东西,第8步中的doshutdown
scriptlet就会在电源故障时被调用。 这轮将调用ESXi主机上的shutdown.sh脚本,该脚本通过主机上的每个虚拟机中的VMWare Tools软件包发出信号,通过guest虚拟机操作系统进行干净closures。 根据我的经验,它比APC的PowerChute软件更好。
如果您想监视虚拟机中的事情,可以在连接到主UPS控制Linux虚拟机的设备上设置从属apcupsd实例。 你的slave apcupsd.conf文件应该有这样的条目:
UPSTYPE net < your UPS control VM IP >:3551
在这种情况下, UPSCABLE
等条目无关紧要。 这也适用于Windows版本的apcupsd
( 在这里可用)。 您可以使用附带的apctray.exe
来检查事物的当前状态。
我想,这几乎涵盖了它。
您可以考虑将USB设备直通function用于运行PowerChute的客户端或者其他能够监控UPS运行状况并能够触发ESXi主机(例如apcupsd )closures的软件 。 ESXi 正式只支持非常有限数量的USB设备进行直通 ,但是人们已经连接并通过不同类别的设备已经有了不同的成功,但是APC UPS USB似乎能够根据本次Windows VM或者这个用于CentOS Linux VM 。
从这里查看vSphere Management Assistant(vMA)我们在我的办公室使用它来完成您正在尝试的操作,但Smart-UPS通过USB而不是Back-UPS连接。
虽然可能(可能/一般),我不认为电池电源自动关机是一个好主意。 如果你打算这么做的话,那么对于大多数实际的意图和目的,你可能应该为自己节省电池供电的UPS的钱,并让你的机器停电。 (当然,一个干净的关机总是比电源丢失更好,但是如果在丢失电源时自动closures所有的东西,你似乎错过了几分钟的电池时间。 )
我一直处理的方式是在电源closures时监视SA,以便SA可以使用它们的灰色事件来决定何时(或者甚至是否)closures服务器。 如果是短暂的中断,closures服务器可能不是一个好主意,或者您可能想让一些服务器尽可能长时间地运行起来,只有在电池即将耗尽之前closures服务器。 真的,在我看来,像一个更适合人类的决策任务,而不是一个简单的规则。
在过去的裸机安装中 ,APC PowerChute Plus是我安装过程中不可或缺的一部分。 使用简单的串行信号电缆和Red Hat专用的二进制文件 ,可以轻松地设置规则来pipe理本地连接的服务器。 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应该已经整合到基础pipe理程序中的东西。 这是基本的,可以为用户提供体面的保护。 我现在看到的最常见的补救措施是USB通过专用虚拟机,networking守护进程或做我所做的事情; 不configuration任何自动或电池关机…
当然,我通常会使用可以支持一小时或更长时间的系统负载的UPS,但是会发生长时间的中断。 也许另外一个select是收集一些低成本或翻新的networking接口卡,并计划购买SmartUPS设备至less…
看看下面的链接 。 不是最优雅的解决scheme,而是一个非常实用,非常简单的解决scheme。 在安全性方面可能存在一些缺陷(取决于您的特定networkingdevise,主机上加载的客人以及访问用户对这些客人的访问权限,但是您可以拨打该电话。
我使用MrMajestyk解决scheme,只改变了通过使用rsa公钥ssh访问没有密码通过plink的ssh访问。 在apcupsd虚拟机中生成的rsa密钥必须包含在vmware主机的/ etc / ssh / keys-root / authorized_keys中。