Synology群晖与Windows服务器共享家庭UPS服务器解决方案

家里有一台HP N54L安装了win2008。现在添置了一台群晖918+。家里供电还算稳定,但是一年里总会有2-3次莫名其妙的停电或者跳闸。之前HP N54L遇到断电,碰到过系统和磁盘故障。买了群晖之后,听说设备比较娇贵,断电搞不好会损坏数据资料乃至设备硬件。加上喜欢折腾的心,所以配了一个APC施耐德的UPS,型号BK650 CH。自己对UPS没有太多的研究,所以搞不清什么后备式这类的。但是需求是有的,就是断电之后希望UPS发指令给设备关机,尽量保护设备不受断电损伤。APC BK650这个型号在国内群晖玩家中推荐的比较多。它提供了一路RJ45网口转USB的信号线,实现UPS设备同NAS设备之间通讯。若只是给单个群晖提供电力保护,设置非常简单。连线完毕后,在DSM控制面板中的硬件和电源里面的不断电系统中,如下设置即可。

但这种设置只能给群晖供电,另一台设备N54L若也想在断电之后关机,如何才能实现呢?只有一路通讯线,也没有一拖二的线材,如何相互之间共享UPS信号呢?好在群晖提供了UPS服务器的功能。即一台设备作为UPS服务器与UPS连接,获取电力状态。其它客户端的设备可以通过UPS服务器分享电力状态。当UPS服务器获取断电信息后,告知其它UPS客户端关机,最后UPS服务器关机。必须注意,这里有个先后顺序,作为UPS服务器的设备不能一断电就关机了,否则UPS客户端设备获取不到信息,还是保持运行,最后把UPS电力耗完,自然断电,等同于停电。(这里补充一下,在我这个应用场景中,N54L和群晖918+必须连在同一个APC 650 CH。)

群晖这个UPS服务器功能其实是为了提供给其它群晖设备使用的。当一个群晖设备和UPS相连之后,在上图中可以看到“启用网络UPS服务器”选项,勾选后,点击“允许的DiskStation设备”后,可以输入5个设备的IP地址。再到其它作为UPS客户端的设备中设置不断电系统,启用UPS选项后,可以填写UPS服务器地址,点击应用后,设备会检测相互之间的通讯状态。群晖与群晖之间共享一个UPS,网上也有很多资料借鉴。当然设置上还是最好把作为UPS服务器的设备等待时间设置长一点,把作为UPS客户端的设备等待时间设置短一点,让设备与设备之间存在时间差。

可惜我目前之有一个群晖设备。手上的N54L也没有刷成黑群晖。N54L安装了win2008,是不是也能获取到群晖作为UPS服务器后共享的UPS电力信息呢?下面就来分享这个场景的解决方法。


先介绍一下Network UPS Tools,网址:https://networkupstools.org/index.html。群晖UPS服务器用的也是这个工具的代码。这个工具可以在Linux和Windows上搭建与群晖一样功能的UPS服务器功能。具体如何搭建,找了一篇高手方案也实践了一把,成功了。以后有机会分享。我依然还是使用群晖DSM自带的UPS服务器功能,同时想寻找一个windows的UPS客户端。这样只需要在Windows这边配置一下,调用群晖UPS服务器的信息就可以了。还是在Network UPS Tools这个网站上找到了推荐的客户端相关项目,地址https://networkupstools.org/projects.html。里面绝大部分都是针对Linux的,Windows的找到两个,Windows NUT Client和WinNUT。

先介绍Windows NUT Client,网址:https://sourceforge.net/projects/winnutclient/

解压后直接运行upsclient.exe即可。不需要安装。运行后如下:

点击Setting,输入UPS服务器地址,上图这个地址就是我群晖的IP地址。UPS服务器默认端口是3493,这个不需要改变。设置好之后,就能显示上图左边的UPS信息。

设置很简单,但是功能也很简单。这个软件能成功获取UPS服务器上关于UPS的信息,但是没法立即关机。唯一能找到关于关机的设置,如下图:

这里可以输入百分比,意思就是UPS电力低于多少了,计算机关机。如果使用这个软件,那么会有几个问题:

1. 群晖里面只能设置等待时间,即得到断电通知后,过多少时间进入群晖安全模式。群晖作为UPS服务器必须要撑到N54L关机后再关机,否则群晖关机,没法告诉N54L电力情况了。新买的设备还能算一下时间。随着UPS使用老化,两者时间差不好把握。

2. 群晖无法使用关闭UPS功能。由于吃不准N54L是否关机了,因此不能贸然把UPS开关关了。

3. 因为无法使用关闭UPS功能,那么来电恢复重新启动群晖功能可能也实现不了。

由于这个软件功能过于单薄。所以暂时不考虑。

另一个是WinNUT,名字和上面这个看起来很像。官方网址:http://csociety.ecn.purdue.edu/~delpha/winnut/,但是目前好像打不开了。另外找了一个比较靠谱的下载地址:https://code.google.com/archive/p/winnut/downloads,发现这个客户端离上次更新时间已经很长了。好在还能用。解压安装后,如下图:

点击上图红圈中的Edit,需要编辑upsmon.conf文件。其实这个软件还是基于Network UPS Tools工具来设计的。点击后,弹出一个文本文件,找到Monitor位置,添加如下命令行:

MONITOR ups@192.168.1.21 1 monuser secret slave

解释一下这个命令:

ups,是ups连接的名字。如果配置过Network UPS Tools会比较清楚。群晖的UPS服务器中的UPS连接名字就是ups。

IP地址是UPS服务器的IP地址。

1表示给系统供电的UPS数量。这里场景只有一台,所以填写1。

monuser和secret是群晖UPS连接的用户名和密码。

slave表示当前设备作为客户端。

群晖这些参数,我是在这个文章里面找到的,地址:https://forum.netgate.com/topic/105828/successfully-monitoring-a-ups-connected-to-a-synology-rs

 

如果是64位的Windows,NOTIFYCMD 的路径也要改,把Program Files改成Program Files (x86),如下图:

修改完后,点击红圈中Apply即可。是否成功可以看Status中是否有Running as Application。注意,需要在群晖UPS服务器中设置客户端设备的IP,允许其连接。

若要让程序开机启动,可以勾选Install As Service。设置重启操作系统后,Status会显示Running As Service。

同时也可以看一下日志文件是否显示已经建立连接。位置:C:\Program Files (x86)\WinNUT\WinNUTUpsMon.log

勾选Use Timed Shutdown。即可填入关机延迟时间。

我的设置是N54L作为UPS客户端,断电后,延迟5秒关机。群晖作为UPS服务器,延迟60秒进入安全模式并切断电源。群晖关机比较慢。等到群晖关机时候,N54L肯定已经关机了。

至此两台设备已经可以在断电情况下先后关机。


另一个困惑的问题。UPS是否需要给路由器或者交换机供电。

如果这些设备都在NAS设备附近放置,有条件最好用UPS给它们供电。路由器或者交换机可以撑到最后同设备一起关机,不会破坏设备IP信息和通信。

有些朋友的路由器离NAS设备很远,像我就是这个情况,路由器在客厅,NAS在书房。如果两个设备都是直接连在路由器上,而且路由器在停电时候没有UPS供电,那么像我现在的情况,只有群晖会关机,N54L不会。因为一旦路由器断电,所有IP都失效了。作为客户端的N54L没法从UPS服务器群晖这边获取指令。群晖会延迟60秒自己关机。上面设置的再好,N54L还是无法正常关机。

但是如果两个设备是连在同一个交换机上,然后交换机再连到路由器上面。那么只需要给交换机供电即可。APC BK650上面还有2个剩余电源插口,把交换机放在设备附近。即使远端的路由器断电,两台设备还是能保持原来IP设置,可以相互通信,实现先后正常关机。


以上是不同NAS设备共享一个UPS设备的实践分享。

网上好的资料不多,感谢下面这个文章作者的辛苦分享。

在Windows安裝Network UPS Tools監控UPS

用树莓派做不间断电源服务器(UPS Server)

发表评论

电子邮件地址不会被公开。 必填项已用*标注