mfs3.0.85+heartbeat+drbd集群高可用实现

时间:2022-05-25 03:12:56

mfs集群部署文档


1、内容简介

MFS有元数据服务器(mfsmaster)、元数据日志存储服务器(mfsmetalogger)、数据存储服务器(mfschunkserver)、客户端(clients)组成。

目前MFS元数据服务器存在单点问题,因此我们可以通过DRBD提供磁盘及时同步,通过HeartBeat提供Failover,来达到高可用。实现高可用后,不使用mfsmetalogger。


2、机器分配:

角色

软件版本

ip地址

操作系统

硬盘

网卡

mfsmaster

moosefs3.0.85

10.39.6.84

CentOS release 6.5

drbd*200G

Speed: 2000Mb/s

slave_master

moosefs3.0.85

10.39.6.88

CentOS release 6.5

drbd*200G

Speed: 2000Mb/s

chunkserver1

moosefs3.0.85

10.39.48.226

CentOS release 6.5

3.5T/raid5

Speed: 2000Mb/s

chunkserver2

moosefs3.0.85

10.39.48.227

CentOS release 6.5

3.5T/raid5

Speed: 2000Mb/s

chunkserver3

moosefs3.0.85

10.39.48.228

CentOS release 6.5

3.5T/raid5

Speed: 2000Mb/s

chunkserver4

moosefs3.0.85

10.39.48.229

CentOS release 6.5

3.5T/raid5

Speed: 2000Mb/s

chunkserver5

moosefs3.0.85

10.39.48.230

CentOS release 6.5

3.5T/raid5

Speed: 2000Mb/s

chunkserver6

moosefs3.0.85

10.39.48.231

CentOS release 6.5

3.5T/raid5

Speed: 2000Mb/s

chunkserver7

moosefs3.0.85

10.39.48.232

CentOS release 6.5

3.5T/raid5

Speed: 2000Mb/s

chunkserver8

moosefs3.0.85

10.39.48.233

CentOS release 6.5

3.5T/raid5

Speed: 2000Mb/s

chunkserver9

moosefs3.0.85

10.39.48.234

CentOS release 6.5

3.5T/raid5

Speed: 2000Mb/s


3、mfsmaster部署安装

mfsmaster需要安装drbd+heartbeat来实现高可用。mfsmasterslave使用同样方式部署。


3.1 DRBD安装

  

修改/etc/hosts文件,添加

10.39.6.84  mfsmaster

10.39.6.88  mfsmasterslave

修改主机名/etc/sysconfig/network:

HOSTNAME=mfsmaster

    同时在命令行执行 hostname  mfsmaster


 mfsmaster和mfsmasterslave各需要有一块同样大小的单独分区作为drbd的虚拟磁盘使用。

dd if=/dev/zero of=/dev/sda6  bs=1M count=1; sync


此处使用源码编译安装,安装前需要确保系统有gcc等编译工具。

    wget http://oss.linbit.com/drbd/8.4/drbd-8.4.3.tar.gz


tar zxvf drbd-8.4.3.tar.gz

cd drbd-8.4.3

./configure --prefix=/usr/local/drbd --with-km

make && make install

mkdir -p /usr/local/drbd/var/run/drbd

cp /usr/local/drbd/etc/rc.d/init.d/drbd /etc/rc.d/init.d

chkconfig --add drbd

chkconfig drbd on

加载DRBD模块:

modprobe drbd

查看DRBD模块是否加载到内核:

lsmod |grep drbd


3.1.1DRBD配置

添加新res文件:

vi /usr/local/drbd/etc/drbd.d/dbdata.res

resource dbdata {

        syncer { rate 30M; }

        on mfsmaster{

                device /dev/drbd0;

                disk /dev/sda6;

                address 10.39.6.84:7789;

                meta-disk internal;

        }

        on mfsmasterslave{

                device /dev/drbd0;

                disk /dev/sda6;

                address 10.39.6.88:7789;

                meta-disk internal;

        }

}


创建DRBD设备并激活资源:

drbdadm create-md dbdata

再次输入该命令:

drbdadm create-md dbdata

成功激活 


启动drbd访问:service drbd start 


查看状态:service drbd status


将master设置为主节点:drbdsetup /dev/drbd0 primary  --force


挂载DRBD:(node1)

从刚才的状态上看到mounted和fstype参数为空,所以我们这步开始挂载DRBD到系统目录

mkfs.ext3 /dev/drbd0

mount /dev/drbd0 /data


注:Secondary节点上不允许对DRBD设备进行任何操作,包括只读,所有的读写操作只能

在Primary节点上进行,只有当Primary节点挂掉时,Secondary节点才能提升为Primary节点继续工作


主备切换命令:drbdsetup /dev/drbd0 primary


3.2 heartbeat安装

安装epel扩展源:yum -y install epel-release

安装heartbeat / libnet:yum  install -y heartbeat libnet


3.2.1 heartbeat配置


cd /usr/share/doc/heartbeat-3.0.4/

cp  authkeys  ha.cf    haresources   /etc/ha.d/

cd /etc/ha.d


vi authkeys #打开下面两项:一共有三种认证方式供选择,第一种是CRC循环冗余校验,第二种是SHA1哈希算法,第三种是MD3哈希算法,其中他们的密码可以任意设置,但是两边密码必须保持一致。  

auth 3 

md5 Hello!

chmod 600 authkeys    #给认证文件授权为600


vi  haresources  #加入如下语句

 mfsmaster drbddisk::dbdata Filesystem::/dev/drbd0::/mfsmeta::ext3 mfsmaster 10.39.6.208


vi  ha.cf   #改为如下内容:

logfile /var/log/heartbeat.log

debugfile /var/log/heartbeatdebug.log

logfacility local0

keepalive 2                             #设定heartbeat之间的时间间隔为2秒

deadtime 15                             #在15秒后宣布节点死亡

warntime 5                              #在日志中发出ate heartbeat警告之前等待的时间,单位为秒

initdead 120

#baud 9600

udpport 694

bcast bond0

#serial /dev/ttyS0

auto_failback on                       #on是主机故障后,是否自动切回

node mfsmaster

node mfsmasterslave

use_logd no l  #使用这个脚本去侦听对方是否还活着(使用的是ICMP报文检测)


使用yum安装的heartbeat为3.x版本,resource.d下没有drbd对应的脚本,需要补充drbddisk、drbdupper。


启动heartbeat,/etc/initd./heartbeat start 


4、mfschunkserver安装

chunkserver需要依赖fuse,此处使用yum安装。

yum install -y fuse.x86_64 fuse-devel.x86_64

groupadd -g 1001 mfs 

useradd -u 1001 -g mfs -s /bin/false -d /home/mfs mfs 

mkdir -p /usr/local/moosefs-3.0.85/data

sudo chown -R mfs:mfs /usr/local/moosefs-3.0.85

rsync -av 10.39.5.117::PSO/moosefs-3.0.85-1.tar.gz  /usr/src/

sudo tar -zxvf /usr/src/moosefs-3.0.85-1.tar.gz -C /usr/src/   

cd /usr/src/moosefs-3.0.85


./configure --prefix=/usr/local/moosefs-3.0.85 --sysconfdir=/usr/local/moosefs-3.0.85  --localstatedir=/usr/local/moosefs-3.0.85/data --with-default-user=mfs --with-default-group=mfs --enable-mfsmount  --disable-mfsmaster 

make && make install 

if [ $? -eq 0 ];then

 cd /usr/local/moosefs-3.0.85/mfs

 cp mfschunkserver.cfg.sample  mfschunkserver.cfg

 cp mfshdd.cfg.sample  mfshdd.cfg

else

echo "make error ,please check "

exit;

fi

修改 mfschunkserver.cfg

echo "

MASTER_HOST = 10.39.0.248

">>mfschunkserver.cfg

   修改mfshdd.cfg,添加需要加入mfs集群的硬盘路径。添加完成后,必须将目录权限修改为mfs,否则无法使用。


启动、关闭chunkserver:

/usr/local/moosefs-3.0.84/sbin/mfschunkserver stop

/usr/local/moosefs-3.0.85/sbin/mfschunkserver  start

5、部署挂载客户端mfsclient

参考脚本:

#!/bin/bash


groupadd -g 1001 mfs

useradd -u 1001 -g mfs -s /bin/false mfs


yum install -y fuse.x86_64 fuse-devel.x86_64


rsync -av 10.39.5.117::PSO/moosefs-3.0.85-1.tar.gz  .

tar -zxvf moosefs-3.0.85-1.tar.gz

cd moosefs-3.0.85

./configure --prefix=/tmp/moosefs-3.0.85 --sysconfdir=/tmp/moosefs-3.0.85 --with-default-user=mfs --with-default-group=mfs --enable-mfsmount  --disable-mfsmaster  --disable-mfschunkserver

make && make install


mkdir /mnt/mfs

挂载:

/tmp/moosefs-3.0.85/sbin/mount.moosefs -H 10.39.6.208 /mnt/mfs


6、mfs使用指导

 

关于硬盘热更换等日常维护工作,可参考官方文档:

https://moosefs.com/documentation/faq.html


本文出自 “Devops” 博客,请务必保留此出处http://devops9527.blog.51cto.com/2419132/1889475