一台服务器,两台APC UPS在冗余电源上:如何触发关机?


10

我有一台服务器机架,其冗余电源插入了两个APC Smart-UPS 3000 XLM。每个UPS连接到两个不同的电源。

正在运行两个apcupsd实例,每个实例都连接到其自己的UPS。他们都可以检测UPS何时使用电池供电,然后每个UPS都可以触发服务器关闭。

问题是:如果只有一台UPS电池没电了,怎么不关机?

注意:Smart-UPS 3000 XLM具有“电源同步”功能,该功能可以连接到其对等方并检测其状态。但是,当我从其中一个拔出插头时,无论如何都发出了关机命令。我正在考虑修改关闭脚本,以在其他启动失败时使用“ apcaccess”进行检查。任何经验,将不胜感激!

Answers:


13

当前,当两个UPS之一死亡时,将触发doshutdown事件,并通过apccontrol执行默认脚本。所述doshutdown脚本忽略第二UPS,因为它们不是活动连接,并与停机正常进行。

为了使doshutdown事件有所关联,apcups的两个实例需要专门定制的配置文件。区别在于必须在其中执行事件脚本的目录中。

首次出现的主要特性 /etc/apcupsd/apcupsd.ups0.conf

SCRIPTDIR /etc/apcupsd/ups0
UPSNAME ups0
DEVICE /dev/ups0
PWRFAILDIR /etc/apcupsd/ups0
NOLOGINDIR /etc/apcupsd/ups0
NISPORT 3551
EVENTSFILE /var/log/apcupsd.0.events

对于ups1, /etc/apcupsd/apcupsd.ups1.conf

SCRIPTDIR /etc/apcupsd/ups1
UPSNAME ups1
DEVICE /dev/ups1
PWRFAILDIR /etc/apcupsd/ups1
NOLOGINDIR /etc/apcupsd/ups1
NISPORT 3552
EVENTSFILE /var/log/apcupsd.1.events

每个scriptdir应获得默认脚本的副本。
我们要自定义doshutdown脚本,该脚本不会直接关闭计算机,而是必须检查其他UPS是否仍在打开或处于关闭模式。

doshutdown脚本的顶部,我们可以添加如下内容

对于ups0

if [ ! -f /tmp/ups1.is.down ]
then
  touch /tmp/ups0.is.down
  exit 99
fi

对于ups1

if [ ! -f /tmp/ups0.is.down ]
then
  touch /tmp/ups1.is.down
  exit 99
fi

状态99具有特殊含义,它告诉apccontrol停止正在进行的操作。这五行检查是否已创建另一个UPS-down-file。如果为,则为ups关闭创建down-file,然后退出。如果,则意味着另一台UPS已关闭,那么该UPS也将关闭,因此脚本应继续运行并关闭计算机。

这些文件/tmp/usp[01].is.down指示ups [01]当前是否关闭。

重要提示:如果已在上一个会话中创建了这些文件,则apcupsd的init.d启动脚本应删除这些文件:

rm -f /tmp/usp[01].is.down

最后,应该为上面创建的目录/ etc / apcupsd / ups [01]赋予apcupsd用户(或运行实例的任何相关用户)访问权限。

chown -R apcupsd /etc/apcupsd/ups[01]

请查看详细的文档

编辑固定/tmp/ups[01].is.down名称,该名称.is不见了。


1
普通用户可以通过/tmp/ups1.is.down停止服务器;touch /tmp/ups0.is.down:D因此,例如使用/ var / run会更好。顺便说一句。如果有人剪切并粘贴解决方案,则rm -f /tmp/usp[01].is.down是一个错字。顺便说一句,当电源恢复时,您应该从apccontrol的废电池盒中删除/tmp/ups[01].is.down。
Harka Gyozo

1
我建议在检查另一个文件之前先触摸自己的is.down文件-现在,我认为如果两个起音同时发生,则竞赛条件窗口很小。
迈克尔·科恩

4

看一下坚果。它处理得很好。定义每个UPS的电源数量和所需的电源数量。只要UPS上没有足够的电源,就不会触发关机。

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.