10.6. poison-pill 隔离中的时间配置注意事项
当使用基于存储的死机(SBD)的 poison-pill 隔离部署红帽高可用性集群时,您必须仔细配置时间。正确的超时可确保在故障场景中安全隔离节点,防止出现脑裂的情况,同时允许有足够的时间使集群服务进行通信和稳定。
以下是 poison-pill 隔离场景中时间配置的主要注意事项:
SBD_WATCHDOG_TIMEOUT请保留默认值 5 秒。数值越高,集群可以有足够的时间来解决临时连接功能,而不用响应,但会增加从合法故障中恢复所需的时间。在默认的 5 秒下设置它会被小心,因为它可能会导致集群超过主动,并导致高负载或短暂的无响应。
如果您的集群使用 QDevice,请将
SBD_WATCHDOG_TIMEOUT参数高于qdevice-sync_timeout(默认为 30s)。将 3 秒不同,以防止延迟仲裁更新导致脑裂的情况。msgwait超时fence_sbd在编写 poison-pill 消息后等待的持续时间,然后再被视为完成。如果 watchdog 超时为 5 秒,则将其设置为SBD_WATCHDOG_TIMEOUT的值两次,例如 10 秒。如果设置msgwait小于 watchdog 超时,则集群可以在目标节点仍然处理该操作或等待其硬件 watchdog 过期时,预先声明隔离操作。必须适当调整
msgwait持续时间的大小才能安全地覆盖三个不同的场景:- 目标成功读取消息和自我保护 : 目标节点仍然响应的预期场景,成功从共享块设备读取 poison-pill 消息,并启动自助隔离。
- 目标丢失对磁盘的访问: 目标节点仍在运行,但发现它无法从定数量的共享磁盘读取,从而导致它识别访问和自我保护的丢失。
目标完全无响应: 目标节点已冻结,能够执行任何操作。由于它无法执行操作,因此将无法重置(硬件)-watchdog,这也会导致重新引导。
如果
msgwait设置低于从前一个注意事项派生的超时,则当目标节点仍然处理该操作或等待其硬件 watchdog 过期时,集群可以预先声明隔离操作。
pcmk_reboot_timeout(STONITH-level timeout)这是集群在超时期间等待的,用来指定 STONITH 设备本身(
fence_sbd)在"reboot"操作期间等待的时长。此值应该会引发,使其至少比
msgwait属性高 5 秒。如果没有相应地引发,集群可能会放弃隔离操作,并在msgwait周期已完全耗尽前报告失败。SBD_START_DELAY和启动延迟在启动时设置延迟可让集群额外的时间稳定,并允许存储设备在监控开始前完全上线。另外,隔离后快速恢复后,集群节点有一个通用问题,它们仍然可以捕获广播其自身成功隔离。这给他们混淆,并将它们置于隔离子层中出现错误的情况。
-
使用 SBD : 可以增加
SBD_START_DELAY来缓解此行为,从而降低节点的重新输入速度,以便旧的广播清除。 - 如果没有 SBD: 对于不使用 SBD 的环境,有提示可以在 unit-file 中直接延迟 corosync 启动以达到相同的结果。
-
使用 SBD : 可以增加