DRBD+HEARTBEAT+Moosefs安装

DRBD+HEATBEAT+Moosefs安装

一:基础安装和配置
1.关闭iptables,selinux
2.配置本地hosts解析(下面是实例.包含了mfsmaster,chunkserver,mfsmaser-backup的节点IP和hostname,并且涉及的drbd,heartbeat依赖这些解析)
10.10.10.195 bjsdzx-2_8_b1-211.195-fms.cn
10.10.10.197 bjsdzx-2_8_b1-211.197-fms.cn
10.10.10.198 bjsdzx-2_8_b1-211.198-fms.cn
10.10.10.196 bjsdzx-2_8_b1-211.196-fms.cn
3.配置时间同步,mfs个角色服务器之间时间不能差异太大.
4.mfs-master和mfs-slave之间需要ssh互信.
5.安装yum源用户安装heartbeat
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
6.yum install flex libxslt autoconf gcc make

二:安装和配置heartbeat
PS:
在mfs-master和mfs-slave的节点执行第一步安装.然后在mfs-master编辑好ha.cf,haresource后scp到对方机器即可.

1.yum install heartbeat

2.配置ha.cf    
vim /etc/ha.d/ha.cf
debugfile /var/log/ha-debug
    logfile        /var/log/ha-log
    logfacility     local0
    keepalive 2
    deadtime 10
    warntime 5
    initdead 60
    udpport 694
    #mcast em1 225.0.0.1 694 1 0
    ucast em4 10.10.20.195             #写相互心跳线的ip地址和绑定的网卡位置
    auto_failback off
    node     bjsdzx-2_8_b1-211.196-fms.cn    #mfs-master和mfs-slave节点的hostname名称
    node     bjsdzx-2_8_b1-211.195-fms.cn    #mfs-master和mfs-slave节点的hostname名称

    3.配置haresource
    vim /etc/ha.d/haresource
    bjsdzx-2_8_b1-211.196-fms.cn IPaddr::10.10.10.254/24/em2 drbddisk::mfsdata Filesystem::/dev/drbd1::/mfs::ext4 mfsmaster
    注意:
    IPaddress,drbddisk,Filesystem,mfsmaster的实际路径在 /etc/ha.d/resource.d,必须存在的文件.heartbeat启动的时候,从配置文件的左边一次读取操作
    关闭的时候一次从右边顺序读取操作,请注意启动和关闭的顺序来配置.

    4.启动heartbeat
     目前还没有配置好DRBD,所以不能按照上述的配置启动.
    修改haresource为一下,先启动测试.待drbd配置完成后才加入drbd的相应启动
     bjsdzx-2_8_b1-211.196-fms.cn IPaddr::10.10.10.254/24/em2
    在mfs-master和mfs-slave启动只配置了IP的heartbeat,查看VIP是否在相应的节点机器启动
    mfs-master:    
        inet 10.10.10.195/24 brd 10.10.10.255 scope global em2
        inet 10.10.10.254/24 scope global secondary em2
    可以进行相应的测试,停掉mfs-master的heartbeat,查看mfs-slave是否接管了VIP
    5.增加心跳线route    
        在mfs-master的主机增加到mfs-slave的route
        route add -host 10.10.20.196 dev em4
        在mfs-slave的主机增加到mfs-master的route
        route add -host 10.10.20.195 dev em4

三:安装和配置DRBD
PS:
DRBD依赖当前系统的内核版本.

  1.对硬盘分区,在mfs-master和mfs-slave上面的操作一样
     drbd需要一块独立的文件系统,对硬盘分区一块.
     fdisk /dev/sda
     目前fms需要的一块存储元数据文件的文件系统很小,为了以后的发展,目前是100G
    划分出/dev/sda3 用于存储meta data,不需要格式化,否则后面有报错

   2.安装DRBD
    目前使用的是centos6.8 2.6.32-642.el6.x86_64.需要相应的内核版本一致,安装包kernel-devel-2.6.32-642.el6.x86_64.rpm已经单独下载.
    在mfs-master和mfs-slave上面的操作一样.
    rpm -ivh http://optools.koolearn.com/soft/drbd/kernel-devel-2.6.32-642.el6.x86_64.rpm
    wget   http://optools.koolearn.com/soft/drbd/drbd-8.4.3.tar.gz
    cd drbd-8.4.3
    ./configure --prefix=/tol/app/drbd-8.4.3/ --with-km
make KDIR=/usr/src/kernels/`uname -r`
make install
mkdir -p /tol/app/drbd-8.4.3/var/run/drbd
ln -s /tol/app/drbd-8.4.3 /tol/app/drbd
cp /tol/app/drbd/etc/rc.d/init.d/drbd /etc/init.d/
    chmod +x /etc/init.d/drbd
    chkconfig —add drbd

   3.安装drbd模块到系统
    cd drbd-8.4.3
    cd drbd
    make clean
    make KDIR=/usr/src/kernels/`uname -r`
    cp drbd.ko /lib/modules/`uname -r`/kernel/lib/
    depmod

    加入开机启动,否则drbd开机启动提示找不到drbd模块,启动失败
    echo "modprobe drbd” >>/etc/rc.d/rc.local  

    4.配置drbd

        4.1:配置全局文件
        vim /tol/app/drbd/etc/drbd.conf
                include "drbd.d/global_common.conf";
                include "drbd.d/*.res”;

        vim /tol/app/drbd/etc/drbd.d/global_common.conf
                   global {
                    usage-count no;
                    }
                    common {
                    syncer {
                    rate 1000M;
                     }
                    protocol C;
                    net {
                    sndbuf-size 512k;
                    max-buffers     8000;
                    unplug-watermark   1024;
                    max-epoch-size  8000;
                    }            
                    disk {
                    on-io-error     detach;
                    no-disk-flushes;
                    no-md-flushes;
                    }
                }

        4.2:增加资源文件配置
            vim /tol/app/drbd/etc/drbd.d/mfsdata.res
                resource mfsdata {
                    on bjsdzx-2_8_b1-211.196-fms.cn {        #对应mfs-master主机的hostname
                    device          /dev/drbd1;                            #drbd
                    disk            /dev/sda3;                                #划分给相应drbd使用的文件系统
                    address         10.10.10.196:7789;            #对应主机的IP:7789(默认端口)
                    meta-disk       internal;
                    }
                    on bjsdzx-2_8_b1-211.195-fms.cn {        #对应的mfs-slave主机的hostname
                    device          /dev/drbd1;
                    disk            /dev/sda3;
                    address         10.10.10.195:7789;
                    meta-disk       internal;
                    }
                }            

    将配置文件从mfs-master的节点scp到mfs-slave相应的路径即可.

        4.3.在mfs-master和mfs-slave节点加载drbd模块和初始化meta数据

            mfs-master和mfs-slave都执行modprobe drbd
             lsmod |grep drbd
                drbd                  310012  3 
                libcrc32c               1246  1 drbd

            在mfs-master上面初始化meta数据    
             dd if=/dev/zero of=/dev/sda3 bs=1M count=10   #丢一写数据,否则create-md的时候可能会出现错误
     drbdadm create-md mfsdata  #建立drbd resource ;mfsdata 就是资源名称 mfsdata.res里面配置的resource mfsdata的名称
               initializing activity log
     NOT initializing bitmap
                Writing meta data...
                New drbd meta data block successfully created

                在mfs-slave的节点同样的操作
                drbdadm create-md mfsdata

    4.4.在mfs-master和mfs-slave节点启动drbd
       /etc/init.d/drbd
        查看drbd的运行情况
        drbd-overview

        在mfs-master节点设置drbd为master        
        drbd-overview 显示:
        mfsdata/0  Connected Secondary/Secondary Inconsistent/Inconsistent
                    drbdadm  — --overwrite-date-of-peer primary mfsdata
                    drbd-overview显示:
                    mfsdata/0  SyncSource Primary/Secondary UpToDate/Inconsistent 
                        [>....................] sync'ed:  1.4% (15160/15364)M        #需要等待sync 100%,时间取决于drbd文件系统的大小.
                    在mfs-slave查看drbd-overview也是一样的显示sync的状态.

                    等待同步完成,mount /dev/drbd1 /mfs
                    drbd-overview的结果:
                    mfsdata/0  Connected Primary/Secondary UpToDate/UpToDate C r----- /mfs ext4 99G 1.2G 93G 2% 

            4.5.测试DRBD
                    在mfs-master和mfs-slave使用drbd-overview查看各自的状态.
                    在mfs-master的机器操作如下:
                    umount /mfs
                    drbdadm secondary mfsdata
                    drbd-overview显示的状态:
                    mfsdata/0  Connected Secondary/Secondary UpToDate/UpToDate
                    在mfs-slave的节点操作如下:
                    drbdadm primary mfsdata
                    drbd-overview显示如下:
                    mfsdata/0  Connected Primary/Secondary UpToDate/UpToDate
                    mount /dev/drbd1 /mfs
                    即可把原来mfs-master的数据加载出来

               PS:
               DRBD的主备切换顺序不能错误:
                先卸载挂载点,才能把primary—>secondary.
                反之需要先secondary—>primay后才能mount

四:安装Moosefs-Master.
因为我们要使用DRBD的高可用,所以需要把drbd设备挂载到/mfs,这个路径是mfs的配置文件里面指定的元数据的存放路径.

            [root@bjsdzx-2_8_b1-211.195-fms.cn ~]# df -h
            Filesystem         Size  Used Avail Use% Mounted on
            /dev/sda2           99G  2.6G   91G   3% /
            tmpfs               16G     0   16G   0% /dev/shm
            /dev/sda1          190M   38M  143M  21% /boot
            /dev/sda6          1.6T  8.5G  1.6T   1% /tol
            /dev/drbd1          99G  4.2G   90G   5% /mfs

            1.在mfs-master安装MFS
               groupadd -g 500 mfs
               userdd -u 500 -g mfs -s /sbin/nologin mfs
               yum install zlib-devel fuse fuse-devel
               wget http://optools.koolearn.com/soft/drbd/moosefs-3.0.90-1.tar.gz      
               tar zxf moosefs-3.0.90-1.tar.gz
               cd moosefs-3.0.90
               ./configure —prefix=/tol/app/moosefs-3.0.90 —with-default-user=mfs —with-default-group=mfs —disable-mfschunkserver
                make && make install

            2.配置mfs-master的文件
               ln -s /tol/app/moosefs-3.0.90 /tol/app/moosefs
               cd /tol/app/moosefs/etc/mfs/
               cp mfsmaster.cfg.sample mfsmaster.cfg        #配置mfs的启动参数
               cp mfsexports.cfg.sample mfsexports.cfg        #配置挂载资源
               /tol/app/moosefs/var/mfs/metadata.mfs.empty  /mfs/mfsdata/metadata.mfs
               cp /tol/app/moosefs/sbin/mfsmaster /etc/init.d/mfsmaster
               chmod +x  /etc/init.d/mfsmaster
                /etc/init.d/mfsmaster start
                [root@bjsdzx-2_8_b1-211.195-fms.cn sbin]# ss -antlp|grep 94
                LISTEN     0      128                      :::43426                   :::*      users:(("rpc.statd",4594,11))
                LISTEN     0      100                       *:9419                     *:*      users:(("mfsmaster",40174,14))
                LISTEN     0      100                       *:9420                     *:*      users:(("mfsmaster",40174,15))
                LISTEN     0      100                       *:9421                     *:*      users:(("mfsmaster",40174,16))

            3.在mfs-slave安装moosefs
                因为mfs的元数据都在drbd的目录,在slave只有drbd作为primary的时候才会把/dev/drbd1 mount到/mfs,这样mfs才会正常的启动,在slave只需要                       在/tol/app安装好moosefs即可.slave的mfs启动是由heartbeat控制.
                groupadd -g 500 mfs
               userdd -u 500 -g mfs -s /sbin/nologin mfs
               yum install zlib-devel fuse fuse-devel
               wget http://optools.koolearn.com/soft/drbd/moosefs-3.0.90-1.tar.gz      
               tar zxf moosefs-3.0.90-1.tar.gz
               cd moosefs-3.0.90
               ./configure —prefix=/tol/app/moosefs-3.0.90 —with-default-user=mfs —with-default-group=mfs —disable-mfschunkserver
                make && make install
                把master的/tol/app/moosefs/etc/mfs/下的文件scp过来即可.

五:安装Moosefs-Chunkserver
1.moosefs的各个角色使用的安装包都是一个,只是不同角色需要disabled哪些而已.
groupadd -g 500 mfs
userdd -u 500 -g mfs -s /sbin/nologin mfs
yum install zlib-devel
wget http://optools.koolearn.com/soft/drbd/moosefs-3.0.90-1.tar.gz

tar zxf moosefs-3.0.90-1.tar.gz
cd moosefs-3.0.90
./configure —prefix=/tol/app/moosefs-3.0.90 —with-default-user=mfs —with-default-group=mfs —disable-mfsmaster –disable-mfsmount
make && make install
ln -s /tol/app/moosefs-3.0.90 /tol/app/moosefs
cd /tol/app/moosefs/etc/mfs
cp mfshdd.cfg.sample mfshdd.cfg
vim mfshdd.cfg
/tol/data #那个文件系统的目录需要给chunkserver做存储,需要mfs.mfs的用户和组的属性
cp mfschunkserver.cfg.sample mfschunkserver.cfg
只需要修改如下:
DATA_PATH = /tol/data #实际的提供存储的路径
MASTER_HOST = 10.10.10.254 #实际的master的IP

                2.启动chunkserver
                cp /tol/app/moosefs/sbin/mfschunkserver /etc/init.d/mfschunkserver
                /etc/init.d/mfschunkserver {start|stop|restart|reload|info|test|kill}
                查看chunkserver的端口
                ss -antlp|grep 94
                lsof -i:9422

六:注意事项
1.mfsmaster所在的机器开机必须加载drbd模块,否则heartbeat启动也无法把drbd的设备加载.
2.mfsmount的机器开机也必须加载fuse模块,否则mfsmount失败
3.Moosefs的集群开起顺序:
mfsmaster start——>chunkserver start———>mfsmount
4.Moosefs的集群关闭的顺序:
umount—>chunkserver stop——>mfsmaster stop
否则下次启动的时候会失败,需要使用mfsmaster -a来恢复元数据,这个过程时间不可控,还可以导致最后几秒的数据丢失.
如果umount失败,请把相应的fms服务都stop或者kill,以后umount -l /tol/app/fms4.5卸载后才能执行关闭集群的顺序..

                5.drbd的状态查看drbd-overview
                   如果出现非正常的情况,比如脑裂,需要排除是HA的脑裂还是DRBD的脑裂
                    脑裂的情况分上述2种,后续在写相应的文档处理过程和分析解决过程

                6.整个drbd依赖/etc/hosts配置ip和hostname对应,如有变动,需要全部修改相应的drbd的资源里面的hostname和ip
                7.heartbeat对网卡的重启比较敏感,mfs-master和mfs-slave的机器尽量不要重启网卡,否则会导致heartbeat的切换MFS-VIP以及DRBD的primary和secondary的切换,甚至出现heartbeat的脑裂-导致mfs集群不能提供服务;drbd的脑裂—不影响mfs的服务,只影响到mfs-master和mfs-slave的数据的同步.
此条目发表在DRBD分类目录,贴了标签。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。 必填项已用*标注