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

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

正在运行两个apcupsd实例,每个实例都连接到自己的UPS.它们都可以检测UPS何时处于电池状态,然后每个UPS都可以触发服务器上的关机.

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

注意:Smart-UPS 3000 XLM具有“电源同步”功能,可以连接到其对等设备并检测其状态.但当我从其中一个中取出插头时,无论如何都发送了关机命令.我正在考虑修改关闭脚本以检查“apcaccess”,如果其他ups已关闭.任何有关此的经验将不胜感激!

解决方法

目前,当两个UPS中的一个死亡时,会触发doshutdown事件,并通过apccontrol执行认脚本. doshutdown脚本忽略了第二台UPS,因为它们没有事件连接,并且正常关机.

为了使doshutdown事件有点连接,apcupsd的两个实例需要一个专门定制的配置文件.差异将驻留在必须从中执行事件脚本的目录中.

一个ups的主要属性,在/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文件;如果不是,则为ups关闭创建下行文件,然后退出.如果是,意味着另一台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]

请看一下detailed documentation.

编辑修复了/tmp/ups[01].is.down名称,缺少.is.

相关文章

/etc/sysctl.conf这个目录主要是配置一些系统信息,/etc/sys...
1.作用 useradd或adduser命令用来建立用户帐号和创建用户的起...
它们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅...
不管是我们在安装软件还是监测软件的使用性能,我们都要随时...
装好Tomcat7后,发现除了本机能访问外界访问不了,岂有此理。...
修改防火墙配置需要修改 /etc/sysconfig/iptables 这个文件,...