MFS——fence解决mfsmaster高可用中的脑裂问题

一、fence的工作原理

fence的工作原理:

当意外原因导致主机异常或者宕机时,备机会首先调用FENCE设备,然后通过FENCE设备将异常主机重启或者从网络隔离,当FENCE操作成功执行后,返回信息给备机,备机在接到FENCE成功的信息后,开始接管主机的服务和资源。这样通过FENCE设备,将异常节点占据的资 源进行了释放,保证了资源和服务始终运行在一个节点上,并且有效的阻止了脑裂(高可用节点分裂为两个独立节点,这个时候会开始争抢共享资源)的发生。

二、部署fence的解决脑裂

前提:将上一篇博客关闭的server1打开

在这里插入图片描述

在上一篇的博客基础上添加物理机作为fence

第一步:配置物理机(做这个实验记得将物理机的防火墙关掉喔~或者配置相应的策略)

fence服务端:

[root@foundation27 ~]# yum install fence-virtd.x86_64 fence-virtd-libvirt.x86_64 fence-virtd-multicast.x86_64 -y

进行初始化设置(其中要将接口设备改为br0,其他默认回车,最后一项输入y确定即可)

注:这里br0是因为虚拟服务器受主机控制的网卡是br0

MFS——fence解决mfsmaster高可用中的脑裂问题_第1张图片
初始化设置:

[root@foundation27 ~]# fence_virtd -c

MFS——fence解决mfsmaster高可用中的脑裂问题_第2张图片

MFS——fence解决mfsmaster高可用中的脑裂问题_第3张图片

生成fence_xvm.key

[root@foundation83 ~]# mkdir /etc/cluster     #建立目录
[root@foundation83 ~]# dd if=/dev/urandom of=/etc/cluster/fence_xvm.key bs=128 count=1    #dd截取,生成128位的fence_xvm.key,可以file查看这个key类型是数据(data),所以只能利用下面的命令来查看该文件
[root@foundation83 ~]# hexdump -C /etc/cluster/fence_xvm.key    #查看key

MFS——fence解决mfsmaster高可用中的脑裂问题_第4张图片
启动fence_virtd服务,并查看1229端口(fence_virtd服务对应的端口)是否存在

[root@foundation83 cluster]# systemctl start fence_virtd.service 
[root@foundation83 cluster]# netstat -antulpe | grep 1229

在这里插入图片描述

第二步:配置server1和server4

fence客户端:

server4端的操作同server1

安装fence客户端需要安装的软件:fence-virt

[root@server1 ~]# yum install fence-virt -y

在这里插入图片描述
在这里插入图片描述

从fence服务端那里拷贝fence_xvm.key

[root@server1 ~]# mkdir /etc/cluster
[root@server1 ~]# cd /etc/cluster
[root@server1 ~]# scp @172.25.27.1:/etc/cluster/fence_xvm.key .    #给HA节点发送key
[root@server1 ~]# ll /etc/cluster/

MFS——fence解决mfsmaster高可用中的脑裂问题_第5张图片

MFS——fence解决mfsmaster高可用中的脑裂问题_第6张图片

第三步:添加fence设备,启用STONITH

[root@server1 ~]# pcs stonith create vmfence fence_xvm pcmk_host_map="server1:server1;server4:server4" op monitor interval=1min   #添加名为vmfence的fence设备(其中第一个server1表示虚拟机的名字,第二个server1表示主机名。server4同理)。其中vmfence这个名字随意给
[root@server1 ~]# crm_mon     #查看监控,其中fence设备运行的主机和其他资源运行的主机正好是相反的

在这里插入图片描述

MFS——fence解决mfsmaster高可用中的脑裂问题_第7张图片

启用STONITH

[root@server1 ~]# pcs property set stonith-enabled=true   #启用STONUTH
[root@server1 ~]# crm_verify -L -V   #检测配置是否正确(假若没有输出任何则配置正确)

在这里插入图片描述

第四步:进行测试:

方法一:利用echo命令直接让系统崩溃

[root@server1 ~]# echo c > /proc/sysrq-trigger

在这里插入图片描述

此时,我们会发现server1自动重启

MFS——fence解决mfsmaster高可用中的脑裂问题_第8张图片

因为上篇博文设置了pcs集群开机自启,所以不用在server1端手动启动集群节点server1,vmfence就会运行在server1端。(否则需要等到server1端开启之后输入命令"pcs cluster start server1"来启动pcs集群中的server1端,vmfence才能运行在server1端)

在server4端查看监控(crm_mon):vip,mfsdata,mfsd这三个资源运行在server4端,vmfence运行在server1端

MFS——fence解决mfsmaster高可用中的脑裂问题_第9张图片
客户端的访问并没有受到任何影响
MFS——fence解决mfsmaster高可用中的脑裂问题_第10张图片

方法一:利用fence命令

[root@server1 ~]# fence_xvm -H   server4

在这里插入图片描述

此时,我们会发现server4自动重启
MFS——fence解决mfsmaster高可用中的脑裂问题_第11张图片

在server1端查看监控(crm_mon):vip,mfsdata,mfsd这三个资源运行在server1端,vmfence运行在server4端
MFS——fence解决mfsmaster高可用中的脑裂问题_第12张图片

客户端的访问并没有受到任何影响
在这里插入图片描述

你可能感兴趣的:(linux运维)