PVE 配置群晖网络UPS

在这里插入图片描述

后面的都不用看,直接看前面的链接(别人写的更好)

前言

目的: 在只有一个ups通信端口的情况下,实现多个设备在断电后都能够接收到关机命令。
原理: ups通信端口接入群晖,让群晖成为ups服务器然后其他设备通过网络接入。

群晖ups

此部分很简单,将ups通信端口的usb接入群晖系统的usb端口即可。
然后在控制面板硬件和电源开启ups支持即可
在这里插入图片描述
在最后要启用网络ups服务器,让其他设备能够通过网络接入。

虚拟机ups

参考博文1
参考博文2
感谢作者的教程

首先需要ssh登录虚拟机的后台
然后

  • 下载NUT套件
    apt install nut -y
  • 编辑NUT配置文件
    vim /etc/nut/nut.conf (可以使用winscp连接上,在windows环境下面更换)
  • 将“MODE=”后面修改成如下参数
    MODE=netclient(然后输入“:wq”保存退出)
  • 更改连接配置
    vim /etc/nut/upsmon.conf
  • 找到 MONITOR 在下方增加一行
    MONITOR ups@nas的ip 1 upsmon pass slave(将nas的ip换成你nas的ip,其他参数都不要更改,原因参考博文1!,请注意此句MONITOR 前面没有#号,#代表注释!)

原因图片
在这里插入图片描述

原因结束


  • 启动nut-client服务,并设置自动启动
    systemctl start nut-client && systemctl enable nut-client
  • 测试是否成功连接UPS服务器
    upsc ups@NAS IP
    如果有输出信息,那么就成功

效果

  • 在断电后,首先会群晖收到通知,然后群晖立马会通知虚拟机等其他设备关机,实现同时开始关机安全模式。

要实现关机通过ssh连接群晖

sudo vim /usr/syno/bin/synoups
在这里插入图片描述

参考文章3-详细说明了参数

在这里插入图片描述

参考文章4
nut官网
在这里插入图片描述
在这里插入图片描述

如果pve不关机,修改配置如下

/etc/nut/upsmon.conf

MINSUPPLIES 1
SHUTDOWNCMD "/sbin/shutdown -h"
NOTIFYCMD /usr/sbin/upssched
POLLFREQ 2
POLLFREQALERT 1
HOSTSYNC 15
DEADTIME 15
POWERDOWNFLAG /etc/killpower

NOTIFYMSG ONLINE    "UPS %s on line power"
NOTIFYMSG ONBATT    "UPS %s on battery"
NOTIFYMSG LOWBATT   "UPS %s battery is low"
NOTIFYMSG FSD       "UPS %s: forced shutdown in progress"
NOTIFYMSG COMMOK    "Communications with UPS %s established"
NOTIFYMSG COMMBAD   "Communications with UPS %s lost"
NOTIFYMSG SHUTDOWN  "Auto logout and shutdown proceeding"
NOTIFYMSG REPLBATT  "UPS %s battery needs to be replaced"
NOTIFYMSG NOCOMM    "UPS %s is unavailable"
NOTIFYMSG NOPARENT  "upsmon parent process died - shutdown impossible"

NOTIFYFLAG ONLINE   SYSLOG+WALL+EXEC
NOTIFYFLAG ONBATT   SYSLOG+WALL+EXEC
NOTIFYFLAG LOWBATT  SYSLOG+WALL
NOTIFYFLAG FSD      SYSLOG+WALL+EXEC
NOTIFYFLAG COMMOK   SYSLOG+WALL+EXEC
NOTIFYFLAG COMMBAD  SYSLOG+WALL+EXEC
NOTIFYFLAG SHUTDOWN SYSLOG+WALL+EXEC
NOTIFYFLAG REPLBATT SYSLOG+WALL
NOTIFYFLAG NOCOMM   SYSLOG+WALL+EXEC
NOTIFYFLAG NOPARENT SYSLOG+WALL

RBWARNTIME 43200

NOCOMMWARNTIME 600

FINALDELAY 5

/etc/nut/nut.conf

MODE=netclient

/etc/nut/upssched.conf

CMDSCRIPT /etc/nut/upssched-cmd
PIPEFN /etc/nut/upssched.pipe
LOCKFN /etc/nut/upssched.lock

AT ONBATT * START-TIMER onbatt 30
AT ONLINE * CANCEL-TIMER onbatt online
AT ONBATT * START-TIMER earlyshutdown 30
AT LOWBATT * EXECUTE onbatt
AT COMMBAD * START-TIMER commbad 30
AT COMMOK * CANCEL-TIMER commbad commok
AT NOCOMM * EXECUTE commbad
AT SHUTDOWN * EXECUTE powerdown
AT SHUTDOWN * EXECUTE powerdown

/etc/nut/upssched-cmd

#!/bin/sh
 case $1 in
       onbatt)
          logger -t upssched-cmd "UPS running on battery"
          ;;
       earlyshutdown)
          logger -t upssched-cmd "UPS on battery too long, early shutdown"
          /usr/sbin/upsmon -c fsd
          ;;
       shutdowncritical)
          logger -t upssched-cmd "UPS on battery critical, forced shutdown"
          /usr/sbin/upsmon -c fsd
          ;;
       upsgone)
          logger -t upssched-cmd "UPS has been gone too long, can't reach"
          ;;
       *)
          logger -t upssched-cmd "Unrecognized command: $1"
          ;;
 esac

chmod +x /etc/nut/upssched-cmd

systemctl restart nut-client

上述来源链接

在这里插入图片描述

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐