Fal*_*ken 10 linux ups redundancy apcupsd
我有一个机架式服务器,其冗余电源插入了两个 APC Smart-UPS 3000 XLM。每个 UPS 都连接到两个不同的主电源。
两个 apcupsd 实例正在运行,每个实例都连接到自己的 UPS。它们都可以检测 UPS 何时使用电池,然后每个 UPS 都可以触发服务器关机。
问题是:如果只有一个 UPS 电池耗尽,如何不关机?
注意:Smart-UPS 3000 XLM 具有“电源同步”功能,可以连接到对端并检测其状态。但是当我从其中一个中拔出插头时,无论如何都发送了关机命令。我正在考虑修改关闭脚本以检查“apcaccess”是否其他 ups 已关闭。任何这方面的经验将不胜感激!
Bre*_*bad 13
当前,当两个 UPS 之一死机时,会触发doshutdown事件,并通过apccontrol执行默认脚本。所述doshutdown脚本忽略第二UPS,因为它们不是活动连接,并与停机正常进行。
为了将doshutdown事件连接起来,apcupsd的两个实例需要一个专门定制的配置文件。差异将存在于必须执行事件脚本的目录中。
first 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
Run Code Online (Sandbox Code Playgroud)
而对于 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
Run Code Online (Sandbox Code Playgroud)
每个scriptdir都应该获得默认脚本的副本。
我们要自定义doshutdown脚本,它不会直接关闭机器,而是要检查其他 UPS 是否仍然打开,或者处于关闭模式。
在doshutdown脚本的顶部,我们可以添加类似
对于 ups0
if [ ! -f /tmp/ups1.is.down ]
then
touch /tmp/ups0.is.down
exit 99
fi
Run Code Online (Sandbox Code Playgroud)
对于 ups1
if [ ! -f /tmp/ups0.is.down ]
then
touch /tmp/ups1.is.down
exit 99
fi
Run Code Online (Sandbox Code Playgroud)
状态 99 有一个特殊的含义,它告诉apccontrol停止正在进行的操作。这五行检查是否已经创建了另一个 UPS-down-file ;如果没有,则为下降的上升创建下降文件,并退出。如果是,则意味着另一台 UPS 已关闭,这台 UPS 也已关闭,因此脚本应继续并关闭机器。
这些文件/tmp/usp[01].is.down指示 ups[01] 当前是否关闭。
重要提示:apcupsd 的 init.d 启动脚本应该删除这些文件,如果它们是在之前的会话中创建的:
rm -f /tmp/usp[01].is.down
Run Code Online (Sandbox Code Playgroud)
最后,上面创建的目录 /etc/apcupsd/ups[01] 应该可以访问apcupsd用户(或运行实例的任何相关用户)。
chown -R apcupsd /etc/apcupsd/ups[01]
Run Code Online (Sandbox Code Playgroud)
请查看详细文档。
编辑修复了/tmp/ups[01].is.down名称,.is丢失了。
| 归档时间: |
|
| 查看次数: |
5538 次 |
| 最近记录: |