如果我有这样的起搏器资源:
Resource: FoobarServer (class=ocf provider=foo type=bar)
Operations: monitor interval=5m timeout=8m (FoobarServer-monitor-interval-5m)
start interval=0 timeout=360s (FoobarServer-start-0)
stop interval=0 timeout=360s (FoobarServer-stop-0)
如果超时时间比间隔时间长,似乎会发生冲突。但是,我找不到任何文档专门警告这种潜在情况。
是否每 5 分钟会生成一个不同的监控进程,该进程会在 8 分钟后死亡?或者每 5 分钟重新启动一个进程,并且(在这种情况下)它会错过在间隔和超时之间的 3 分钟差异内发生的事件?
答案1
摘自 Red Hat(该公司与 SUSE 一起是集群实验室' 起搏器/corosync):
interval
[...]
资源启动完成后,将立即执行重复监控操作,并且后续监控操作将从前一个监控操作完成时开始安排例如,如果一个间隔为20秒的监控操作在01:00:00执行,下一个监控操作不是在01:00:20发生,而是在第一个监控操作完成20秒后发生。
timeout
如果操作没有在该参数设置的时间内完成,则中止该操作并认为其失败。
[...]
总结一下:
- 不会有任何两个重叠的监控动作:间隔是完成上一项后, 不是开始后。连续的监控操作可以在 5 分钟到 13 分钟之间发生。在 OP 的案例中,在一小时内可能会触发 4 次(1h/(5 分钟 + 8 分钟))到 12 次(1h/5 分钟)监控操作,具体取决于监控器完成检查所需的时间,
- 即使间隔是小时的除数,监控事件不会在一小时内的固定时间发生(比如这里的 12 次),而是会漂移,
- 取决于资源和监视器的实施方式,这意味着整个间隔如果这些事件没有在某个地方排队等待监视器处理,那么可能会错过 5 分钟的事件,
- 无论如何,如果故障发生在上一次之后间隔,几乎间隔在有机会检测到故障之前
- 这暂停是个最大限度允许监控操作完成的时间,但可以更短,
- 监视器的作用是在其动作开始时返回状态。它不应该“持续监视”8 分钟。8 分钟监控超时看起来是一个可疑的值,与间隔值和绝对值,
- 虽然操作是新生成的进程这一逻辑看似合理,但此信息并未记录,因此可能与实现/监控有关。这并不重要,因为不会有两个重叠的监控操作。