背景
因为我们的施工现场往往是有一到多台服务器的,这些服务器有的是双路电源,有的是只有UPS供电。众所周知,服务器如果遇到突然断电,是有损坏硬盘的风险的,为了避免断电停机的风险,一般会设置UPS来给服务器供电,如果需求支撑长时间供电,甚至会加上储能设备,但是只要不来电,存储的电终究是有用完的时候的,所以我们还额外需要在其中一台服务器上安装一个agent程序。用于和UPS进行通信,实时检查UPS的剩余电量,如果剩余电量不足时,通过ssh关闭机房里的所有服务器
示意图
1.UPS的控制程序winpower下载
接下来的文章,我们将使用山特的linux版本的winpower程序来做配置
下载地址https://www.santak.com.cn/page/santak-downloads.html
我们可以在软件列表找到linux版本的winpower,如果第一页没有就在第二页
2.在linux服务器上安装winpower
在服务器上解压下载下载好的压缩文件Winpower_setup_LinuxAMD64.tar.gz
解压之后进入到该目录下的LinuxAMD64下,里面有一个install.bin文件,这里别急着安装,得先安装几个包,不然会报错
sudo apt install -y libxtst6 libxi6 x11-common libxrender1
安装完后再输入winpower的安装命令,过程中遇到提示一路按回车就可以了
./install.bin -i console
安装完成后,winpower程序会安装在/opt/MonitorSoftware/目录下,建议此时可以重启一次电脑,这样会自动启动agent程序,如果不重启的话,可以手动开启agent,命令如下
sudo systemctl start upsagent.service
3.配置winpower
linux版本的必须进入/opt/MonitorSoftware/目录下然后输入命令./monitor进行启动,注意如果是ssh到服务器上的话,需要用一个支持x11转发的ssh工具,像putty或者xshell,powershell肯定是不行了,可以去下载一个mobaxterm来用。
启动之后,先退出向导界面
然后成为系统管理员,默认密码是空
接下来是打开通讯口设定
我们是需要UPS上接一个RS232转USB的线到服务器上的,要检查linux服务器上的USB的串口信息可以用如下命令,把查出来的USB信息填到winpower的通讯口信息里
ls -l /dev/ttyUSB*
添加完成后,再从菜单栏里,点击自动搜索设备,一般1-2分钟就能搜索到UPS了
接下来是配置关机参数设定
建议配置
1.【允许放电时间】建议勾选。因为实际现场使用来看,这个串口通信并不总是很稳定,如果不勾选,可能agent一直获取不到电池百分比信息,默认是会在市电断开2小时后才关机,而30分钟之后可能UPS都没电了,这不是没用么。所以这个功能和【当电池容量百分比低于80%】可以相辅相成,那个先满足,那个先触发。
2.【低电位立即关机】,【剩余放电时间少于10分】,可选可不选,因为实际现场应该用不到
3.【系统】单选【关闭】。这个必须这样选,因为这个是和下面的【关机前执行档案】是联动的,如果选休眠就没用
4.【关机前执行档案】。我的建议是使用python去写一个程序,然后用pyinstaller打包出来放到这里执行。如果一定想用shell脚本也是可以的,这里如果存在程序调用程序或者配置文件,那需要非常注意路径,因为这个程序是会在/opt/MonitorSoftware/目录下执行。建议如果存在程序调用配置文件,配置文件的路径使用绝对路径。例如我的ups_shutdown程序是使用了paramiko库和os库去查找配置文件、读取需要远程关闭的服务器信息、ssh成功之后按需求去安全关闭服务器上的应用程序,数据库等再执行shutdown的关机命令。