我有几台 Linux 服务器连接到 APC UPS。它们通过 USB 连接到 UPS,并配置为如果 UPS 发出主电源已丢失且在一段时间后未恢复的信号,则关闭。这很有效。此外,它们通过跳线配置为如果电源丢失然后恢复,则自动开机。这也很好用。
导致问题的场景是主电源断电,服务器关闭,但在 UPS 耗尽之前主电源恢复。在这种情况下,我们希望服务器重新启动,但由于 UPS 之后从未真正断电,服务器从未看到电源恢复事件,因此无法开机。
我希望存在一种设备,可以插入主电源预 UPS,并感知电源恢复状态并发送唤醒信号(可能通过网络唤醒)到预配置的服务器,以便在主电源恢复后唤醒它们,有人可以指出我的位置。
我们也欢迎其他建议,我唯一不能做的就是更换服务器硬件,如果可能的话,我更愿意保留相同的 UPS。
答案1
使用UPS时实现的典型场景是:
- 当断电时,UPS 会通知与其连接的系统上的软件组件。
- 如果断电时间超过 n 秒,UPS 驱动器将通知 UPS 并停止系统无需关闭电源(这个很重要)。
- UPS 等待 m 秒直至系统停止运行,然后切断电源。
- 当电源恢复且 UPS 电池充电量超过最低限度时(以便在机器启动后立即断电的情况下,它可以支持开机和干净关机),UPS 会恢复系统电源。
- 系统通知(在 BIOS/UEFI 级别),它们在断电之前已通电,因此它们启动。
在大多数服务器 BIOS 中,您可以将系统设置为恢复断电前的电源状态。这意味着,如果服务器断电并且断电,则在您插入电源后,服务器将保持断电状态。另一方面,如果断电时服务器处于通电状态,则在交流电恢复时服务器将通电。
BillThor提到的NUT应该可以让你实现这个场景。
答案2
我通过使用一个小型 Linux 机箱(Asus wl deluxe 或 smth)解决了这个问题,该机箱插入主 UPS,并在电源恢复时尽快唤醒。启动脚本包括 5 分钟延迟以避免电源状态(启动/关闭)的任何变化,对所有服务器(所有 w2k3,一个 linux)进行 WOL 操作,并通过短信告知我状态。
答案3
阅读了许多建议后,我认为一个好的解决方案是使用任何旧电脑(如果您不关心功耗)或某种直接连接到能源的树莓派。
因此,当电源接通时,一个脚本将检查服务器是否开启,如果没有,则通过网络发送 OWL。
答案4
如果您的 BIOS 可以设置开机时间,您可以将其设置为关机后 50 分钟(如果关机是通过 UPS 关机信号触发的)。
因此,在您的场景中,服务器将在最迟 50 分钟 + 启动 + 关机时间后重新启动并运行。