必须用fence_ipmilan:其支持op monitor健康检查,而fence_ipmitool在pacemaker 9.x+中已弃用;需验证bmc连通性、安装fence-agents-ipmilan包、配置lanplus=1/cipher=1、绑定avoids约束并启用监控。

必须用 fence_ipmilan,不能用 fence_ipmitool 或其他变体——后者在 Pacemaker 9.x+ 中已被弃用,且不支持 op monitor 健康检查。
确认 IPMI 接口可用且网络可达
在每个目标节点(如 cnode1)上,先验证本地 IPMI 是否启用、用户权限是否正确:
- 执行
ipmitool -I lanplus -H 192.168.3.11 -U ADMIN -P ADMIN chassis power status,应返回Chassis Power is on或类似;失败说明 IPMI 网络不通、凭据错误或 BMC 未启用 - 确保集群节点到各 BMC 的 IP 路由可达,且无防火墙拦截 UDP 623 端口(IPMI 默认端口)
- 若使用 VLAN 或管理网段隔离,
pcs stonith create中的ipaddr必须是 BMC 的管理 IP,不能是节点业务 IP
创建 fence_ipmilan 设备时的关键参数
以 cnode1 为例,以下命令不是模板,而是实际生效所需的最小安全配置:
pcs stonith create cnode1_ipmi fence_ipmilan \ pcmk_host_list=cnode1 \ ipaddr=192.168.3.11 \ login=ADMIN \ passwd=ADMIN \ lanplus=1 \ cipher=1 \ op monitor interval=60s
-
pcmk_host_list必须填集群中该设备要隔离的**主机名**(即uname -n输出),不是 IP;多个主机用空格分隔,但单设备建议一对一 -
lanplus=1强制启用 IPMI v2.0 加密通信,不加会导致认证失败(尤其 ILO4+/iDRAC8+) -
cipher=1是 cipher suite ID,对应 AES-128-CBC;部分 BMC(如 Supermicro)需设为cipher=3,可先试1,失败再查 BMC 手册 -
op monitor interval=60s不可省略——没有健康检查,Pacemaker 会认为设备“不可用”,进而拒绝启动 STONITH
避免设备误触发或约束失效的三个硬性操作
STONITH 设备创建后,必须立刻绑定位置约束,否则 Pacemaker 可能在本节点上尝试调用自己对应的 fence 设备,导致自锁:
- 执行
pcs constraint location cnode1_ipmi avoids cnode1—— 这条必须对每个设备单独运行,avoids表示“该设备绝不能在它要隔离的节点上运行” - 禁用某设备用
pcs stonith disable cnode1_ipmi,但不要用pcs property set stonith-enabled=false全局关闭,那等于放弃防脑裂能力 - 验证设备状态:运行
pcs stonith show应显示Enabled: Yes和Monitor: OK;若显示Failed,看journalctl -u pacemaker -n 50中是否含fence_ipmilan: Unable to connect或Authentication failure
最常被跳过的一步是:没在所有节点上统一安装 fence-agents-ipmilan 包(而非仅 fence-agents-all)。CentOS/RHEL 8+ 和 Ubuntu 22.04+ 都需要显式安装它,否则 pcs stonith create 虽成功,但实际执行时会报 agent not found 错误——这个错误不会出现在 pcs stonith show 输出里,只在故障切换日志中浮现。











