使用pacemaker+Corosync+DRBD搭建高可用MooseFS分布式文件系统

前言

    

由于能搜索到的资料特别少,参考了许多博客和教程,整理了一版搭建HA MFS的教程,一方面记录自己的收获,另一方面希望可以帮助有需要的人。

简介。

本文介绍如何利用Pacemaker和Corosync搭建高可用(HA)的MFS文件系统。

  1. 步骤

(1)准备工作

    5台虚拟机,OS本文采用centos7准备一个虚拟IP(VIP)10.119.119.148,作为访问集群服务的IP。

序号hostnameIP
1etnode110.119.119.141
2etnode210.119.119.142
3etchunknode110.119.119.143
4etchunknode210.119.119.144
5etclientnode110.119.119.145

  • etnode1、etnode2上面安装moosefs-master,并配置其为高可用。
  • etchunknode1etchunknode2上面安装moosefs-chunk,存储文件。
  • etclientnode1为客户端,挂载分布式文件系统。

   另外划拨一块硬盘或者逻辑盘,留作DRBD同步MooseFS元数据。

    MFS安装的官方教材文档链接



/etc/hosts文件如下



(2)安装Pacemaker集群软件
在etnode1和etnode2上面安装Pacemaker集群软件:

#yum install -y pacemaker pcs psmisc policu coreutils-python

注:本教程采用pcs管理集群,也可以采用诸如crmsh工具,语法有所不同。


(3)集群防火墙配置
在etnode1和etnode2上面进行配置:

# firewall-cmd --permanent  --add-service=high-availablity
success
# firewall-cmd --reload
success

注:如果使用iptables防火墙,那么需要开发TCP端口2224,3121,21064和UDP端口5405;或者直接关闭防火墙(不推荐)


(4)配置pcs守护进程开机启动
在etnode1和etnode2上面进行配置

# systemctl start pcsd  //启动pcs守护进程
# systemctl enable pcsd  //设置其开机启动

注:安装的软件包会创建一个无密码的用户hacluster,该账户在执行同步Corosync配置或者启动/停止其他节点的集群时候需要登录密码。

设置hacluster用户的密码

# passwd hacluster
(5)配置Corosync

  • 在etnode1或者etnode2中任一节点执行auth:
[root@etnode1 ~]# pcs cluster auth etnode1 etnode2
Username: hacluster
Password:
etnode1: Authorized
etnode2: Authorized
  • 在同一节点使用pcs cluster setup生成并同步Corosync配置:
[root@etnode1 ~] pcs cluster setup --name etcluster etnode1 etnode2
shutting down pacemaker/corosync services...
Redircting to /bin/systeml stop pacemaker.service
Redircting to /bin/systeml stop corosync.service
killing any remaining services...
Removing all cluster configure files...
etnode1: Succeeded
etnode2: Succeeded
(6)启动并验证集群。
[root@etnode1 ~]# pcs cluster start --all
etnode1: Starting cluster...
etnode2: Starting cluster...
(7)验证Corosync安装
[root@etnode1 ~]#corosync-cfgtool -s
然后,检查menbership和quorum APIs:

[root@etnode1 ~]# corosync-cmapctl | grep members
查看集群状态:

[root@etnode1 ~]# pcs status
(8)添加ClusterIP资源(即前述VIP)
[root@etnode1 ~]# pcs resource create ClusterIP ocf:heartbeat:IPaddr2 ip=10.119.119.140 cidr_netmask=32 op monitor interval=30s
[root@etnode1 ~]# pcs reource    //查看资源
(9)使用DRBD复制存储
在etnode1和etnode2上面 进行配置
  • 安装drbd
# yun install -y kmod-drbd84 drbd-utils
注:此drbd-utils在centos7.1上有bug,可以通过脚本修复。

让SELinux为drbd放行:

# semanage permissive -a drbd_t
配置防火墙为各自主机开放7789端口:

[root@etnode1 ~]# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.119.119.142" port port=7789 protocol="tcp" accept'
[root@etnode1 ~]# firewall-cmd --reload
[root@etnode2 ~]# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.119.119.141" port port=7789 protocol="tcp" accept'
[root@etnode2 ~]# firewall-cmd --reload
  • 为DRBD分配磁盘空间
drbd在每个节点上都需要自己的块设备,可以是物理磁盘分区,也可以是逻辑卷分区。

# lvcreate --name drbd-et-LV --size 8G etdataVG
物理卷、卷组、逻辑卷信息如下所示:

  • 配置DRBD
# cat <<END >/etc/drbd.d/mfsdata.res
resource mfsdata {
 protocol C;
 meta-disk internal;
 device /dev/drbd1;
 syncer {
  verify-alg sha1;
 }
 net {
  allow-two-primaries;
 }
 on etnode1 {
  disk   /dev/etdataVG/drbd-et-LV;
  address  10.119.119.141:7789;
 }
 on etnode2 {
  disk   /dev/etdataVG/drbd-et-LV;
  address  10.119.119.142:7789;
 }
}
END

  • 初始化DRBD
# drbdadm create-md mfsdata
initializing activity log
NOT initializing bitmap
Writing meta data...
New drbd meta data block successfully created.
# modprobe drbd
# drbdadm up mfsdata
  • brdb设备的集群配置
[root@etnode1 ~]# pcs cluster cib drbd_cfg
[root@etnode1 ~]# pcs -f drbd_cfg resource create MFSData ocf:linbit:drbd drbd_resource=mfsdata op monitor interval=60s
[root@etnode1 ~]# pcs -f drbd_cfg resource master MFSDataClone MFSData master-max=1 master-node-max=1 clone-max=2 clone-node-max=1 notify=true
[root@etnode1 ~]# pcs -f drbd_cfg resource show    //查看输出,确认配置是否正确
[root@etnode1 ~]# pcs cluster cib-push drbd_cfg    //将修改的配置推送到CIB(也即推送到整个集群)
CIB updated

(10)安装moosefs-master、moosefs-cgi。
在etnode1和etnode2上面 进行配置

# curl "http://ppa.moosefs.com/RPM-GPG-KEY-MooseFS" > /etc/pki/rpm-gpg/RPM-GPG-KEY-MooseFS
# curl "http://ppa.moosefs.com/MooseFS-3-el7.repo" > /etc/yum.repos.d/MooseFS.repo
# yum update
# yum install moosefs-master    //安装mfsmaster
# systemctl disable moosefs-master.service    //禁止开机启动

配置mfsmaster,创建MooseFS存放元数据的目录/mfsdata:

# mkdir /mfsdata
# vim /etc/mfs/mfsmaster.cfg 

安装moosefs cgi:

# yum install moosefs-cgi
# yum install moosefs-cgiserv
# yum install moosefs-cli
开放防火墙:

# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.119.119.0/24" port port="9419-9421" protocol="tcp" accept'
# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" port port="9425" protocol="tcp" accept'
编写service脚本,保存为/etc/init.d/mfsmasterctl,设置权限755,脚本内容如下:

#!/bin/sh
#
# mfsmasterctl - this script start and stop the mfs metaserver daemon
#
# chkconfig: 345 91 10
# description: startupscript for mfs metaserver

case "$1" in
start)
    mfsmaster start &&  mfscgiserv start
;;

stop)
    mfsmaster stop && mfscgiserv stop
;;

restart)
    mfsmaster restart && mfscgiserv restart
;;

status)
    mfsmaster test && mfscgiserv test
;;

*)
    echo $"Usage: $0 start|stop|restart|status"
    exit 1
esac

exit 0
如下图所示:



创建mfsmaster服务的资源,配置如下:

[root@etnode1 ~]# pcs resource create EtMfsMaster lsb:mfsmasterctl op monitor interval=20s timeout=15s on-fail=restart

(11)配置集群存放MFS元数据的文件系统:

[root@etnode1 ~]# pcs cluster cib fs_cfg
[root@etnode1 ~]# pcs -f fs_cfg resource create ETMFS Filesystem device="/dev/drbd1" directory="/mfsdata" fstype="xfs"
[root@etnode1 ~]# pcs -f fs_cfg constraint colocation add ETMFS with MFSDataClone INFINITY with-rsc-role=Master
[root@etnode1 ~]# pcs -f fs_cfg constraint order promote MFSDataClone then start ETMFS
[root@etnode1 ~]# pcs -f fs_cfg constraint colocation add EtMfsMaster with ETMFS INFINITY
[root@etnode1 ~]# pcs -f fs_cfg constraint order ETMFS then EtMfsMaster
[root@etnode1 ~]# pcs -f fs_cfg constraint    //查看配置的约束
将配置推送至整个集群:
[root@etnode1 ~]# pcs cluster cib-push fs_cfg
(12)分别在etchunknode1、etchunknode2安装chunkserver

在文件存储服务器chunkserver上面配置MFSmaster的VIP(mfsmaster为hostname,指向的IP为10.119.119.148):

# yum install moosefs-chunkserver
# vim  /etc/mfs/mfschunkserver.cfg
# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.119.119.0/24" port port="9422" protocol="tcp" accept'

(13)在etclientnode1上面安装客户端
[root@etclientnode1 ~]# yum install moosefs-client
[root@etclientnode1 ~]# mfsmount /mnt/mfs/ -H mfsmaster
(14)启动高可用MFS





启动chunkserver:




在etclientnode1上面挂载MFS:






至此集群搭建完成 微笑





 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值