跳转到内容

维护模式与 HA arm/disarm ​

给节点打补丁、改 corosync 网络配置这类操作,如果 HA 正在盯着,可能被误判成"节点故障"而触发不必要的 fencing 或资源接管。PVE 提供两种让 HA "先别管"的方式,作用范围不一样,不要混用。

两种机制的区别 ​

机制作用范围适合的场景引入版本
节点维护模式单个节点只对一台节点做维护(重启、升级),把它上面的 HA 资源先挪走长期存在
HA arm/disarm整个集群做影响全集群的操作(比如改 corosync 网络),需要所有节点暂时不被 fencingPVE 9.2

单节点维护模式 ​

sh
# 打开某节点的维护模式:它上面的 HA 资源会被迁移到其他节点
ha-manager crm-command node-maintenance enable <节点名>

# 维护完成后关闭:资源迁回原节点(如果 failback 配置允许)
ha-manager crm-command node-maintenance disable <节点名>

可以在集群里任意一个节点上执行这两条命令。维护模式会在节点重启后依然保持(不会因为重启就自动关闭),需要你显式执行 disable 才会退出。判断切换是否完成,可以看该节点日志里出现 watchdog closed (disabled) 字样。

HA 集群级 arm/disarm(PVE 9.2 新增) ​

PVE 9.2 引入了针对整个 HA 栈的 disarm/arm 能力,让整个集群在做网络变更之类的维护时,不会因为节点之间暂时联系不上就触发 fencing。disarm 期间,已配置的 HA 资源状态会被保留,重新 arm 之后恢复正常调度和保护。

disarm 期间集群完全失去自动保护,不是"暂停一下"这么简单

处于 disarmed 状态时,如果真的有节点在此期间崩溃或断网,它上面的 HA 资源不会被自动检测、不会被 fencing、也不会在其他节点上被拉起来——所有这些自动化都被关闭了。

影响范围:整个集群的 HA 保护,不只是你正在维护的那台节点。

前置条件:确认这次维护窗口内,你能容忍"如果某台节点真的挂了,没有人/没有自动化会去处理"这件事;操作前通知相关方,安排在低风险时间段。

如何回退:维护完成后立刻重新 arm,恢复自动 fencing 和故障恢复能力。

已知问题:disarm 状态下做版本升级可能卡住

如果集群处于 disarm 状态,同时有迁移任务在进行,这时执行升级可能导致升级过程卡住。官方给出的处理方式是重新 arm,或者等迁移任务全部完成后再升级。

:::

具体命令和 Web UI 入口(官方发布说明提到过 arm-ha/disarm-ha 一类的 CRM 命令,以及 HA 状态页顶部的 Arm HA / Disarm HA 按钮),以你当前版本 ha-manager 的帮助信息(ha-manager help)和实际界面为准——不同信息来源对命令是否需要指定节点参数存在出入,执行前先用帮助命令确认准确语法,不要凭记忆敲。

ha-manager status 里的 fencing 状态字段有以下几种,可以用来确认当前处于哪个阶段:

状态含义
armed正常,自动 fencing/故障恢复生效
disarming正在从 armed 切换到 disarmed
disarmed已关闭自动 fencing、故障转移和恢复
standby介于两者之间的中间状态

操作步骤 ​

只维护一台节点 ​

  1. ha-manager crm-command node-maintenance enable <节点名>。
  2. 确认该节点上的 HA 资源已经迁移到其他节点(ha-manager status)。
  3. 完成维护(重启、升级等)。
  4. ha-manager crm-command node-maintenance disable <节点名>,确认资源按 failback 配置迁回。

需要整个集群暂时不被 fencing(例如改 corosync 网络) ​

  1. 确认这是真的需要集群级别 disarm 的操作,而不是单节点维护能解决的——大多数日常维护用单节点模式就够了。
  2. 通知相关方,安排维护窗口。
  3. 用你版本确认过的命令/界面执行 disarm。
  4. 完成维护操作(例如 corosync 冗余链路规划里的网络变更)。
  5. 立刻重新 arm,用 ha-manager status 确认 fencing 状态回到 armed。

检查结果 ​

sh
ha-manager status

维护模式:确认相关节点标记为维护状态,该节点上原有的 HA 资源已经迁移。

集群级 arm/disarm:确认 fencing 字段的状态和你预期的阶段一致,维护结束后必须看到状态回到 armed 才算收尾完成。

常见问题 ​

维护做完忘了退出维护模式/忘了重新 arm。 单节点维护模式会一直保持到你手动 disable;集群级 disarm 同样不会自动恢复。长期忘记退出等于长期失去 HA 保护,建议维护类操作走清单流程,最后一步固定是"确认已恢复"。

disarm 之后紧急情况下节点真的挂了。 这正是本文警示块强调的风险——disarm 期间没有自动 fencing 和恢复,需要人工介入迁移或重启相关服务。这也是为什么 disarm 只应该用在明确、短暂的维护窗口内。

disarm 期间升级卡住了。 参考上文"已知问题":重新 arm,或者等所有正在进行的迁移任务结束后再继续升级。

参考资料 ​

Proxmox VE 非官方中文使用指南,与 Proxmox Server Solutions GmbH 无隶属关系。