我在使用 OenSuSE + Heartbeat + Pacemaker + Xen HA 集群时遇到了以下问题:当运行 Xen domU 的节点“死机”时,在其上运行的 Xen domU不是在第二个节点上重新启动。
集群设置了两个节点,每个节点都运行 OpenSuSE-11.3、Heartbeat 3.0 和 CRM 模式下的 Pacemaker 1.0。对于存储,我使用 iSCSI SAN 设备上的 LUN;该 LUN 使用 OCFS2 格式化并使用 LVM 进行管理。Xen domU 有两个逻辑卷;一个用于根卷,另一个用于交换卷。我使用 IPMI 卡作为 STONITH 设备,并使用专用以太网链路进行心跳通信。
ha.cf文件如下:
keepalive 1
deadtime 10
warntime 5
udpport 694
ucast eth1
auto_failback off
node dhcp-166
node stage
use_logd yes
crm yes
我的资源如下: Xen domU 配置文件如下:
shocrm(live)configure# show
node $id="5c1aa924-bba4-4f95-a367-6c9a58ac4a38" dhcp-166
node $id="cebc92eb-af24-4833-aaf0-672adf80b58e" stage
primitive Xen-Util ocf:heartbeat:Xen \
meta target-role="Started" \
operations $id="Xen-Util-operations" \
op start interval="0" timeout="60" start-delay="0" \
op stop interval="0" timeout="120" \
params xmfile="/etc/xen/vm/xen-util"
primitive my-stonith stonith:external/ipmi \
params hostname="dhcp-166" ipaddr="192.168.3.106" userid="ADMIN" passwd="xxx" \
op monitor interval="2m" timeout="60s"
primitive my-stonith2 stonith:external/ipmi \
params hostname="stage" ipaddr="192.168.3.105" userid="ADMIN" passwd="xxx" \
op monitor interval="2m" timeout="60s"
property $id="cib-bootstrap-options" \
dc-version="1.0.9-89bd754939df5150de7cd76835f98fe90851b677" \
cluster-infrastructure="Heartbeat"
name = "xen-util"
bootloader = "/usr/lib/xen/boot/domUloader.py"
#bootargs = "xvda1:/vmlinuz-xen,/initrd-xen"
bootargs = "--entry=xvda1:/boot/vmlinuz-xen,/boot/initrd-xen"
memory = 4096
disk = [ 'phy:vg_xen/xen-util-root,xvda1,w',
'phy:vg_xen/xen-util-swap,xvda2,w', ]
root = "/dev/xvda1"
vif = [ 'mac=00:16:3e:42:42:06' ]
#vfb = [ 'type=vnc,vncunused=0,vnclisten=192.168.3.172' ]
extra = ""
假设 domU“Xen-Util”在节点“stage”上运行;如果“stage”发生故障,“Xen-Util”将不是在节点“dhcp-166”上重新启动。它似乎想尝试,因为“xm list”会显示它几秒钟,如果你“xm console xen-util”,它会给出一条消息,如“将 /boot/kernel.gz 从 xvda1 复制到 /var/lib/xen/tmp/kernel.a53gs 进行引导”。但是,它永远无法超越这一点,最终放弃,并且不再出现在“xm list”中。现在,当节点“stage”在电源循环后重新上线时,它会检测到“Xen-Util”未运行,并启动它(在 stage 上)。
我尝试在节点“dhcp-166”上启动“Xen-Util”没有集群正在运行,并且运行良好。没有问题。所以,我知道它在这方面是有效的。
有什么想法吗?谢谢!
答案1
经过反复尝试,我终于找到了答案。我收到的 iSCSI 错误太快地返回堆栈,如这篇关于 ServerFault 的文章。
除了更改上述文章中概述的变量之外,我还跟踪了一些网络电缆,发现节点 #2 位于 100Mb 链路上,而节点 #1 位于 Gig 链路上,SAN 也是如此。经过仔细的调整后,所有网络连接现在都以 Gig 速度运行。
最后,我将 Linux 接口上的 MTU 从 1500 更改为 9000,这似乎也加快了速度。
最终结果是集群正常运行,其中 domU 在节点 #1 上的启动速度比以前更快。
干杯,
肯德尔