一大早刚上班,财务科的白小萌就来找孔大力,说是昨晚上财务系统又进不去了,让他赶紧排查一下问题。
孔大力检查了财务的几台电脑,都是无法连接财务系统,网络又是正常的。
可是当 ping
服务器时,发现无法 ping
通,心想是不是服务器出故障掉线了,于是一路小跑奔向机房。
打开机房大门,孔大力进去这么一看,真是不看不要紧,一看吓一跳,服务器居然关机了!
“谁把服务器给关了?也没停电啊!”,他自言自语按下了开机键,还好服务器可以正常启动,财务系统也能正常访问了。
白小萌一看系统恢复了,虽然挺高兴,但还是向孔大力抱怨:“这都好几次了,每次老板要数据都给碰上出问题,到底怎么回事啊,赶紧解决一下吧!”
孔大力皱了皱眉,嘴上轻轻地说了声“哦”,心里却开始犯起了嘀咕,怎么就老是自动关机了呢?
后来经过确认,原来是因为这段时间高温天,常有供电电压不稳的情况发生,有时楼里就会跳闸断电,这一断电服务器自然就自己给关了,等来电后也不会自己启动。
这孔大力就琢磨开了,那有什么办法可以让服务器知道要停电了自个关机,然后等来电了自个再启动起来呢?
小伙伴们,你们有没有遇到像孔大力这样的情况呢?
经过一翻研究,我还真研究出了解决之道!
基本实现原理
简单地说,自动关机由 UPS
提供信号来触发,而自动开机则由服务器上的电源设置完成自动开机。
首先是自动关机,可以给服务器加装一个 UPS
设备,然后通过线缆将 UPS
连接到服务器上。
与此同时在服务器上安装电源监测软件,用于检测电源信号,以便判断并实施关机动作。
其次是自动开机,在服务器上设定断电后本机电源的处理动作。
因为现在的主板都是 ATX
结构,支持电源来电自动开机。
我不方便拿服务器上的设定,就拿类似下图台式机的设定举例,其实质是一样的。
Restore On AC Power Loss
意为断电后当供电恢复时采取什么动作。
其选项有三个,分别是始终关闭电源 Power Off
、始终开启电源 Power On
和 保持最终状态 Last State
。
在这儿我们应该选始终开启电源 Power On
。
UPS
可选的型号有很多,但一般选在线式的,并且要支持信号连接功能的。
在此以 APC Smart-UPS 1500
这个型号为例说明。
通过设备后背板选择相应的连接线缆类型,可以用串口,也可以用 USB
。
将 UPS
和服务器两者开机后,用线缆连接。
UPS
电源监控软件的安装
选用 Rocky Linux
,个人认为它是未来 CentOS
的最佳接任者,使用起来和 CentOS
基本没有什么差别。
而 Windows
平台下安装基本也与 Linux
差不多,可以互相参考,在这儿我以实际我做过的为准。
新建一个目录(比如 /pcbeagent
),然后将 pcbeagent
程序包上传并解压缩。
tar zxvf pcbeagent-10.0.2-301-EN.x86_64.tar.gz
解压缩后得到很多文件,其中有两个我们会用到,一个是安装脚本,另一个是 pbeagent
主安装程序。
紧接着执行安装脚本。
./install_pbeagent_linux.sh
安装程序启动,选择语言。
为了避免乱码,我们还是老老实实用英文,这样也能多了解安装使用期间各种单词的含义。
阅读协议内容,按空格或回车翻页到最后,输入 yes
回车表示同意。
接下来询问你将 PowerChute
安装在哪儿,通常我选择默认位置,因为这样将来好处理问题。
默认安装在 /opt/APC/PowerChuteBusinessEdition/Agent
。
输入 yes
回车,开始安装。
在安装的过程中可能会遇到一些奇怪的坑,比如像这样,直接提示安装失败。
通过提示,需查看 rpm.log
日志文件,内容如下。
warning: pbeagent-10.0.2-301-EN.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID 7cf6d1fd: NOKEY error: %prein(pbeagent-10.0.2-301.x86_64) scriptlet failed, exit status 3 error: pbeagent-10.0.2-301.x86_64: install failed
说明在安装 rpm
文件时出错,于是直接手动安装这个 rpm
包试试。
rpm -ivh pbeagent-10.0.2-301-EN.x86_64.rpm
结果也报错了,不过可以看出来是没有安装 unzip
的原因。
这就好办了,它要啥我们就给啥呗,满足它,安装 unzip
。
yum install -y unzip
再来执行一下安装脚本。
./install_pbeagent_linux.sh
OK,没问题了,安装进程进入了配置阶段。
rpm
包安装完成后会生成配置文件 config.sh
,此时等同于手动执行了这个 config.sh
文件,当然你事后再用它来配置也没问题。
提示输入用户名和密码,这个用户名和密码是之后用于管理的 Web
界面的登录用户和密码,切记务必设定后保管好。
如果不幸忘记了密码怎么办?
不用担心,文末给你总结了重置用户名和密码的方法,着急的话你可以直接跳到文末查找。
用户名和密码的要求:
- 用户名的长度必须介于 6 到 128 个字符之间。
- 密码要求:
- 长度至少 8 个字符,最多 128 个字符。
- 1 个大写字母和 1 个小写字母。
- 1 个数字或特殊字符。
- 用户名不能是密码的一部分。
OK,接下来就是针对具体 UPS
设备的型号来设置了。
说实话,这玩意很容易搞错,所以你需要根据说明书上或设备上的实际型号来选择。
然后就是选择线缆的连接方式,通常有串口或 USB
方式。
配置程序会检测 UPS
设备是否在线,我这儿做测试没有真的连接,所以会提示是否连接正常。
一切OK,最后程序询问你是否启动 PowerChute
代理服务程序。
毫无悬念地代理服务正常启动了,这个时候我们就可以来管理它了。
今后完全可以手动启动或停止这个代理服务。
# 启动服务
systemctl start PBEAgent
# 停止服务
systemctl stop PBEAgent
# 重启服务
systemctl restart PBEAgent
# 查看服务状态
systemctl status PBEAgent
安装程序已经将 PBEAgent
服务加载到启用项了,以后系统开机会自动启动服务。
UPS
监控软件的设定
在正式开始设定前,我们需要确保防火墙开放 TCP 6547
端口,因为 PBEAgent
用到了这个端口。
firewall-cmd --zone=public --add-port=6547/tcp --permanent
端口开放后我们就可以这样来访问管理界面。
https://x.x.x.x:6547
注意是 https
而不是 http
,端口号用冒号连接在域名或IP之后。
打开 Web
管理界面后,我们用之前设定好的用户名和密码登录。
默认情况下登录进去就可以看到 UPS
的状态。
右上角可以更改语言为中文,点击关于查看详细的 UPS
参数。
关机设定
点击菜单的 关闭
> 关机设置
。
基本的设定有两处:
- 一个是当停电后怎么开始关机程序
- 一个是给操作系统关机的时间
本例设定为,停电后由电池供电,之后5秒钟后服务器开始自动关机,给足服务器90秒关机时间,90秒后 UPS
设备也自动关机,插座面板不再供电。
事件配置
点击菜单 PowerChute
> 事件配置
。
你需要记录哪些事件你就把哪些项目勾上,这个决定了 UPS
自己记录事件以及之后我们设定邮件警告的设定。
我们总是希望第一时间能知道发生了什么,特别是电源故障这方面的问题,所以可以让 UPS
自动发事件消息给我们。
点击菜单 PowerChute
> 电子邮件设置
。
按照上面的项目依次填入 SMTP 服务器
等等。
如果你还没有自己的 SMTP 服务器
,那么可以参考我之前写的文章自己搭建一个,简单又实用,以后肯定还会有很多场景要用到。
参考文章:《把XMail企业邮局应用到系统管理中一(安装篇)》
文章链接:https://www.sysadm.cc/index.php/xitongyunwei/743-xmail-install
参考文章:《把XMail企业邮局应用到系统管理中二(配置篇)》
文章链接:https://www.sysadm.cc/index.php/xitongyunwei/745-xmail-config
参考文章:《把XMail企业邮局应用到系统管理中三(管理篇)》
文章链接:https://www.sysadm.cc/index.php/xitongyunwei/747-xmail-admin
点击菜单 日志记录
> 事件日志
,即可查看发生的事件。
从下图中我们能看到 2021年7月27日10点05分左右发生了电源切换的动作。
如果你设定了电子邮件通知,那么会收到如下那样的邮件警告消息。
时间是一致的,不过我这儿没有设定好设备名称以及设备位置信息,在实际使用中你可以完善它。
最终效果确认
从前面介绍的安装和配置中也能看到使用的效果。
基本上当市电切断后,UPS
自动转为电池供电,与此同时发送给代理程序一个关机信号。
服务器接收到关机信号后,在一定的时间内完成关机动作。
然后在此之后 UPS
自动停止供电,相当于自己关机休眠了。
等于到市电恢复,UPS
再次开启,同时插座面板供电。
服务器检测到插座供电就自动启动,系统恢复正常。
如果忘了登录的用户名和密码怎么办?
这种情况只能重置用户名和密码了。
到 PBEAgent
安装路径(默认 /opt/APC/PowerChuteBusinessEdition/Agent
)中找到 pcbeconfig.ini
文件,用文本编辑器打开它。
然后在文件最下面添加以下内容。
同时直接在等号后面输入新用户名和密码,切记用户名和密码要符合之前的规范和约束。
[Credentials]username=新的用户名password=新的密码
编辑好后保存 pcbeconfig.ini
文件,然后重启 PBEAgent
服务。
服务重启后,如果用户名和密码符合规范要求,那么 [Credentials]
区段内容将自动被删除,同时新的用户名和密码将生效。
假如用户名和密码不符合要求呢,系统会在 pcbeconfig.ini
文件中写入错误信息,根据这个信息再来调整即可。
写在最后
关于服务器自动开关机的简单的单机解决方案大体就如以上所述,在实际使用场景中用得也比较多一些。
不过还有更复杂的场景,比如有多台服务器的情况,那么可能需要用到网络管理卡。
如果你想通过网络的方式来给远程多台服务器发送开关机信号,那么应该会要用到网络管理卡的方式。
我没有实际使用网络管理卡的经验,所以也无法向小伙伴们介绍了,大家可以到官网上查找相关的说明书。
好了,以后还有什么有趣的研究我会抽空总结后分享给大家,记得三连,这是我的最低要求啦!
扫码关注@网管小贾,阅读更多
网管小贾的博客 / www.sysadm.cc