企业—Mfs高可用部署(pacemaker+corosync+iscsi+fence)

  • 由于MFS自身的Mfslogger本身的的不可靠性,这里的高可用是对于单节点mfs master来进行配置的,mfs master 处理用户的挂载请求,并且分发数据,很容易成为节点的故障所在;

  • 这里来配置MFS+pacemaker+corosync+iscsi集群的高可用性

  • 本次部署是基于MFS文件系统环境已经搭建好,具体可参考博文:https://mp.youkuaiyun.com/weixin_44224288/article/details/90377605

MFSmaster+pacemaker+corosync高可用的部署

1.实验环境

  • rhel 7.3 firewalld is disabled
主机名(IP)服务
server1(172.25.254.1)mfsmaster
server2(172.25.254.2)chunkserver
server3(172.25.254.3)chunkserver
server4(172.25.254.4)backup-mfsmaster

2.在server4配置mfsmaster

1.安装mfs master,编辑域名解析,开启服务

[root@server4 ~]# ls
moosefs-master-3.0.103-1.rhsystemd.x86_64.rpm
[root@server4 ~]# yum install -y moosefs-master-3.0.103-1.rhsystemd.x86_64.rpm

[root@server4 ~]# vim /etc/hosts
文件添加解析如下:
172.25.16.1    server1 mfsmaster

[root@server4 system]# pwd
/usr/lib/systemd/system
[root@server4 system]# vim moosefs-master.service 
文件编辑内容如下:
8 ExecStart=/usr/sbin/mfsmaster -a

[root@server4 system]# systemctl daemon-reload
[root@server4 system]# systemctl start moosefs-master

mfs master开启之后查看端口:
在这里插入图片描述
2.server1和server4配置高可用yum源

[root@server1 3.0.103]# cd /etc/yum.repos.d/
[root@server1 yum.repos.d]# vim yum.repo 
文件编辑内容如下:
[rhel7.3]
name=rhel7.3
baseurl=http://172.25.254.77/file
gpgcheck=0

[HighAvailability]
name=HighAvailability
baseurl=http://172.25.254.77/file/addons/HighAvailability
gpgcheck=0

[ResilientStorage]
name=ResilientStorage
baseurl=http://172.25.254.77/file/addons/ResilientStorage
gpgcheck=0

在这里插入图片描述
在这里插入图片描述
3.在server1上和server4上安装pacemaker+corosync

[root@server1 yum.repos.d]# yum install pacemaker corosync -y
[root@server4 system]# yum install pacemaker corosync -y

4.因为要实现高可用及其fence既保持server1和server4节点之间要做免密的ssh
在这里插入图片描述
在这里插入图片描述
5.在server1和server4上安装资源管理工具并且开启相应服务

//server1
[root@server1 ~]# yum install -y pcs
[root@server1 ~]# systemctl start pcsd
[root@server1 ~]# systemctl enable  pcsd  ##开启该服务之后会在/etc/passwd目录下生成hacluster用户,及高可用管理用户
[root@server1 ~]# passwd hacluster   ##配置高可用集群管理用户的密码

//server4
[root@server4 ~]# yum install -y pcs
[root@server4 ~]# systemctl start pcsd
[root@server4 ~]# systemctl enable  pcsd  ##开启该服务之后会在/etc/passwd目录下生成hacluster用户,及高可用管理用户
[root@server4 ~]# passwd hacluster   ##配置高可用集群管理用户的密码

6.在server1上使用集群管理工具创建mfsmaster集群并且启动集群

  • 创建集群
    在这里插入图片描述
  • 为集群命名并且开启集群:
    在这里插入图片描述
    在这里插入图片描述
    7.查看集群状态
    在这里插入图片描述
    在这里插入图片描述
    8.检查集群并解决报错

注:查看集群状态时出现错误是因为默认配置fence模块的这里先不配置fence所以先将fence设置关掉,等后面配置fence的时候再将其打开即可
在这里插入图片描述

补充知识:如果命令无法用tab键查看的话可以下载:yum install -y bash-*

9.给mfs高可用集群添加资源,此次资源添加vip

//查看资源
[root@server1 ~]# pcs resource standards  ##查看集群资源
[root@server1 ~]# pcs resource agents ocf:heartbeat  ##查看该资源下支持的资源类型

//创建资源
[root@server1 ~]# pcs resource create vip ocf:heartbeat:IPaddr2 ip=172.25.254.100 cidr_netmask=32 op monitor interval=30s
[root@server1 ~]# pcs resource show

在这里插入图片描述
在server4上再次查看集群信息:
在这里插入图片描述
在这里插入图片描述
10.高可用测试

  • 查看此时vip在server1上:
    在这里插入图片描述
  • 将cluster集群中的server1关掉,此时vip漂移到server4上
    在这里插入图片描述
    在这里插入图片描述
  • 查看监控信息也显示在线的只有server4,在server1上已经不能使用改名令了因为server1集群已经关闭了
    在这里插入图片描述
    在这里插入图片描述
  • 再次开启集群中的server1,发现vip还是在server4上,但是监控信息查看时server1和server4都是在线的
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

二.pacemaker+corosync实现高可用后的iscsi实现数据共享

1.在客户端如果进行了数据恢复时进行了相应的挂载,df是查看不到的,用mount命令查看,如果有挂载需要先卸载
在这里插入图片描述
2.关闭master及其chunkserver服务为iscsi的实验环境做准备

[root@server1 ~]# systemctl stop moosefs-master
[root@server2 ~]# systemctl stop moosefs-chunkserver
[root@server3 ~]# systemctl stop moosefs-chunkserver
[root@server4 ~]# systemctl stop  moosefs-master

3.iscsi的配置

实验环境:

主机名(IP)服务
server1(172.25.254.1)iscsi-*(客户端)
server3(172.25.254.3)targetcli(服务端)
server4(172.25.254.4)iscsi-*(客户端)

server3(targetcli):

1.在server3为chunkserver也是真正的数据端上添加共享数据的磁盘
在这里插入图片描述
fdisk -l 命令差查看:
在这里插入图片描述
2.安装targetcli并做相应配置

//安装targetcli
[root@server3 ~]# yum install -y targetcli

//登录targetcli并且将添加的硬盘当作targetcli磁盘共享存储的磁盘
[root@server3 ~]# targetcli
/> ls   ##查看targetcli的相关信息,里面会有目录及其相应目录下的文件

//添加磁盘:
/> cd backstores/block 
/backstores/block> create my_disk1 /dev/vda
在iscis目录下:
/backstores/block> cd /
/> cd iscsi 
创建磁盘目录,进入目录下的相应目录创建已添加磁盘:
/iscsi> create  iqn.2019-05.com.example:server3
/iscsi> cd iqn.2019-05.com.example:server3/
/iscsi/iqn.20...ample:server3> cd tpg1/luns 
/iscsi/iqn.20...er2/tpg1/luns> 
/iscsi/iqn.20...er2/tpg1/luns> create /backstores/block/my_disk1 
创建client磁盘共享目录:
/iscsi/iqn.20...er2/tpg1/luns> cd /iscsi/iqn.2019-05.com.example:server3/tpg1/acls 
/iscsi/iqn.20...er2/tpg1/acls> create iqn.2019-05.com.example:client

在这里插入图片描述
在这里插入图片描述
server1(iscsi):

1.下载iscsi客户端并且做相应配置

安装iscsi-*
[root@server1 ~]# yum install -y iscsi-*
修改客户端的iscsi加密服务文件的问题,及添加服务端的钥匙:
[root@server1 ~]# vim  /etc/iscsi/initiatorname.iscsi 
文件编辑内容如下(添加服务端的设置的客户端的磁盘目录):
InitiatorName=iqn.2019-05.com.example:client

登录查看是否共享成功:
[root@server1 ~]# iscsiadm -m discovery -t st -p 172.25.254.3
172.25.254.3:3260,1 iqn.2019-05.com.example:server3
[root@server1 ~]# systemctl restart iscsid
[root@server1 ~]# iscsiadm -m node -l
Logging in to [iface: default, target: iqn.2019-05.com.example:server3, portal: 172.25.254.3,3260] (multiple)
Login to [iface: default, target: iqn.2019-05.com.example:server3, portal: 172.25.254.3,3260] successful.

在server1上登陆成功之后查看:
在这里插入图片描述
在这里插入图片描述
2.在server1上创建共享的磁盘分区挂载并且进行验证
a.创建分区并且进行格式化
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
b.挂载格式化后的分区

//因为mfs文件存储的相应信息都在/var/lib/mfs/ ,要创建mfs文件系统必须将其信息写到已经共享成功的磁盘里面,实现mfs文件系统的相应操作:
[root@server1 ~]# mount /dev/sdb1 /mnt
[root@server1 ~]# cd /var/lib/mfs/  这是mfs的数据目录
[root@server1 mfs]# ls
changelog.2.mfs  changelog.4.mfs  changelog.6.mfs  metadata.mfs         metadata.mfs.empty
changelog.3.mfs  changelog.5.mfs  metadata.crc     metadata.mfs.back.1  stats.mfs
[root@server1 mfs]# cp -p * /mnt/   带权限拷贝/var/lib/mfs的所有数据文件到/dev/sdb1上
[root@server1 mfs]# cd /mnt/
[root@server1 mnt]# ls
changelog.2.mfs  changelog.4.mfs  changelog.6.mfs  metadata.crc  metadata.mfs.back.1  stats.mfs
changelog.3.mfs  changelog.5.mfs  lost+found       metadata.mfs  metadata.mfs.empty
[root@server1 mnt]# chown mfs.mfs /mnt   当目录属于mfs用户和组时,才能正常使用
[root@server1 mnt]# cd
[root@server1 ~]# umount /mnt
[root@server1 ~]# mount /dev/sdb1 /var/lib/mfs/   # 使用分区,测试是否可以使用共享磁盘
[root@server1 ~]# systemctl start moosefs-master  服务开启成功,就说明数据文件拷贝成功,共享磁盘可以正常使用
[root@server1 ~]# systemctl stop moosefs-master  关闭服务因为要进行高可用测试,是集群开启服务而不能手动开启

在这里插入图片描述
server4(iscsi-*):操作同server1
a.下在相应的iscsi客户端并且登录查看共享是否成功

[root@server4 system]# yum install -y iscsi-*
[root@server4 system]# vim /etc/iscsi/initiatorname.iscsi 
文件编辑内容如下:
InitiatorName=iqn.2019-05.com.example:client
[root@server4 system]#  iscsiadm -m discovery -t st -p 172.25.254.3
[root@server4 system]# iscsiadm -m node -l

fidk -l查看共享成功:
在这里插入图片描述
b.挂载并检测是否能够开启mfs服务
在这里插入图片描述
开启集群:
在这里插入图片描述
注意:在mfs文件系统创建完成之后,对于在主从及server1上和server4上的mfs文件系统用户的所属组及其相应id都要相同,如果不同可能会导致共享出错

如果不同可进行如下操作:

查看:
在这里插入图片描述
在这里插入图片描述
修改server4上相应的用户所属组id即可:

a.编辑/etc/group修改mfs的所属组与server1的所属组相同
在这里插入图片描述
b.更改用户所属组查看更改成功
在这里插入图片描述

创建iscsi文件系统的集群资源:

注:集群管理实现mfs文件系统下的iscsi文件系统共享,所以如果在server1,server4上挂载了/var/lib/mfs需要将其卸载,目的是要通过集群实现其的自动挂载。
在这里插入图片描述
在这里插入图片描述

[root@server1 system]# pcs resource create mfsdata ocf:heartbeat:Filesystem device=/dev/sdb1 directory=/var/lib/mfs/ fstype=xfs op monitor interval=30s

查看创建的资源:
在这里插入图片描述
创建mfsd文件系统资源,把服务集中在一台主机上:

[root@server1 ~]# pcs resource create mfsd systemd:moosefs-master op monitor interval=1min
[root@server1 ~]# pcs resource group add mfsgroup vip mfsdata mfsd
[root@server1 ~]# crm_mon  使用该命令再次查看:

在这里插入图片描述
发现服务都在server1上此时查看挂载状态发现/var/lid/mfs文件系统的相应信息自动挂载
在这里插入图片描述

三.fence解决脑裂问题

1.测试高可用

  • 打开chunkserver(server2,server3)
    在这里插入图片描述
    server2的chunkserver服务发现启动失败是因为在进行mfs文件系统搭建的时候server2上是添加磁盘建立分区并却将其挂载的,所以需要将其重新挂载即可,而server3在配置时是默认将根直接进行挂载的:
    在这里插入图片描述
    在这里插入图片描述
  • 查看vip的位置
    在这里插入图片描述
  • 查看服务状态
    在这里插入图片描述
  • 在客户端进行分布式存储测试

a.挂载,在挂载之前确保/mnt/mfs中是空的,否则就会挂载失败
在这里插入图片描述
b.上传文件
在这里插入图片描述
c.在客户端上传大文件的同时,关闭正在提供服务的服务端

pcs cluster stop server1

d.查看到文件上传成功,并没有受到影响
在这里插入图片描述
通过以上实验我们发现,当master挂掉之后,backup-master会立刻接替master的工作,保证客户端可以进行正常访问,但是,当master重新运行时,我们不能保证master是否会抢回自己的工作,从而导致master和backup-master同时修改同一份数据文件从而发生脑裂,此时就需要fence来防止此类时间发生

2.fence部署

1.在server1,server4上安装fence服务并且建立密匙的目录

//server1:
[root@server1 ~]# yum install -y fence-virt
[root@server1 ~]# mkdir /etc/cluster

//server4:
[root@server4 ~]# yum install -y fence-virt
[root@server4 ~]# mkdir /etc/cluster

2.在物理机上下载fence服务并且生成一份fence密钥文件,传给服务端

[root@foundation77 Desktop]# yum install -y fence-virtd
[root@foundation77 Desktop]# mkdir /etc/cluster/ 
[root@foundation77 Desktop]# cd /etc/cluster/
[root@foundation77 cluster]# fence_virtd -c   ##生成fence的相应信息
[root@foundation77 cluster]# dd if=/dev/urandom of=/etc/cluster/fence_xvm.key bs=128 count=1
[root@foundation77 cluster]# scp fence_xvm.key root@172.25.254.1:/etc/cluster/
[root@foundation77 cluster]# scp fence_xvm.key root@172.25.254.4:/etc/cluster/

在这里插入图片描述
在这里插入图片描述
3.在物理机上开启服务查看端口
在这里插入图片描述
4.确保集群中的主机域名与物理机上的主机域名对应一致
在这里插入图片描述
在这里插入图片描述
5.在server1上的集群中添加fence设置

[root@server1 cluster]# pcs stonith create vmfence fence_xvm pcmk_host_map="server1:server1;server4:server4" op monitor interval=1min   ##主机名采用映射的方式,及fense服务与主机之间主机名的映射
[root@server1 cluster]# pcs property set stonith-enabled=true  ##开启集群fence配置
[root@server1 cluster]# crm_verify -L -V
[root@server1 cluster]# crm_mon  ##查看

在这里插入图片描述
6.破坏server4内核
在这里插入图片描述
7.发现server4端点重启
在这里插入图片描述
8.再次查看fence服务节点在server4
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值