CMAN:使用SBD(存储基于死亡)和看门狗作为STONITH

我正在build立一个基于CMAN + Pacemaker集群堆栈的双节点集群,但是我没有硬件STONITH设备。 但是,两个节点通过iSCSI连接到共享存储,我想用这个来用SBD进行屏蔽。

SBD由OpenAIS和Heartbeat支持,我已经使用了SBD和Heartbeat + Pacemaker集群堆栈,但是现在我需要使用CMAN。 因此,我已经添加了一些代码CMAN的初始化脚本来启动/停止SBD,它似乎工作正常。

关于看门狗:强烈build议使用看门狗运行SBD。 SBD是这种集群中的关键服务,并且必须在集群软件运行时始终运行。 看门狗有助于确保 – 如果由于某种原因,SBD过程意外终止,则狗不再受到喂食,并重新启动节点。 所以我在开始SBD之前就得到了看门狗内核模块softdog加载(就像在Heartbeat中)。

简单地说,我在/etc/init.d/cman中执行以下操作:

  1. 加载内核模块 – modprobe softdog
  2. 启动SBD – sbd -d <device> -D -W watch

这里是问题:
当我手动启动cman

 service cman start 

一切正常,但是当cman在启动时自动启动,节点重新启动。

看起来好像看门狗没有被馈送,因为在SBD(14:21:29)初始化节点( <watchdog timeout> )之后,节点正好被隔离了<watchdog timeout>秒(5s),但是日志(/ var / log /系统日志)是有争议的,说SBD运行:

Jan 15 14:21:28 cs-node1内核:[12.341755] softdog:软件看门狗定时器:0.08初始化。 soft_noboot = 0 soft_margin = 60秒soft_panic = 0(nowayout = 0)

Jan 15 14:21:29 cs-node1 sbd:[1200]:notice:使用看门狗设备:/ dev / watchdog
Jan 15 14:21:29 cs-node1 sbd:[1200]:info:将看门狗超时设置为5秒。

Jan 15 14:21:30 cs-node1 sbd:[1202]:info:在磁盘/ dev / iscsi / disk2 / part1上的延迟:1
1月15日14:21:34 sbd:最后一条消息重复了3次

1月15日14:21:34 cs-node1 sbd:[1202]:info:在磁盘/ dev / iscsi / disk2 / part1上的延迟:1

有任何想法吗? 谢谢!

ps任何声誉超过300点的人,请考虑创build以下标签:sbd或storage-based-death,stonith和cman。

编辑1:

现在我已经创build了一个单独的初始化脚本来pipe理SBD,它在CMAN之前开始,但是一切都保持不变 – 只有在login后手动启动时才起作用。 启动过程有什么特别之处,我不知道?

编辑2:

最近我注意到日志中实际上没有这样的信息:

Jan 15 14:21:30 cs-node1 sbd:[1202]:info:在磁盘/ dev / iscsi / disk2 / part1上的延迟:1
1月15日14:21:34 sbd:最后一条消息重复了3次

1月15日14:21:34 cs-node1 sbd:[1202]:info:在磁盘/ dev / iscsi / disk2 / part1上的延迟:1

并且在初始化看门狗5秒之后,节点可能不会重新启动,但更常见的是在12之后,但每次都与login提示一样。 尽pipe系统日志中没有消息,但SBD仍在运行(我添加了一个与SBD一起启动的后台进程并监视其进程)。