基于Apcupsd的UPS配置使用总结(局域网/内外网共享)

红薯 发布于 2009/07/08 16:42
阅读 2K+
收藏 0

在开始这篇文章之前首先要明确一点,在有复数台设备共享UPS的时候,绝对不是插上电源这么简单的,这也是我这几天折腾UPS的最大心得- -。

现在虽然智能型UPS也不算稀罕东西了,不过对于局域网来说仍存在一定的局限性。比如我这次折腾的APC Smart-UPS 1500型。设备商亲切的提供了作为可选配置的串口信号分离器和专用管理软件。但每一样的价格都几乎和再买一个UPS差不多了。好在随机附带有最基本的USB通信功能,那么就利用Apcupsd来实现与收费设备同样的功能吧。

同一网络内的Windows主从模式设置

Apcupsd在Windows下的配置相对简单,首先尝试用两台Windows搭建主从模式并自动关机。

首先选择其中一台主机作为Master,连接USB信号线,下载并安装Apcupsd的Win32版,目前最新版是3.14.5 Stable。

安装完毕后我们可以通过修改C:\apcupsd\etc\apcupsd\apcupsd.conf更改设置,配置文件如下

UPSCABLE usb
UPSTYPE usb
DEVICE
SCRIPTDIR C:\apcupsd\etc\apcupsd
PWRFAILDIR C:\apcupsd\etc\apcupsd
NOLOGINDIR C:\apcupsd\etc\apcupsd
ONBATTERYDELAY 6
BATTERYLEVEL 5
MINUTES 3
TIMEOUT 90
ANNOY 300
ANNOYDELAY 60
NOLOGON disable
KILLDELAY 0
NETSERVER on
NISIP 0.0.0.0
NISPORT 3551
EVENTSFILE C:\apcupsd\etc\apcupsd\apcupsd.events
EVENTSFILEMAX 10
UPSCLASS standalone
UPSMODE disable
STATTIME 0
STATFILE C:\apcupsd\etc\apcupsd\apcupsd.status
LOGSTATS off
DATATIME 0

其实只在默认配置的基础上更改了一行

TIMEOUT 90

即断电后90秒后自动关机。虽然根据配置文件的说明,貌似还应该将UPSCLASS改为sharemaster,UPSMODE改为share。但实际上这样更改以后反而会可能出现网络错误的提示,实践证明这两处设定完全没有必要。

接下来在另一台Windows上配置SLAVE模式,同样安装Apcupsd后修改配置文件中的下列部分:

UPSCABLE ether
UPSTYPE net
DEVICE 192.168.0.253:3551
TIMEOUT 30
UPSCLASS shareslave
UPSMODE share

DEVICE指向Master主机的IP,代表从这个IP接受断电信号。

如果不出意外的话,现在应该已经可以实现Win32下的中从模式自动关机了。

如果工作不正常,可以从C:\apcupsd\etc\apcupsd\apcupsd.events查看错误信息。

同一网络内Linux作为Master主机

这里以CentOS为例。首先下载apcupsd-3.14.5.tar.gz并解压缩

# tar –xvf  apcupsd-3.14.5.tar.gz

为了支持网络模式并加入即时监控的CGI,在编译前加入下列参数

# cd apcupsd-3.14.5
./configure --enable-cgi --with-cgi-bin=/etc/apcupsd/cgi --enable-usb --enable-master-slave

如果缺少依赖关系的包,可以根据提示安装,比如这里就加入了cgi模式,就需要绘图的CGIGD支持,用yum可以轻松安装

# yum install gd-devel

然后是编译和安装

# make
# make install

安装完毕后编辑配置文件

# vi /etc/apcupsd/apcupsd.conf

UPSCABLE usb
UPSTYPE usb
DEVICE
LOCKFILE /var/lock
SCRIPTDIR /etc/apcupsd
PWRFAILDIR /etc/apcupsd
NOLOGINDIR /etc
ONBATTERYDELAY 6
BATTERYLEVEL 5
MINUTES 3
TIMEOUT 90
ANNOY 300
ANNOYDELAY 60
NOLOGON disable
KILLDELAY 0
NETSERVER on
NISIP 0.0.0.0
NISPORT 3551
EVENTSFILE /var/log/apcupsd.events
EVENTSFILEMAX 10
UPSCLASS sharemaster
UPSMODE share
STATTIME 0
STATFILE /var/log/apcupsd.status
LOGSTATS off
DATATIME 0

将Apcupsd加入启动列表

# /sbin/chkconfig --add apcupsd

如果服务器装有Apache,那么可以通过网页查看UPS状况,在Apache设定文件中加入

ScriptAlias /apcupsd/  "/etc/apcupsd/cgi/"

启动Apcupsd

# /sbin/service apcupsd start

即可通过访问http://localhost/apcupsd/multimon.cgi获得UPS状态。

在Linux的Master模式下,UPSCLASS和UPSMODE的设置是必须的,其他与Win32下没有区别,同样可以通过查看/var/log/apcupsd.events得到启动日志。而Slave主机无论Windows或Linux都可以参照上文的配置。

不同网络的Linux和Windows互连共享UPS

上面的配置都基于主机在同一网络内这一前提,假设一台Win主机a放置于A网络,另一台Linux主机b放置于B网络,ab主机想要共享同一UPS 要怎么做?最简单的方法当然是购买设备商提供的信号分离器。不过相对廉价的方法也是有的,那就是通过双网卡实现双机互联然后共享UPS。

首先要为每台主机增加一块网卡,然后用交错双绞线(Crossover cable)互联。只要为这两台主机设置同一网段相同掩码,即可实现双机互联。

比如将A网络的Windows主机作为Master

网卡1:
IP:192.168.1.2
子网掩码255.255.255.0
下略...

网卡2:
IP:10.1.1.2
掩码:255.255.255.248

B网络的Linux主机做如下配置:

# vi /etc/sysconfig/network-scripts/ifcfg-eth1

DEVICE=eth1
ONBOOT=yes
BOOTPROTO=static
HWADDR=XXXXXXXXXXXXXXXXXXX #此处为马赛克
NETMASK=255.255.255.248
IPADDR=10.1.1.3
GATEWAY=
GATEWAYDEV=

注意Linux在多块网卡时只需指定一个网关,所以此处GATEWAY和GATEWAYDEV均留空。

然后在Slave主机中指定Master主机的IP即可收工。

DEVICE 10.1.1.2:3551

注意点

Master主机将断电信号传递给Slave有延迟时间,这个延迟时间可以通过ANNOYDELAY来设定,但至少要让Master的自动关机延迟要大于Slave自动关机延迟+ANNOYDELAY才能保证Slave也能正常关机。

Apcupsd在配置时经常会提示网络错误,有时明明是同样的配置,重启之后就会报错,而即使重启服务也无济于事。这多半都是因为主机的启动顺序不对造成的,一定要在Master主机的服务启动后再开启Slave主机,切记切记。

加载中
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部