Linux下MFS分布式文件系统中基于fence的mfsmaster的高可用(mfs软件包的版本为3.103-1)

续我的上篇博文:https://mp.youkuaiyun.com/postedit/89107881即mfsmaster的高可用已经搭建部署好

 

一、fence的工作原理

 

fence的工作原理:

当意外原因导致主机异常或者宕机时,备机会首先调用FENCE设备,然后通过FENCE设备将异常主机重启或者从网络隔离,当FENCE操作成功执行后,返回信息给备机,备机在接到FENCE成功的信息后,开始接管主机的服务和资源。这样通过FENCE设备,将异常节点占据的资 源进行了释放,保证了资源和服务始终运行在一个节点上。

 

二、基于fence的mfsmaster高可用的实现

 

1、fence的安装及配置

 

配置物理机(fence服务端):

 

<1>fenc的安装

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

 

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

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

 

[root@foundation83 ~]# fence_virtd -c

 

 

  • 查看初始化过程中的参数(IP和Port)

  • 其中IP和Port这个参数信息,是有fence的配置文件决定的

 

<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

 

<4>启动fence_virtd服务,并查看1229端口(fence_virtd服务对应的端口)是否存在

[root@foundation83 cluster]# systemctl start fence_virtd.service 
[root@foundation83 cluster]# netstat -antulpe | grep 1229
udp        0      0 0.0.0.0:1229            0.0.0.0:*                           0          258918     27591/fence_virtd   

 

配置server1和server4(fence客户端):

 

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

 

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


#server4端的操作i同server1

 

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

[root@server1 ~]# mkdir /etc/cluster
[root@foundation83 ~]# scp /etc/cluster/fence_xvm.key root@172.25.83.1:/etc/cluster/  #给HA节点发送key
[root@server1 ~]# ll /etc/cluster/
total 4
-rw-r--r-- 1 root root 128 Apr  9 17:33 fence_xvm.key


#server4端的操作i同server1

 

2、添加fence设备,启用STONITH并进行测试

pcs  stonith相关命令:

pcs stonith list                           ##查看支持Fence列表
pcs stonith describe agent_name                  ## 查看Fence资源使用参数。如:"pcs stonith describe fence_xvm":查看有关fence_xvm有关的资源使用参数

 

<1>添加fence设备

[root@server1 ~]# pcs cluster start server4   #上篇博文关闭了pcs集群中的server4端,为了不影响后续实验的进行,开启server4端
[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这个名字随意给
  • 其中fence设备运行的主机和其他资源运行的主机正好是相反的。查看server4端的监控(命令为"crm_mon"),监控界面如下:

从上图中我们可以看到:vip,mfsdata,mfsd这三个资源运行在server1端,而vmfence运行在server4端。

 

<2>启用STONITH

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

 

<3>进行测试:

 

方法一:利用fence命令

[root@server1 ~]# fence_xvm server1
因为上篇博文设置了pcs集群开机自启,所以不用在server1端手动启动集群节点server1,vmfence就会运行在server1端。(否则需要等到server1端开启之后输入命令"pcs cluster start server1"来启动pcs集群中的server1端,vmfence才能运行在server1端)
  • 此时,我们会发现server1自动重启

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

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

 

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

[root@server4 ~]# echo c > /proc/sysrq-trigger
因为上篇博文设置了pcs集群开机自启,所以不用在server1端手动启动集群节点server1,vmfence就会运行在server4端。(否则需要等到server4端开启之后输入命令"pcs cluster start server4"来启动pcs集群中的server4端,vmfence才能运行在server4端)
  • 此时,我们会发现server4自动重启

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值