Centos7下ups监控apcupsd的使用

时间:2023-03-10 07:19:58
Centos7下ups监控apcupsd的使用

什么是UPS

UPS-Uninterrupted Power System;利用电池化学能作为后备能量,在市电断电等电网故障时,不间断地为用户设备提供(交流)电能的一种能量转换装置。

UPS的主要功能

实现电网与用电器之间的隔离

实现两路电源的不间断切换

提供高质量电源

电压变换和频率变换功能

停电后提供后备时间

为什么用UPS

1、不停电功能,解决电网停电问题

2、交流稳压功能,解决网压剧烈波动问题

3、净化功能,解决电网与电源污染问题

4、管理功能,解决交流动力维护问题

实际使用的过程中使用ups最大的目的是为了当市电突然断电的时候可能会造成文件无法保存、丢失,减少硬件寿命,以及浪涌对服务器损害等事故。

购买ups

在购买ups的时候尽量购买在线式的ups,我们公司的ups购买的是低端 施耐德的APC Smart SUA3000ICH,是不带网络管理卡(AP9631等),所以一台ups只能控制一台Dell服务器。为了能够控制公司30台左右的dell服务器在断电的时候通过ups自动关机而采用了apcupsd来监控ups。

Apcupsd简介

Apcupsd is a UPS control system that permits orderly shutdown of your computer in the event of a power failure.(Apcupsd是一种UPS控制系统,可在发生电源故障时有序关闭计算机。)

Apcupsd安装及配置文件

在低端的ups上面的有两个串口,配给了两条电缆,一条是串行电缆,一条是USB通信电缆。我们使用usb通信电缆将ups和服务器相连接。

下载源码3.14.14:

https://sourceforge.net/projects/apcupsd/files/apcupsd%20-%20Stable/3.14.14/apcupsd-3.14.14.tar.gz/download

Centos7下ups监控apcupsd的使用

启动apcupsd:systemctl start apcupsd

安装成功之后,执行apcaccess或者执行/sbin/apcaccess,会看到以下返回(大概类似),说明安装成功

Centos7下ups监控apcupsd的使用

/etc/apcupsd/apcupsd.conf    apcupsd的配文件

UPSCABLE ether                     //用于将UPS连接到计算机的电缆类型。

UPSTYPE net                          //拥有的apcups类型
DEVICE 192.168.10.3:3551    //如果apcups的模式为nat模式,则要是批核端口的对应格式

LOCKFILE /var/lock                 //apcupsd为指定目录中的串行或USB端口创建一个锁文件。

SCRIPTDIR /etc/apcupsd        //apccontrol和事件脚本所在的目录。

PWRFAILDIR /etc/apcupsd     //apcupsd写入当apcupsd启动系统关闭时创建的powerfail标志文件的目录。

NOLOGINDIR /etc                  //apcupsd写入nologin文件的目录,该文件告诉操作系统禁止新登录。

ONBATTERYDELAY 6           //检测到电源故障直到apcupsd对电池事件发生反应的秒数。

BATTERYLEVEL 5                 //当剩余电池电量低于指定百分比时,apcupsd将在电源故障期间关闭系统。默认值为5

MINUTES 3                            //当UPS内部计算的电池剩余运行时间低于指定的分钟数时,apcupsd将在电源故障期间关闭                                                 系统。默认值为3。

TIMEOUT 90                           //发生电源故障后,apcupsd将在指定的秒数过期后关闭系统。

ANNOY 300                            //指定请求登录用户从系统注销的广播消息之间的时间(以秒为单位)。仅当UPS使用电池运行时,此计时器才会启动。默认值为300秒(5分钟)。

ANNOYDELAY 60                 //指定请求登录用户从系统注销的广播消息之前的延迟时间(以秒为单位)。

NOLOGON disable

KILLDELAY 0

NETSERVER on                   //打开或关闭网络信息服务器(NIS)。

NISIP 0.0.0.0                        //指定apcupsd将侦听传入连接的网络接口的IP地址。默认值为0.0.0.0,这意味着NIS将侦听                                                  所有网络接口上的连接。如果计算机具有多个接口,则可以指定单个接口的IP以限制与该接                                                   口的连接。指定环回地址(127.0.0.1)将使NIS守护程序仅接受来自本地计算机的连接。

NISPORT 3551                     //指定NIS守护程序使用的端口。默认值为3551

EVENTSFILE /etc/apcupsd/apcupsd.events

EVENTSFILEMAX 10

UPSCLASS shareslave      //设置ups的模式,我们主要用主从模式

UPSMODE share               //设置为“禁用”以进行正常的独立操作,指示您正在禁用Share-UPS接口扩展器支持。
STATTIME 0

STATFILE /etc/apcupsd/apcupsd.status   //启动日志

LOGSTATS off

DATATIME 0

配置主从模式

首先尝试用两台Centos7搭建主从模式并自动关机。

首先选择其中一台主机作为Master,连接USB信号线,下载并安装Apcupsd,并修改配置文件

Centos7下ups监控apcupsd的使用Centos7下ups监控apcupsd的使用

配置好之后,master/slave都重新启动。就ok了。

实际使用中有如下问题需要注意

1、一旦安装有管理卡,UPS上自带的串口是不能再使用的

2、因为是smart UPS,apcupsd在关闭服务器之后会调用重启ups指令,这就会有如下一些问题

a、如果apcupsd是master-slave模式,那么理论上可安全关闭每一台服务器,但一旦master服务器有问题,则所有机器会不能关机

b、如果每台服务器独立运行apcupsd,则ups上的一些参数要注意:

由于配备的电池容量只能坚持20分左右,加上对电池到底能坚持多久有一些担心,所以没有用smart ups智能判断关机时间的功能,而是将关机时间设置成10秒,也就是停电10秒就开始关机,这时一些ups的参数(管理卡上配置)作用如下:

Low Battery Duration:  2分钟,这个指的是ups在知道自己还能坚持2分钟时开始发送关机指令,并执行一系列关机过程,由于我在apcupsd上设置了10秒关机,故关机指令以10秒为准

Shutdown Delay:720秒,这个指ups执行一系列关机操作的延时时间,建议设置大一些,这样在ups最后自己关机重启之前,我们有时间做一些其他操作

Maximum Required Delay:2分,这个是关机指令(ups向服务器发送)发送超时时间,没必要修改

Sleep Time:这个不太知道什么意思,调整过似乎没什么影响

Minimum Battery Capacity:ups恢复启动要求的最小电池电量(百分比)

Return Delay:ups恢复延时

最重要的一点,smart UPS在关闭所有服务器(或者是他认为他关闭了所有服务器)之后会自动重启UPS,这时你要小心了,如果有机器没关机就惨了,我就尝过苦头,所以建议shutdown delay设置大一点,如果设置小了即使ups能坚持20分,他也可能5分钟后就重启,还有千万不要在市电恢复之后自己去启动服务器,一定要等待ups自己完成重启之后再启动服务器(建议服务器都设置成通电自启动),如果你在ups自动重启之前手工启动了服务器,后果你知道的。

3、我们自己购买的是施耐德apcups smart 3000系列的,具体参数是2700w/16a,带有8个可插电口,两个串行口。dell r730服务器使用双处理器(设计功率在135w)的情况下,长期满载的功率不会超过350w,加上硬盘和满内存不会超过400w。所以在U盘是的功率为2700w的情况下,可以带6台dell r730的满配服务器,其余的可带交换机极路由器等小功率设备。

4、交换机和路由器一定要连接在上,否则可能会造成master对slave关机不成功!

特别注意

BATTERYLEVEL 5                 //当剩余电池电量低于指定百分比时,apcupsd将在电源故障期间关闭系统。默认值为5

MINUTES 3                            //当UPS内部计算的电池剩余运行时间低于指定的分钟数时,apcupsd将在电源故障期间关闭系                                                        统。默认值为3。

TIMEOUT 90                           //发生电源故障后,apcupsd将在指定的秒数过期后关闭系统。

这三个参数是apcupsd关机指令里面比较重要的,一般我们都使用timeout参数,master设置为240s,slave设置为60s。

意思就是:在发生电源故障后,master对slave说:“市电断开了,现在在使用ups来供电,你要在接收到我给你的指令60s内关机”,然后所有的slave都会关机,然后在240s内master自己也会关机,都关闭之后ups自身也会关机。

在主/从配置中,主设备无法100%确定从设备在执行关闭电源之前全部关闭。要避免这种情况,请确保通过在配置文件中设置不同的TIMEOUT,BATTERYLEVEL或MINUTES参数,将所有从站(客户端)配置为在主站之前关闭 。关机期间可能出现的一个问题可能是旧版本的遗留问题。请务必删除或重命名所有先前版本(/usr/local/sbin/apcupsd或/sbin/powersc)

关闭exsi

在master的配置文件中/etc/apcupsd/apccontrol中加入关闭虚拟机和ESXI主机的脚本。

Centos7下ups监控apcupsd的使用

参考文档

http://www.apcupsd.org/manual/manual.html#basic-user-s-guide

https://fossies.org/linux/misc/apcupsd-3.14.14.tar.gz/

https://www.chiphell.com/thread-1699396-1-1.html

http://bbs.21ic.com/icview-2501542-1-1.html

http://www.360doc.com/content/17/0601/16/13681512_659035982.shtml

https://blog.****.net/windowsxpwyd/article/details/7522137

https://blog.****.net/wangluoyang/article/details/24742483

http://blog.ltns.info/linux/esxi_auto_shutdown_with_apcupsd/