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

前端之家收集整理的这篇文章主要介绍了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.

猜你在找的Linux相关文章