MFS分布式存储中mfsmaster的高可用

部署mfsmaster高可用的原因:

在讲原因之前,可以先看看mfs读写原理图:

读操作

MFS分布式存储中mfsmaster的高可用_第1张图片

写操作

MFS分布式存储中mfsmaster的高可用_第2张图片

通过读写操作图可以清楚的看到,mfsmaster是调度器,是mfs最核心的地方,如果mfsmaster挂了,整个mfs架构会挂掉,对此我们要对mfsmaster进行高可用冗余操作


构建思路:利用pacemaker构建高可用平台,利用iscis做共享存储,mfschunkserver做存储设备。
有人可能要问为什么keepalived,我想说的是就是keepalived是可以完全做的,但是keepalived不具备对服务的健康检查,整个corosync验证都是需要脚本编写,再通过vrrp_script模块进行调用,利用pacemaker比较方便。


实验环境

Linux环境:Red Hat Enterprise Linux Server release 6.5 (Santiago)

pacemaker版本:pacemaker-1.1.10-14.el6 #这个直接yum安装,yum源要添加高可用base源

mfs版本:moose-master-3.0.100

server1:172.25.77.1 mfsmaster-master pacemaker iscsi客户端
server2:172.25.77.2 mfschunkserver
server3:172.25.77.3 mfschunkserver
server4:172.25.77.4 mfsmaster-backup pacemaker iscsi客户端
server5: 172.25.77.5 iscsi服务端


首先要搭建基础的mfs分布式存储架构,本篇不做阐述。可以查看我之前配置的mfsmfs分布式文件系统

1.首先配置 iscsi客户端共享存储:

在此实验中,数据同步是最关键的。

配置iscsi服务端:
server5上:

yum list scsi* -y  #安装scsi服务端

vim /etc/tgt/targets.conf  #进入配置文件进行配置
 38 .2018-03.com.example:server.target1>
 39     backing-store /dev/vdb   #添加一个新的存储硬盘
 40     initiator-address 172.25.77.1  #允许1和4作为客户端
 41     initiator-address 172.25.77.4
 42 

/etc/init.d/tgtd start #开启服务

server1和server4:

server1和server4都执行的:
yum install iscsi* -y  #安装iscsi客户端
/etc/init.d/iscsi start  #开启服务
iscsiadm -m discovery -t st -p 172.25.77.5  #发现服务端
iscsiadm -m node -l  #登入共享存储组,fdisk -l会发现出现/dev/sda硬盘,这就是共享的磁盘。

只有server1执行的:
fdisk -cu /dev/sda    #硬盘分区
mkfs.ext4 /dev/sda1   #初始化文件系统
mount /dev/sda1 /mnt/  #将初始化的盘,挂载到/mnt
cd /var/lib/mfs/  
cp * /mnt/             #这一步的目的,主要将原来mfs中的changelog全部同步出来。
umount /mnt/
cd /mnt/
mount /dev/sda1 /var/lib/mfs/  #将
cd /var/lib/
chown mfs.mfs mfs -R  #要给mfs目录下都给mfs执行权限

server1和server4执行:
/etc/init.d/iscsi start  #开启iscsi客户端

配置上述,共享存储就算做好了。

2.配置 pacemaker+corosync:

首先要配置高可用的yum源:

[rhel6.5]
name=rhel6.5
baseurl=http://172.25.77.250/rhel6.5
gpgcheck=0

[HighAvailability]   #这也是系统自带的,但是要添加。
name=HighAvailability
baseurl=http://172.25.77.250/rhel6.5/HighAvailability
gpgcheck=0

安装pacemaker+corosync:

server1和server4:
yum install pacemaker corosync -y #corosync做心跳检测的。
yum install crmsh-1.2.6-0.rc2.2.1.x86_64.rpm  pssh-2.3.1-2.1.x86_64.rpm -y #crm命令行
制作corosync的配置文件:
cd /etc/corosync/
cp corosync.conf.example corosync.conf


vim /etc/corosync/corosync.conf
totem {
        version: 2
        secauth: off
        threads: 0
        interface {
                ringnumber: 0
                bindnetaddr: 172.25.77.0 #添加自己的网段地址
                mcastaddr: 226.94.1.1
                mcastport: 5405
                ttl: 1
        }
}

logging {
        fileline: off
        to_stderr: no
        to_logfile: yes
        to_syslog: yes
        logfile: /var/log/cluster/corosync.log
        debug: off
        timestamp: on
        logger_subsys {
                subsys: AMF
                debug: off
        }
}

amf {
        mode: disabled
}

service {
        name: pacemaker  #添加pacemaker服务
        ver: 0           #这个参数设置为0,就是在开启corosync的时候,pacemaker一并开启
}
scp corosync.conf 172.25.77.4:/etc/corosync/
/etc/init.d/corosync start   #开启corosync和pacemaker

pacemaker利用crm命令行进行配置:

配置之前,要修改mfsmaster的启动脚本:
vim /etc/init.d/moosefs-master
 29 start () {
 30     echo -n $"Starting $prog: "
 31     $prog start >/dev/null 2>&1 && success || failure
 32     if [ $? -ne 0 ];then  #这里做个判断,如果错误执行下面操作
 33     $prog -a -i >/dev/null 2>&1 && success || failure  # automatically restore metadata from change logs
 34     fi
 35     RETVAL=$?
 36     echo
 37     [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
 38     return $RETVAL
 39 }
crm配置:
root@server1 corosync]# crm
crm(live)# configure
crm(live)configure# property stonith-enabled=false #先关掉fence设备
crm(live)configure# commit
crm(live)configure# primitive vip ocf:heartbeat:IPaddr2 params ip=172.25.77.100 op monitor interval=10s #配置vip信息。
crm(live)configure# commit
crm(live)configure# primitive mfsdata ocf:heartbeat:Filesystem params device=/dev/sda1 directory=/var/lib/mfs fstype=ext4 op monitor interval=10s #配置存储信息
crm(live)configure# primitive mfsmaster lsb:moosefs-master op monitor interval=10s #配置服务信息
crm(live)configure# group mfsgroup vip mfsdata mfsmaster  #将其加进一个组内,在启动的时候,会一窝端走。
crm(live)configure# commit

添加解析:
vim /etc/hosts
172.25.34.1     server1 
172.25.34.2     server2 
172.25.34.3     server3
172.25.34.4     server4
172.25.34.5     server5
172.25.34.6     server6 
172.25.34.100   mfsmaster

MFS分布式存储中mfsmaster的高可用_第3张图片

如果你害怕发现脑裂现象,可以添加fence功能。

测试:
crm node standby #在server4上执行这个操作,如果发现整个pacemaker组发现迁移动,就说明配置。
记住在测试完了后,要执行crm node online让节点起来,防止全部down掉。


如果出现什么问题,可以在下方留言,我看到会回复!

OVER!!!

你可能感兴趣的:(Linux运维进阶)