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