收起左侧

首发!使用NUT配置飞牛系统与群晖系统共用同一个UPS设备

0
回复
128
查看
[ 复制链接 ]

3

主题

8

回帖

0

牛值

江湖小虾

大家觉着帖子不错的帮忙给公众号文章也点个赞,谢谢大家!
https://mp.weixin.qq.com/s/zQZHaL**pkxQVx0nomDBA

前言:

楼主目前共两台NAS和一台型号为APC-BK650M2_CH的UPS,NAS系统一台为飞牛系统,另外一台为黑群晖系统DSM7.2系统;

UPS只有一个通讯口,但我需要保证两台NAS可以同时在停电时收到关机命令,故因此了解到了NUT-Server信息;

但目前存在主要矛盾是黑群晖系统自带ups-usb配置和nut-server,但飞牛系统仅支持配置ups-usb,不支持配置nut-server供局域网其他用户使用,也没有界面支持nut client使用,这个需求目前飞牛论坛里不少人也都有提,但该需求依然没有排期,故经过大量的网络内容筛查,目前已成功完成飞牛NUT-Server部署及黑群晖NUT信息联动

环境描述:

**NAS_A系统及版本:**飞牛OS1.1.11

**NAS_B:**黑群晖DSM7.2.2

**UPS型号:**APC-BK650M2_CH

**部署架构:**飞牛系统做nut-server,黑群晖做nut-client

NUT文件内容科普

nut服务配置文件主要包含

  • ups.conf 设置ups通信相关内容,UPS名称及信息,尽量保证与sudo ups-scanner -U的值一致
  • nut.conf nut的配置,主要是模式(客户端还是服务器),决定使用哪些文件
  • upsd.conf 设置ups客户访问的相关信息
  • upsmon.conf
  • upssched.conf 这两个文件可以不用管,可以直接通过界面进行信息配置及保存

其中部分文件都可以直接通过飞牛系统ui界面进行选择而自动配置,因为飞牛系统不支持server,故部分文件需要手动进行编写。

步骤说明:

1、界面操作

访问飞牛网页服务,点击“系统设置”-》“硬件和电源”,随后点击“启动UPS支持”,UPS类型设置“USB UPS”,插入UPS通讯线至飞牛NAS设备中,随后即可在飞牛UPS界面选择已识别到的UPS,按需配置“关机等待方式”及“关机等待时间”,随后点击“确定”即可完成飞牛UPS-USB配置。

image-20260122062252-zy2kou9.png

2、飞牛系统下命令行操作

/etc/nut目录

当前ups服务只能被飞牛本机设备访问,我们需要让局域网下的黑群晖设备也可以访问到该服务,故需要通过SSH连接到飞牛系统,随后输入如下命令进入nut目录

cd /etc/nut

通过输入命令ls -l ,我们可以看到当前文件夹下的nut配置文件

image-20260122062621-bt3f60m.png

通过sudo cat ups.conf ​命令我们可以看到当前系统中已被识别到的UPS的信息

image-20260122063240-zej5nap.png

/etc/nut/ups.conf文件

通过sudo cat ups.conf ​命令我们可以看到飞牛系统给UPS分配的名称及UPS信息(名称是重点,其余与上面的基本一致,名称这里我不建议改,因为我没改,不清楚改了以后会不会不识别)

image-20260122063611-r2zprsv.png

/etc/nut/upsd.conf文件

通过sudo vim upsd.conf ​命令我们修改当前NUT-Server可以被访问的主机ip范围,找到如下文本类似位置进行修改,按i​键插入内容,修改完毕后按键盘ESC​,随后输入:wq​保存文件

按如下配置可以直接开放局域网全部主机访问

修改内容的方法

# =======================================================================
# LISTEN <IP address or name> [<port>]
# LISTEN 127.0.0.1 3493
LISTEN 0.0.0.0 3493
# LISTEN ::1 3493
# LISTEN myhostname 83493
# LISTEN myhostname.mydomain

# 这里可以配置指定ip有权限连接到这台ups-server上
ACL client_88 你的黑群晖ip/32
ACL localhost 127.0.0.1/32
ACL accept_ips localhost client_88

/etc/nut/upsd.users文件

随后为UPS-Server新增从机用户,sudo vim upsd.users ​,按i​键插入内容,修改完毕后按键盘ESC​,随后输入:wq​保存文件

# 这个用户是飞牛系统默认给的,不建议进行修改

[monuser]
     password = trim-secret
     upsmon master

# 这里新增一个用户从机用户,[]内的信息为用户名,password = 后输入自定义的密码,upsmon信息照抄即可

[monuser1]
     password = secret
     upsmon secondary

随后输入sudo systemctl daemon-reload ​ 刷新配置 ,再输入sudo systemctl restart nut-server.service ​进行nut服务重启

至此,飞牛系统的NUT-Server 的SSH配置告一段落

3、黑群晖 UPS配置

SSH远程连接至群晖终端,随后输入sudo vim /usr/syno/bin/synoupscommon​,往下翻找到193行(如下所示),按i​键插入内容,修改完毕后按键盘ESC​,随后输入:wq​保存文件

CheckUpsmonConf() {
        local conf_size=`stat $UPSMON_CONF |grep Size|cut -d" " -f 4`
        # mode: local/remote
        local mode=$1
        local server_ip="0.0.0.0"

        if [ 0 -eq $conf_size ]; then
                if [ -f $UPSMON_CONF_BACKUP ]; then
                        /bin/cp $UPSMON_CONF_BACKUP $UPSMON_CONF
                else
                        ShowLog "synoupscommon: cannot rescue $UPSMON_CONF"
                fi
        fi

        if [ "$mode" == "local" ]; then
                /bin/sed -i "/^MONITOR/c\\MONITOR ups@localhost 1 monuser secret master" $UPSMON_CONF
        elif [ "$mode" == "remote" ]; then
                if [ $# -ne 2 ]; then
                        ShowLog "synoupscommon: CheckUpsmonConf(): remote mode need set server_ip"
                        return 1
                fi
                server_ip=$2
                /bin/sed -i "/^MONITOR/c\\MONITOR ups@${server_ip} 1 monuser secret slave" $UPSMON_CONF
        fi

        return 0
}

image-20260122074551-aa2toy1.png

回到群晖界面配置,点击“控制面板”-》“界面和电源”-》“不断 电系统”,取消勾选“启用 UPS 支持”,点击“应用”按钮,然后再重启启用UPS,类型选择“Synology不断 电系统服务器”,IP地址处填入你的飞牛NAS的地址,最后再点击“应用”按钮。这一步需要完成UPS启用服务的“重启”,即关闭再打开。(注意:出现无法与网络不断 电系统服务器创建联机问题不大,不要慌)

这里UI界面对应的文件在/usr/syno/etc/ups/synoups.conf​,可以通过sudo cat /usr/syno/etc/ups/synoups.conf​ 查看到其中的内容信息(感兴趣的可以看看,没啥大用,只是顺便提一下)

image-20260122074943-73fjwou.png

出现无法与网络不断 电系统服务器创建联机问题不大,不要慌,通过sudo cat /var/log/messages |grep upsmon​ 命令,可以看到 “Startup successful” 和 “UPS [你的UPS名@UPSIP] connected”字样,这是成功连接UPS的证明。

image-20260122080116-z7jeb3q.png

最后输入sudo vim /usr/syno/bin/synoups ​,在这个脚本的第69行和89行的“ups”字样都改为之前飞牛nas给你分配的UPS名称,随后保存退出

SynoUpsStateLog() {
        local ups_log_item="device.mfr device.model battery.charge battery.runtime battery.voltage input.voltage output.voltage ups.load ups.status"
        if [ $# -ge 1 ]; then
                logger -p user.err -t synoups $1
        fi
        logger -p user.err -t synoups "=====log UPS status start====="
        for item in $ups_log_item; do
                local upsc_result=`${BIN_UPSC} ups@${UPSMonServer} ${item}`
                logger -p user.err -t synoups "${item}=${upsc_result}"
        done
        logger -p user.err -t synoups "=====log UPS status end====="
}

SYSLOG() {
        logger -p user.err -t upsmsg "$1"
}

UPSStatusGet() {
        ups_stat=`${BIN_UPSC} ups@${UPSMonServer} ups.status 2>/dev/null`
        if [ $? -ne 0 ]; then
                echo "ERR"
                return 255
        fi
        for status in $ups_stat ; do
                case "$status" in
                "OL"|"OB"|"LB")
                        echo "$status"
                        return
                        ;;
                esac
        done
        echo "ERR"
}

image-20260122080637-6vf8b0v.png

此时,群晖就顺利跟飞牛接上头了,断 电关机也都会一并响应。

测试验证

ssh页面ups连接显示

sudo upsc ups名称@ups的ip ups.status​

image-20260122143442-durvddd.png

测试关机时的ssh页面log显示

​sudo cat /var/log/messages |grep upsmon​

859ceb5b654f2c48d09920580085b681-20260122124622-mev0w6e.png

测试关机时的群晖日志中心显示

image-20260122124700-8hdxhg0.png​# 附录:

附录:

群晖配置文件位置:

# 群晖配置文件位置:
UPS_STATE="/run/ups_state"
UPS_ROOT="/tmp/ups"
UPS_LOCK=$UPS_ROOT"/ups.lock"
FLOCK_FILE=$UPS_LOCK
UPS_UDEVLOCK="/tmp/upsudevlock"
SYNOUPS_CONF="/usr/syno/etc/ups/synoups.conf"
UPSSCHED_CONF="/etc/ups/upssched.conf"
UPSMON_CONF="/etc/ups/upsmon.conf"
UPSMON_CONF_BACKUP="/etc.defaults/ups/upsmon.conf"
UPS_CONF="/etc/ups/ups.conf"
UPS_CONF_BACKUP="/etc.defaults/ups/ups.conf"
NUTSCAN_USB_H="/etc/ups/nutscan-usb.h"
UPS_TABLE="/lib/udev/devicetable/usb.nut-hid"
BIN_UPSMON="/usr/sbin/upsmon"
BIN_UPSD="/usr/sbin/upsd"
BIN_UPSC="/usr/bin/upsc"
UPSMON_PID="/run/upsmon.pid"
UPSD_PID="$UPS_STATE/upsd.pid"
BIN_FILE_UPSC="/usr/bin/upsc"
BIN_SYNONOTIFY="/usr/syno/bin/synonotify"
收藏
送赞 1
分享

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则