博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MFS——fence解决mfsmaster高可用中的脑裂问题
阅读量:2345 次
发布时间:2019-05-10

本文共 2329 字,大约阅读时间需要 7 分钟。

一、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

在这里插入图片描述

初始化设置:

[root@foundation27 ~]# fence_virtd -c

在这里插入图片描述

在这里插入图片描述

生成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

在这里插入图片描述

启动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/

在这里插入图片描述

在这里插入图片描述

第三步:添加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设备运行的主机和其他资源运行的主机正好是相反的

在这里插入图片描述

在这里插入图片描述

启用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自动重启

在这里插入图片描述

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

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

在这里插入图片描述

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

方法一:利用fence命令

[root@server1 ~]# fence_xvm -H   server4

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

客户端的访问并没有受到任何影响

在这里插入图片描述

转载地址:http://rljvb.baihongyu.com/

你可能感兴趣的文章
where 1=1影响效率以及having和where的区别
查看>>
资源链接
查看>>
注册中心Eureka页面添加用户认证
查看>>
spring源码
查看>>
上传jar包到nexus私服
查看>>
lambda和抽象类
查看>>
idea自定义文档注释模板
查看>>
Enterprise Architect 生成项目类图
查看>>
idea导出配置
查看>>
JVM学习资料收集
查看>>
Codility经典算法题之九:MissingInteger
查看>>
静态导入
查看>>
java 获取路径
查看>>
spring boot 打印sql
查看>>
我的死锁经历
查看>>
spring boot日志配置
查看>>
list排序
查看>>
搭建zookeeper集群
查看>>
1005. 数独
查看>>
1006. 求和游戏
查看>>