第三章:stonith¶
stonith — Shoot The Other Node In The Head
各节点与fence通信的时候,使用key来通信,各节点在检查不到其他节点时,会通过key让fence设备来处理那台它检查到不正常的节点。
安装fence软件包¶
先看一下fence的rpm包,如果你的物理设备是某些品牌的设备,比如cisco的,ibm等品牌的,那你可能需要安装一些相应的软件包,参考列表里出现的那个
yum list fence*
这里我们是个虚拟化的物理机,所以我们执行如下命令
yum install fence-virt* -y
同步key¶
首先我们要将目录创建出来
mkdir /etc/cluster
然后创建key,这里我们使用如下命令创建key,经过测试,如果我们创建的key不是4k的,则这个key是不会生效的。
dd if=/dev/zero of=/etc/cluster/fence_xvm.key bs=1024 count=4
那么如果定义它就是一个key呢?所以我们来设置一下,执行fence_virtd -c,相应的一些选项中多一般默认的配置和我们的实际环境信息是一样的,那就不用特地设置了,用默认的就好了。
fence_virtd -c
然后重启服务fence_virtd
systemctl restart fence_virtd
然后我们需要在每个节点上都创建一个/etc/cluster目录
mkdir -p /etc/cluster
然后我们将可以传到三个node节点上去
scp /etc/cluster/fence_xvm.key node1:/etc/cluster/
scp /etc/cluster/fence_xvm.key node2:/etc/cluster/
scp /etc/cluster/fence_xvm.key node3:/etc/cluster/
查看我们可以管理的节点¶
[root@server1 ~]# fence_xvm -o list
node1 c56fb624-9d7a-4870-976b-ca2c2a2dad11 on
node2 0ee3c3b6-92d2-4210-9660-698e651d863b on
node3 1ac1efd2-551b-4bb4-a2cb-5a3b3db564a1 on
node4 66afbc63-2af3-4435-8b7c-9cf9f301f114 off
node5 14761fe7-aacf-4e2a-87ec-0788231a4e1c off
在每个节点上都安装fence¶
在每个节点上都安装fence,节点可以使用fence-virt的各种脚本利用key和我们的物理机fence通信,告诉它你要关掉谁关掉谁。
yum install fence-virt* -y
启动Stonith¶
然后我们切换到dashboard里去,点到cluster properties里,勾选Stonith Enabled
这里有一个选项是Stonith Action,也就是当Stonith触发时做的事情,这里当前的选项是Reboot,也就是当触发Stonith时,我们Reboot目标节点。
添加fence设备¶
然后再过一小会,就running了
手动fence指定节点¶
现在我们来尝试手动fence一个节点
在node1上执行
[root@node1 ~]# fence_xvm -o reboot -H node2
然后发现,node2在重启了,也就是fence掉了,触发了fence的操作,重启。
模拟节点故障,触发fence¶
现在我们来模拟一个故障,让集群触发fence,node2的主要网卡是eth0,我们在node2上执行ifdown eth0, 这样node2就没有IP地址了。
如下图所示
然后,我们发现,node2就自动重启了。 可见fence被触发了,生效了。