部署mfsmaster高可用的原因:
在讲原因之前,可以先看看mfs读写原理图:
读操作
写操作
通过读写操作图可以清楚的看到,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 <target iqn.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 </target>
/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
如果你害怕发现脑裂现象,可以添加fence功能。
测试:
crm node standby #在server4上执行这个操作,如果发现整个pacemaker组发现迁移动,就说明配置。
记住在测试完了后,要执行crm node online让节点起来,防止全部down掉。