首页 > 代码库 > mfs

mfs



user  -->  ha( 双机热备 436) --> lb( 调度器 ) --> 应用( www ftp ) --> sql( mysql pgsql oracle redis )--> 文件系统( mfs hdfs )--> i/o( ssd )

RHCA 442 413 318
虚拟:RHEV openstack

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                             分布式文件系统  mfs
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

http://www.moosefs.org/

Master:192.168.2.149
Chunkserver:192.168.2.150
             192.168.2.125
Client:192.168.2.126

当停止服务时,先停止客户端

1.服务端  主机ip:192.168.2.149
    (1)下载mfs包  lftp i
                   get mfs-1.6.27-1.tar.gz

    (2)编译需要    yum install -y gcc make rpm-build fuse-devel zlib-devel

    (3)打rpm包    rpmbuild -tb mfs-1.6.27-1.tar.gz ( 有时不能识别-1,mv修改名字即可 )
                   结果:+ umask 022
                        + cd /root/rpmbuild/BUILD
                        + cd mfs-1.6.27
                        + rm -rf /root/rpmbuild/BUILDROOT/mfs-1.6.27-2.x86_64
                        + exit 0
                  rpm包:ls /root/rpmbuild/RPMS/x86_64/ ( 生成的rpm包 )
                         mfs-cgi-1.6.27-2.x86_64.rpm          mfs-client-1.6.27-2.x86_64.rpm
                         mfs-cgiserv-1.6.27-2.x86_64.rpm      mfs-master-1.6.27-2.x86_64.rpm
                         mfs-chunkserver-1.6.27-2.x86_64.rpm  mfs-metalogger-1.6.27-2.x86_64.rpm

    (4)安装cgi包  cd /root/rpmbuild/RPMS/x86_64/
                   rpm -ivh mfs-master-1.6.27-2.x86_64.rpm ( master主机  )
            mfs-cgi-1.6.27-2.x86_64.rpm     ( cgi监控 )
            mfs-cgiserv-1.6.27-2.x86_64.rpm     ( cgi监控服务 )
                   结果:Preparing...                ########################################### [100%]
                           1:mfs-cgi                ########################################### [ 33%]
                           2:mfs-cgiserv            ########################################### [ 67%]
                           3:mfs-master             ########################################### [100%]

    (5)复制配置文件cp /etc/mfs/mfsexports.cfg.dist /etc/mfs/mfsexports.cfg
                  cp /etc/mfs/mfsmaster.cfg.dist /etc/mfs/mfsmaster.cfg
                  cp /etc/mfs/mfstopology.cfg.dist /etc/mfs/mfstopology.cfg
                  结果:ls /etc/mfs/
                       mfsexports.cfg       mfsmaster.cfg       mfstopology.cfg
                       mfsexports.cfg.dist  mfsmaster.cfg.dist  mfstopology.cfg.dist

                  cp /var/lib/mfs/metadata.mfs.empty /var/lib/mfs/metadata.mfs
            ( 如果没有复制此目录,mfsmaster起不来,当起来以后metadata.mfs就不存在了,关闭就又出现了 )
                  结果:ls /var/lib/mfs/ ( 数据目录 )
                       metadata.mfs  metadata.mfs.empty

    (6)改权限 原因:vim  /etc/mfs/mfsmaster.cfg
                    # WORKING_USER = nobody ( 默认用户为nobody )
                ( 此文件中凡是用#注释掉的变量均使用其默认值,基本不需要就可以工作 )
              修改:chown nobody /var/lib/mfs/ -R ( 时mfs的数据存放处,默认是让nobody才可以访问,所以需要修改权限 )
              结果:ll /var/lib/mfs/*
                   -rw-r--r-- 1 nobody root 8 Aug  4 10:32 /var/lib/mfs/metadata.mfs
                   -rw-r--r-- 1 nobody root 8 Aug  4 10:24 /var/lib/mfs/metadata.mfs.empty

    (7)开启服务  mfsmaster start
                 结果:working directory: /var/lib/mfs
                      lockfile created and locked
                      initializing mfsmaster modules ...
                      loading sessions ... file not found
                      if it is not fresh installation then you have to restart all active mounts !!!
                      exports file has been loaded
                      mfstopology: incomplete definition in line: 7
                      mfstopology: incomplete definition in line: 7
                      mfstopology: incomplete definition in line: 22
                      mfstopology: incomplete definition in line: 22
                      mfstopology: incomplete definition in line: 28
                      mfstopology: incomplete definition in line: 28
                      topology file has been loaded
                      loading metadata ...
                      create new empty filesystemmetadata file has been loaded
                      no charts data file - initializing empty charts
                      master <-> metaloggers module: listen on *:9419
                      master <-> chunkservers module: listen on *:9420
                      main master server module: listen on *:9421
                      mfsmaster daemon initialized properly
    (8)查看文件 ls /var/lib/mfs/ ( 此时metadata.mfs不存在了,出现了sessions.mfs和metadata.mfs.back )
                结果:metadata.mfs.back  metadata.mfs.empty  sessions.mfs

    (9)启动CGI监控  mfscgiserv
                结果:lockfile created and locked
                     starting simple cgi server (host: any , port: 9425 , rootpath: /usr/share/mfscgi)

    (10)执行权限 chmod +x /usr/share/mfscgi/*.cgi
                查看: ll /usr/share/mfscgi/
                      -rwxr-xr-x 1 root root   1881 Aug  4 10:24 chart.cgi   ****
                      -rwxr-xr-x 1 root root    270 Aug  4 10:24 err.gif
                      -rwxr-xr-x 1 root root    562 Aug  4 10:24 favicon.ico
                      -rwxr-xr-x 1 root root    510 Aug  4 10:24 index.html
                      -rwxr-xr-x 1 root root   3555 Aug  4 10:24 logomini.png
                      -rwxr-xr-x 1 root root 107456 Aug  4 10:24 mfs.cgi     *****
                      -rwxr-xr-x 1 root root   5845 Aug  4 10:24 mfs.css

    (11)网页访问 http://192.168.2.149:9425


2.chunkserve    主机ip:192.168.2.150
    (1)安装mfs-chunkserver
                scp /root/rpmbuild/RPMS/x86_64/mfs-chunkserver-1.6.27-2.x86_64.rpm 192.168.2.150:( 149主机 )
                rpm -ivh mfs-chunkserver-1.6.27-2.x86_64.rpm
                结果:Preparing...                ########################################### [100%]
                        1:mfs-chunkserver        ########################################### [100%]

    (2)复制配置文件 cp /etc/mfs/mfschunkserver.cfg.dist /etc/mfs/mfschunkserver.cfg
                    cp /etc/mfs/mfshdd.cfg.dist /etc/mfs/mfshdd.cfg

    (3)解析    vim /etc/hosts
                内容:192.168.2.149   mfsmaster

    (4)添加虚拟磁盘( 图形添加一块虚拟磁盘 )
                fdisk -cu /dev/vdb   ( n p 1 空 空 t 8e p w )
                p : Device Boot      Start         End      Blocks   Id  System
                  /dev/vdb1            2048    16777215     8387584   8e  Linux LVM
           pv: pvcreate /dev/vdb1
           vg: vgcreate mfsvg /dev/vdb1
           lv: lvcreate -L 4g -n demo mfsvg
           lvs:
              LV      VG       Attr       LSize   Pool Origin Data%  Move Log Cpy%Sync Convert
              lv_root VolGroup -wi-ao----   4.91g                                             
              lv_swap VolGroup -wi-ao---- 612.00m                                             
              demo    mfsvg    -wi-a-----   4.00g                                             
           格式化: mkfs.ext4 /dev/mfsvg/demo

    (5)挂载
           建挂载目录:mkdir /mnt/chunk1
           挂载文件:  vim /etc/fstab
                     内容:/dev/mfsvg/demo         /mnt/chunk1             ext4    defaults        0 0
           检测挂载:  mount -a
           查看挂载:  df
                     结果:/dev/mapper/mfsvg-demo         4128448 139256   3779480   4% /mnt/chunk1

    (6)添加存储块 vim /etc/mfs/mfshdd.cfg
                  内容:/mnt/chunk1

    (7)改权限 chown -R nobody.nobody /mnt/chunk1/

    (8)建目录 ( 监控结果存放目录 )
              原因:ll /var/lib/mfs
                   ls: cannot access /var/lib/mfs: No such file or directory
              建立: mkdir /var/lib/mfs
              权限: chown -R nobody /var/lib/mfs/

    (9)开启服务 mfschunkserver
                结果:working directory: /var/lib/mfs
                     lockfile created and locked
                     initializing mfschunkserver modules ...
                     hdd space manager: path to scan: /mnt/chunk1/
                     hdd space manager: start background hdd scanning (searching for available chunks)
                     main server module: listen on *:9422
                     no charts data file - initializing empty charts
                     mfschunkserver daemon initialized properly
               开启服务后就会生成如下文件
                     ls /var/lib/mfs/.mfschunkserver.lock ( 隐藏文件 )
                     /var/lib/mfs/.mfschunkserver.lock

             ls /mnt/chunk1/
            0  0C  18  24  30  3C  48  54  60  6C  78  84  90  9C  A8  B4  C0  CC  
            D8  E4  F0  FC    01  0D  19  25  31  3D  49  55  61  6D  79  85  91  9D                 .......  FF

   (10)端口 netstat -antlp
             结果:tcp        0      0 0.0.0.0:9422                0.0.0.0:*                   LISTEN      1717/mfschunkserver
                  tcp        0      0 192.168.2.150:47737         192.168.2.149:9420          ESTABLISHED 1717/mfschunkserver

   (11)拉伸lvm
           拉伸:lvextend -l +1023 /dev/mfsvg/demo
                结果:Extending logical volume demo to 8.00 GiB
                     Logical volume demo successfully resized
           查看:lvs
                结果:demo    mfsvg    -wi-ao----   8.00g                                             
           df没变:df -h
                结果:/dev/mapper/mfsvg-demo        4.0G  137M  3.7G   4% /mnt/chunk1
                resize2fs /dev/mfsvg/demo
                结果:resize2fs 1.41.12 (17-May-2010)
                     Filesystem at /dev/mfsvg/demo is mounted on /mnt/chunk1; on-line resizing required
                     old desc_blocks = 1, new_desc_blocks = 1
                     Performing an on-line resize of /dev/mfsvg/demo to 2096128 (4k) blocks.
                     The filesystem on /dev/mfsvg/demo is now 2096128 blocks long.
               查看:df -h
                    /dev/mapper/mfsvg-demo        7.9G  138M  7.4G   2% /mnt/chunk1


3.chunkserve主机2      主机ip:192.168.2.125
   (1)安装scp mfs-chunkserver-1.6.27-2.x86_64.rpm 192.168.2.125:( 150主机 )
               rpm -ivh mfs-chunkserver-1.6.27-2.x86_64.rpm
               结果:Preparing...                ########################################### [100%]
                       1:mfs-chunkserver        ########################################### [100%]
   (2)解析    vim /etc/hosts
              内容:192.168.2.149   mfsmaster
   (3)存放目录 mkdir /var/lib/mfs
               chown -R nobody /var/lib/mfs/
   (4) 图形添加虚拟磁盘              
               fdisk -cu /dev/vdb  ( n p 1 空 空 t 8e p w )
               p结果:/dev/vdb1            2048    16777215     8387584   8e  Linux LVM
            pv: pvcreate /dev/vdb1
            vg: vgcreate mfsvg /dev/vdb1
            lv: lvcreate -L 8g -n demo mfsvg                                        
            lvs:
               结果:demo    mfsvg    -wi-a-----   8.00g                                             
            格式化:mkfs.ext4 /dev/mfsvg/demo
   (4)挂载
              mkdir /mnt/chunk1
              vim /etc/fstab
              内容:/dev/mfsvg/demo         /mnt/chunk1             ext4    defaults        0 0
              mount -a
              结果:/dev/mapper/mfsvg-demo         8252856 149492   7684140   2% /mnt/chunk1
              chown -R nobody.nobody /mnt/chunk1/
   (5)复制配置文件  cp /etc/mfs/mfschunkserver.cfg.dist /etc/mfs/mfschunkserver.cfg
                    cp /etc/mfs/mfshdd.cfg.dist /etc/mfs/mfshdd.cfg
   (6)挂载点  vim /etc/mfs/mfshdd.cfg
               内容:/mnt/chunk1
   (7)开启服务 mfschunkserver
   (8)网页查看:图形页面--server


4.client       主机ip:192.168.2.126
   (1)安装 scp /root/rpmbuild/RPMS/x86_64/mfs-client-1.6.27-2.x86_64.rpm 192.168.2.126:( 149主机 )
            yum localinstall -y mfs-client-1.6.27-2.x86_64.rpm
   (2)复制配置文件
            cp /etc/mfs/mfsmount.cfg.dist /etc/mfs/mfsmount.cfg
   (3)解析 vim /etc/hosts
            内容:192.168.2.149   mfsmaster
   (4)挂载 mkdir /mnt/mfs
            vim /etc/mfs/mfsmount.cfg
            内容:/mnt/mfs
            mfsmount
            结果:mfsmaster accepted connection with parameters: read-write,restricted_ip ; root mapped to root:root
             df
            结果:mfsmaster:9421                14851200      0  14851200   0% /mnt/mfs
   (5)测试 cp /etc/passwd /mnt/mfs/
            mfsfileinfo /mnt/mfs/passwd
            结果:/mnt/mfs/passwd:
             chunk 0: 0000000000000001_00000001 / (id:1 ver:1)
                  copy 1: 192.168.2.150:9422
            mkdir /mnt/mfs/dir1
            mkdir /mnt/mfs/dir2
            mv /mnt/mfs/passwd /mnt/mfs/dir1/
            mfsgetgoal /mnt/mfs/dir2/
            结果:/mnt/mfs/dir2/: 1
            mfsgetgoal /mnt/mfs/dir1
            结果:/mnt/mfs/dir1: 1

            mfssetgoal -r 2 /mnt/mfs/dir2/
            结果:/mnt/mfs/dir2/:
                 inodes with goal changed:               1
                 inodes with goal not changed:           0
                 inodes with permission denied:          0
            cp /etc/fstab /mnt/mfs/dir2/
            mfsfileinfo /mnt/mfs/dir2/fstab
            结果:/mnt/mfs/dir2/fstab:
             chunk 0: 0000000000000002_00000001 / (id:2 ver:1)
                copy 1: 192.168.2.125:9422
                copy 2: 192.168.2.150:9422
 
            mfschunkserver stop ( 150主机 )
            mfsfileinfo /mnt/mfs/dir2/fstab
            结果:/mnt/mfs/dir2/fstab:
             chunk 0: 0000000000000002_00000001 / (id:2 ver:1)
                copy 1: 192.168.2.125:9422
           mfsfileinfo /mnt/mfs/dir1/passwd
           结果:/mnt/mfs/dir1/passwd:
            chunk 0: 0000000000000001_00000001 / (id:1 ver:1)
                no valid copies !!!

           mfschunkserver( 150主机 )
           mfsfileinfo /mnt/mfs/dir2/fstab
           结果:/mnt/mfs/dir2/fstab:
            chunk 0: 0000000000000002_00000001 / (id:2 ver:1)
               copy 1: 192.168.2.125:9422
               copy 2: 192.168.2.150:9422
           mfsfileinfo /mnt/mfs/dir1/passwd
           结果:/mnt/mfs/dir1/passwd:
            chunk 0: 0000000000000001_00000001 / (id:1 ver:1)
               copy 1: 192.168.2.150:9422


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mfs存储会出现的情况

1.当mfschunkserver服务停止时修改挂载点里的文件再次挂载时会出现问题,再次触发( 修改文件 )即可 ( 126主机 )

   (1)chunk主机1 mfschunkserver stop ( 150主机 )
                  结果:sending SIGTERM to lock owner (pid:1783)
                       waiting for termination ... terminated
   (2)查看文件   mfsfileinfo /mnt/mfs/dir2/fstab
                 结果:/mnt/mfs/dir2/fstab:
                  chunk 0: 0000000000000002_00000001 / (id:2 ver:1)
                     copy 1: 192.168.2.125:9422
   (3)修改挂载目录里的文件  vim /mnt/mfs/dir2/fstab
   (4)开启mfschunkserver ( 150主机 )
                 mfschunkserver
                 结果:working directory: /var/lib/mfs
                      lockfile created and locked
                      initializing mfschunkserver modules ...
                      hdd space manager: path to scan: /mnt/chunk1/
                      hdd space manager: start background hdd scanning (searching for available chunks)
                      main server module: listen on *:9422
                      stats file has been loaded
                      mfschunkserver daemon initialized properly
   (5)查看文件( 服务开启 )
                 mfsfileinfo /mnt/mfs/dir2/fstab
                 结果:/mnt/mfs/dir2/fstab:
                  chunk 0: 0000000000000002_00000001 / (id:2 ver:1)
                     copy 1: 192.168.2.125:9422
   (6)触发(修改)vim /mnt/mfs/dir2/fstab
   (7)查看文件( 触发后 )
                 mfsfileinfo /mnt/mfs/dir2/fstab
                 结果:/mnt/mfs/dir2/fstab:
                  chunk 0: 0000000000000006_00000001 / (id:6 ver:1)
                     copy 1: 192.168.2.125:9422
                     copy 2: 192.168.2.150:9422



2.大文件会分块存储( 这样读取速度会很快 ) ( 126主机 )
  (1)建立打文件 cd /mnt/mfs/dir2/
                dd if=/dev/zero of=bigfile bs=1M count=200
                结果:200+0 records in
                     200+0 records out
                     209715200 bytes (210 MB) copied, 35.7793 s, 5.9 MB/s
  (2)查看文件 mfsfileinfo /mnt/mfs/dir2/bigfile
              结果:/mnt/mfs/dir2/bigfile:
               chunk 0: 0000000000000009_00000001 / (id:9 ver:1)
                  copy 1: 192.168.2.125:9422
                  copy 2: 192.168.2.150:9422
               chunk 1: 000000000000000A_00000001 / (id:10 ver:1)
                  copy 1: 192.168.2.125:9422
                  copy 2: 192.168.2.150:9422
               chunk 2: 000000000000000B_00000001 / (id:11 ver:1)
                  copy 1: 192.168.2.125:9422
                  copy 2: 192.168.2.150:9422
               chunk 3: 000000000000000C_00000001 / (id:12 ver:1)
                  copy 1: 192.168.2.125:9422
                  copy 2: 192.168.2.150:9422


3.误删文件 ( 126主机 )
   (1)删除文件 rm -f /mnt/mfs/dir2/fstab
   (2)建目录   mkdir /mnt/meta
   (3)挂载     mfsmount -m /mnt/meta/ -H mfsmaster
               结果:mfsmaster accepted connection with parameters: read-write,restricted_ip
               df
               结果:mfsmaster:9421                14851008 527488  14323520   4% /mnt/mfs

   (4)恢复 cd /mnt/meta/trash/     
            mv 0000000F\|dir2\|fstab undel/  
            cat /mnt/mfs/dir2/fstab
            结果:tmpfs                   /dev/shm                tmpfs   defaults        0 0
                 devpts                  /dev/pts                devpts  gid=5,mode=620  0 0

4.master主机挂掉后
     当没有文件传输时,可在服务器重启之后,运行 mfsmetarestore –a 进行修复,之后执行mfsmaster start 恢复 master 服务。
(1)master主机挂了   6815 ?        S<     0:41 mfsmaster start
         kill -9 6815

(2)直接开启服务  mfsmaster
working directory: /var/lib/mfs
lockfile created and locked
initializing mfsmaster modules ...
loading sessions ... ok
sessions file has been loaded
exports file has been loaded
mfstopology: incomplete definition in line: 7
mfstopology: incomplete definition in line: 7
mfstopology: incomplete definition in line: 22
mfstopology: incomplete definition in line: 22
mfstopology: incomplete definition in line: 28
mfstopology: incomplete definition in line: 28
topology file has been loaded
loading metadata ...
can‘t open metadata file
if this is new instalation then rename /var/lib/mfs/metadata.mfs.empty as /var/lib/mfs/metadata.mfs
init: file system manager failed !!!
error occured during initialization - exiting

(3)恢复    mfsmetarestore -a
loading objects (files,directories,etc.) ... ok
loading names ... ok
loading deletion timestamps ... ok
loading chunks data ... N1
N2
N3
N4
N5
N6
N7
N8
N9
N10
N11
N12
ok
checking filesystem consistency ... ok
connecting files and chunks ... L
F1
F2
F3
F4
F5
F6
F7
F8
F9
F10
F11
F12
C
ok
store metadata into file: /var/lib/mfs/metadata.mfs

(4)再次开启     mfsmaster
working directory: /var/lib/mfs
lockfile created and locked
initializing mfsmaster modules ...
loading sessions ... ok
sessions file has been loaded
exports file has been loaded
mfstopology: incomplete definition in line: 7
mfstopology: incomplete definition in line: 7
mfstopology: incomplete definition in line: 22
mfstopology: incomplete definition in line: 22
mfstopology: incomplete definition in line: 28
mfstopology: incomplete definition in line: 28
topology file has been loaded
loading metadata ...
loading objects (files,directories,etc.) ... ok
loading names ... ok
loading deletion timestamps ... ok
loading chunks data ... ok
checking filesystem consistency ... ok
connecting files and chunks ... ok
all inodes: 17
directory inodes: 3
file inodes: 14
chunks: 12
metadata file has been loaded
stats file has been loaded
master <-> metaloggers module: listen on *:9419
master <-> chunkservers module: listen on *:9420
main master server module: listen on *:9421
mfsmaster daemon initialized properly


[root@server149 ~]# chown -R nobody /var/lib/mfs/
[root@server149 ~]# ll /var/lib/mfs/
total 776
-rw-r----- 1 nobody nobody   4682 Aug  4 14:45 changelog.1.mfs
-rw-r----- 1 nobody nobody   1105 Aug  4 12:46 changelog.3.mfs
-rw-r--r-- 1 nobody root     1421 Aug  4 15:59 metadata.mfs.back
-rw-r----- 1 nobody nobody    358 Aug  4 14:13 metadata.mfs.back.1
-rw-r--r-- 1 nobody root        8 Aug  4 10:24 metadata.mfs.empty
-rw-r----- 1 nobody nobody    369 Aug  4 15:00 sessions.mfs
-rw-r----- 1 nobody nobody 762516 Aug  4 15:00 stats.mfs

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

出现问题:
1.rpmbuild -tb mfs-1.6.27-1.tar.gz
    error: File /root/mfs-1.6.27.tar.gz: No such file or directory
  解决:mv mfs-1.6.27-1.tar.gz mfs-1.6.27.tar.gz

2.rpmbuild -tb mfs-1.6.27.tar.gz
error: Failed build dependencies:
    fuse-devel is needed by mfs-1.6.27-2.x86_64
    zlib-devel is needed by mfs-1.6.27-2.x86_64

3.lvextend -L +4g /dev/mfsvg/demo
  Extending logical volume demo to 8.00 GiB
  Insufficient free space: 1024 extents needed, but only 1023 available
  结果:lvextend -l +1023 /dev/mfsvg/demo
  Extending logical volume demo to 8.00 GiB
  Logical volume demo successfully resized




客户端和存储主机都链接在master主机,其他的主机挂了不会有影响,但是master不可以挂了,
为了解决master单点故障,如下:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~数据存储 ( 节点同步存储 ) drpd~~~~~~~~~~~~~~~~~

数据存储 ( 节点同步存储 ) drpd
 ( 详情可见 7月22日 截图 )

(一)配置drbd

(1)在接收同步信息的主机上安装drbd

 * 1.接收数据主机1 安装drbd:( 192.168.1.149 )
    (1)安装gcc,make( 编译需要的工具 )
               yum install gcc make -y
    (2)下载   lftp i
         解压  tar zfx drbd-8.4.3.tar.gz            
    (3)编译             cd drbd-8.4.3
             第一次执行: ./configure --with-km --enable-spec
              报错结果:                                     ( 缺少flex )
                         yum install -y flex
             第二次执行:  ./configure --with-km --enable-spec
              报错结果:                                     ( 缺少rpm-build )
                         yum install -y rpm-build
             第三次执行: ./configure --with-km --enable-spec
              执行结果:  + umask 022  ( 前面省略 )
                         + cd /root/rpmbuild/BUILD
                         + cd drbd-8.4.3
                         + rm -rf /root/rpmbuild/BUILDROOT/drbd-8.4.3-2.el6.x86_64
                         + exit 0
    (4)打包成rpm
              cd /root/drbd-8.4.3
          1.  rpmbuild -bb drbd.spec
              报错信息:                                   ( 找不到源码 )
                      cp /root/drbd-8.4.3.tar.gz /root/rpmbuild/SOURCES/
              rpmbuild -bb drbd.spec
              打包成功:+ umask 022
                       + cd /root/rpmbuild/BUILD
                       + cd drbd-8.4.3
                       + rm -rf /root/rpmbuild/BUILDROOT/drbd-8.4.3-2.el6.x86_64
                       + exit 0

          2.  rpmbuild -bb drbd-km.spec
              报错信息:error: Failed build dependencies:    ( 缺少kernel-devel )
                  kernel-devel is needed by drbd-km-8.4.3-2.el6.x86_64
                      yum install -y kernel-devel
              rpmbuild -bb drbd-km.spec
              打包成功:+ umask 022
                      + cd /root/rpmbuild/BUILD
                      + cd drbd-8.4.3
                      + rm -rf /root/rpmbuild/BUILDROOT/drbd-km-8.4.3-2.el6.x86_64
                      + exit 0

    (5)查看打包好的rpm包
              ls /root/rpmbuild/RPMS/x86_64/  ( 10个 )
              drbd-8.4.3-2.el6.x86_64.rpm
              drbd-bash-completion-8.4.3-2.el6.x86_64.rpm
              drbd-heartbeat-8.4.3-2.el6.x86_64.rpm
              drbd-km-2.6.32_431.el6.x86_64-8.4.3-2.el6.x86_64.rpm
              drbd-pacemaker-8.4.3-2.el6.x86_64.rpm
              drbd-udev-8.4.3-2.el6.x86_64.rpm
              drbd-utils-8.4.3-2.el6.x86_64.rpm
              drbd-xen-8.4.3-2.el6.x86_64.rpm
    (6)安装打包好的rpm包
              rpm -ivh /root/rpmbuild/RPMS/x86_64/*
    (7)检测是否安装成功
              modprobe -l | grep drbd
              结果:updates/drbd.ko  ( 表示安装成功 )
     
    (8)把打包好的rpm包考给另一个接收主机上
              scp /root/rpmbuild/RPMS/x86_64/* 192.168.2.161:

 * 2.接收数据主机2 安装drbd:( 192.168.1.161 )
    (1)直接安装 rpm -ivh /root/*
              Preparing...             ########################################### [100%]
              1:drbd-utils             ########################################### [ 13%]
              2:drbd-bash-completion   ########################################### [ 25%]
              3:drbd-heartbeat         ########################################### [ 38%]
              4:drbd-pacemaker         ########################################### [ 50%]
              5:drbd-udev              ########################################### [ 63%]
              6:drbd-xen               ########################################### [ 75%]
              7:drbd                   ########################################### [ 88%]
              8:drbd-km-2.6.32_431.el6.########################################### [100%]
   (2)查看是否安装成功
              modprobe -l | grep drbd
              结果:updates/drbd.ko  ( 安装成功 )

 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

(2)在接收同步信息的主机上进行配置  
            ( 图形添加虚拟磁盘,如果不添加就没有vdb,添加--虚拟--确定 )
   * 1.在接收主机上配置 ( [root@server77 ~]# )
    (1)查看  vim /etc/drbd.d/global_common.conf   ( 全局配置文件,不需要动 )
              vim /etc/drbd.conf                   ( 查看此文件,需要建立*.res文件 )
               # You can find an example in  /usr/share/doc/drbd.../drbd.conf.example
               include "drbd.d/global_common.conf";
               include "drbd.d/*.res";        ( 此处包含文件,只要是.res结尾的就可以了 )
    (2)配置  vim /etc/drbd.d/example.res    ( 此文件需要自己建立,内容手工添加 )
               resource example {            ( example 是存储数据资源的名字,可以自己命名 )
               meta-disk internal;
               device /dev/drbd1;
               syncer {
               verify-alg sha1;
               }
               on server149.example.com {
               disk /dev/drbd/demo;
               address 192.168.2.149:7789;
               }
               on server161.example.com {
               disk /dev/drbd/demo;
               address 192.168.2.161:7789;
               }
               }
   (3)建立lvm  
        建立 fdisk -cu /dev/vdb   ( n p 1 空 空 t 8e w )
             PV: pvcreate /dev/vdb1
                 Physical volume "/dev/vdb1" successfully created
             VG: vgcreate drbd /dev/vdb1
                 Volume group "drbd" successfully created
             LV: lvcreate -L 2G -n demo drbd
                 Logical volume "demo" created

           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        具体  fdisk -cu /dev/vdb   ( n p 1 空 空 t 8e w ) ( 建立lvm )
              具体执行结果如下:
              Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
              Building a new DOS disklabel with disk identifier 0xd59c73fd.
              Changes will remain in memory only, until you decide to write them.
              After that, of course, the previous content won‘t be recoverable.

              Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

              Command (m for help): n   ***
              Command action
              e   extended
              p   primary partition (1-4)
              p                         ***
              Partition number (1-4): 1 ***
              First sector (2048-16777215, default 2048):
              Using default value 2048
              Last sector, +sectors or +size{K,M,G} (2048-16777215, default 16777215):
              Using default value 16777215

              Command (m for help): t   ***
              Selected partition 1      ***
              Hex code (type L to list codes): 8e  ***
              Changed system type of partition 1 to 8e (Linux LVM)

              Command (m for help): p   ***

              Disk /dev/vdb: 8589 MB, 8589934592 bytes
              16 heads, 63 sectors/track, 16644 cylinders, total 16777216 sectors
              Units = sectors of 1 * 512 = 512 bytes
              Sector size (logical/physical): 512 bytes / 512 bytes
              I/O size (minimum/optimal): 512 bytes / 512 bytes
              Disk identifier: 0xd59c73fd

                 Device Boot      Start         End      Blocks   Id  System
              /dev/vdb1            2048    16777215     8387584   8e  Linux LVM

              Command (m for help): w
              The partition table has been altered!

              Calling ioctl() to re-read partition table.
              Syncing disks.
         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

         查看 lvs
              LV      VG       Attr       LSize   Pool Origin Data%  Move Log Cpy%Sync Convert
              lv_root VolGroup -wi-ao----   4.91g                                             
              lv_swap VolGroup -wi-ao---- 612.00m                                             
              demo    drbd     -wi-a-----   2.00g    
                                         
    (4)把配置文件拷贝到另一个主机上
             scp /etc/drbd.d/example.res 192.168.2.161:/etc/drbd.d/
    (5)在另一个主机上建立lvm  ( [root@server161 ~]# )
             fdisk -cu /dev/vdb
             pvcreate /dev/vdb1
             vgcreate drbd /dev/vdb1
             lvcreate -L 2G -n demo drbd

    (6)初始化( 两台主机都进行初始化 )
             drbdadm create-md example  ( 149,161 )
             执行结果:  
             --==  Thank you for participating in the global usage survey  ==--
             The server‘s response is:
             you are the 18678th user to install this version
             Writing meta data...
             initializing activity log
             NOT initializing bitmap
             New drbd meta data block successfully created.
             success

    (7)启服务 ( 两台主机都要启 )
             /etc/init.d/drbd start  ( 149,161 )
             结果;
             Starting DRBD resources: [    ( 149主 )                    
             create res: example
             prepare disk: example
             adjust disk: example
             adjust net: example
             ]
             ..........
             ***************************************************************
             DRBD‘s startup script waits for the peer node(s) to appear.
             - In case this node was already a degraded cluster before the
             reboot the timeout is 0 seconds. [degr-wfc-timeout]
             - If the peer was available before the reboot the timeout will
             expire after 0 seconds. [wfc-timeout]
            (These values are for resource ‘example‘; 0 sec -> wait forever)
             To abort waiting enter ‘yes‘ [  18]:
 
             /etc/init.d/drbd start        ( 161副 )
             Starting DRBD resources: [
             create res: example
             prepare disk: example
             adjust disk: example
             adjust net: example
             ]
       
    (8)查看/proc/drbd文件设置主,副
        查看 cat /proc/drbd
            version: 8.4.3 (api:1/proto:86-101)
            GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by root@server149.example.com, 2014-07-22 12:34:51
            1: cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent C r-----    **( Secondary/Secondary )
            ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:2097052
        设置主:
            drbdsetup /dev/drbd1 primary --force  ( 149 )
        查看结果:
         *  cat /proc/drbd
            version: 8.4.3 (api:1/proto:86-101)
            GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by root@server149.example.com, 2014-07-22 12:34:51
            1: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r---n-         **( Primary/Secondary )
            ns:1746292 nr:0 dw:0 dr:1748632 al:0 bm:105 lo:0 pe:12 ua:2 ap:0 ep:1 wo:f oos:362396
        [===============>....] sync‘ed: 82.9% (362396/2097052)K
        finish: 0:00:12 speed: 28,400 (28,436) K/sec
        
         *  cat /proc/drbd
            version: 8.4.3 (api:1/proto:86-101)
            GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by root@server149.example.com, 2014-07-22 12:34:51
            1: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----  *** ( Primary/Secondary   UpToDate/UpToDate )
            ns:2097052 nr:0 dw:0 dr:2097716 al:0 bm:128 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0

    (9)格式化  mkfs.ext4 /dev/drbd1
   (10)挂载上进行测试( 必须挂在主服务上,现在主机是149 )  
            挂载:    mount /dev/drbd1 /var/www/html/
            selinux:getenforce ( 需要考虑selinux )
                     ll -dZ /var/www/html ( 安全上下文 )
            测试页面:vim /var/www/html/index.html ( server77 )
            网页访问:192.168.2.117 ( server77 )
            卸载:   umount /var/www/html/

    mount /dev/drbd1 /mnt
    umount /mnt/
    drbdadm  secondary example

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                集群管理   pacemaker
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
节点1:(vm2)192.168.2.77
节点2:(vm3)192.168.2.62
物理机:192.168.2.1


时间同步:date
关闭火墙:iptables -F
相互解析: vim  /etc/hosts
           192.168.2.77    server77.example.com
           192.168.2.62    server62.example.com
           192.168.2.1     server1.example.com


基本配置

    (1)停止之前做的集群 ( 之前做了keepalived,做了什么就停什么,两个都停 )
                /etc/init.d/keepalived stop
    (2)安装pacemaker服务( 两个都需要安装 )
                yum install -y pacemaker
    (3)配置    cp /etc/corosync/corosync.conf.example /etc/corosync/corosync.conf
                vim /etc/corosync/corosync.conf
                 # Please read the corosync.conf.5 manual page
                 compatibility: whitetank
                 totem {
                    version: 2
                    secauth: off
                    threads: 0
                    interface {
                      ringnumber: 0
                      bindnetaddr: 192.168.2.0    ( ip的网段 ) ***
                      mcastaddr: 226.94.1.1       ( 广播地址 )
                      mcastport: 4468             ( 广播端口,两个节点必须一样,但是和其他人的节点要不一样 )***
                      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 {            ( 添加service模块 )
                name: pacemaker  ( 服务名称 )
                 ver: 0          ( 0:开启后台,1:不开启后台 )
                }

                复制给另一个节点 scp /etc/corosync/corosync.conf 192.168.2.62:/etc/corosync/

   (4)安装crm ( 没有crm命令,所以安装以下三个包 ,crm可以用tab键补齐 )
               lftp 192.168.2.251
               yum localinstall -y crmsh-1.2.6-0.rc2.2.1.x86_64.rpm pssh-2.3.1-4.1.x86_64.rpm python-pssh-2.3.1-4.1.x86_64.rpm
   (5)开启服务 /etc/init.d/corosync start
               检测:crm
                    crm(live)# configure
                    crm(live)configure# show
                    出现下面两个节点62,77证明成功了
                    node server62.examlpe.com
                    node server77.example.com
                    property $id="cib-bootstrap-options" \
                    dc-version="1.1.10-14.el6-368c726" \
                    cluster-infrastructure="classic openais (with plugin)" \
                    expected-quorum-votes="2"
                    crm(live)configure# quit
                    bye
   (6)检测( 检测时有错误 )
               crm_verify -LV
               错误结果:error: unpack_resources:  Resource start-up disabled since no STONITH resources have been defined
                       error: unpack_resources:  Either configure some or disable STONITH with the stonith-enabled option
                       error: unpack_resources:  NOTE: Clusters with shared data need STONITH to ensure data integrity
               解决错误:crm
                       crm(live)# configure
                       crm(live)configure# property stonith-enabled=false ( 先关闭fence )
                       crm(live)configure# commit
                       crm(live)configure# quit
               再次检测( 没有报错了 )  crm_verify -LV

   (7)添加vip crm
               crm(live)# configure
               crm(live)configure# primitive vip ocf:heartbeat:IPaddr2 params ip=192.168.2.117 cidr_netmask=32 op monitor interval=30s
               crm(live)configure# commit
               crm(live)configure# quit
               bye
               查看:ip addr show
                    inet 192.168.2.62/24 brd 192.168.2.255 scope global eth0
                    inet 192.168.2.117/32 brd 192.168.2.255 scope global eth0
               监控查看:crm_mon
                       Online: [ server62.examlpe.com server77.example.com ]
                       vip     (ocf::heartbeat:IPaddr2):    Started server62.examlpe.com
               查看信息:crm(live)configure# show
                        node server62.examlpe.com
                        node server77.example.com
                        primitive vip ocf:heartbeat:IPaddr2 \
                    params ip="192.168.2.117" cidr_netmask="32" \
                    op monitor interval="30s"
                        property $id="cib-bootstrap-options" \
                        dc-version="1.1.10-14.el6-368c726" \
                        cluster-infrastructure="classic openais (with plugin)" \
                        expected-quorum-votes="2" \
                    stonith-enabled="false"

   (8)避免资源丢失
             出现问题:/etc/init.d/corosync stop
             监控结果:( vip 不见了 )
                     crm_mon
                     Online: [ server77.example.com ]
                     OFFLINE: [ server62.examlpe.com ]
             解决问题:/etc/init.d/corosync start
                     crm
                     crm(live)# configure
                     crm(live)configure# property no-quorum-policy=ignore ( 忽略法定人数 )
                     crm(live)configure# commit
                     crm(live)configure# quit
                     bye
             再次实验:( vip未丢失,转到77主机上了 )
                     /etc/init.d/corosync stop
                     Online: [ server77.example.com ]
                     OFFLINE: [ server62.examlpe.com ]
                     vip     (ocf::heartbeat:IPaddr2):    Started server77.example.com
  (9)添加资源
            安装资源:( 两个节点都需要安装 )
                     yum install -y httpd
            配置服务:( 两个节点都需要配置 )
                     vim /etc/httpd/conf/httpd.conf
                      <Location /server-status>
                        SetHandler server-status
                        Order deny,allow
                        Deny from all
                        Allow from 127.0.0.1
                     </Location>
            测试页面:vim /var/www/html/index.html ( 77  62 )
            添加资源:/etc/init.d/corosync start
                    crm
                    crm(live)# configure
                    crm(live)configure# primitive apache ocf:heartbeat:apache params configfile="/etc/httpd/conf/httpd.conf"
                                        op monitor interval=30s
                    crm(live)configure# commit  ( 虽然有警告,但是可以忽略 )
                    WARNING: apache: default timeout 20s for start is smaller than the advised 40s
                    WARNING: apache: default timeout 20s for stop is smaller than the advised 60s
           监控页面:Online: [ server62.examlpe.com server77.example.com ]
                    vip     (ocf::heartbeat:IPaddr2):    Started server77.example.com
                    apache  (ocf::heartbeat:apache):        Started server62.examlpe.com

  (10)避免资源不在一个主机上
           链接一起:crm(live)configure# colocation apache-with-vip inf: apache vip
                    crm(live)configure# commit
           监控页面: Online: [ server62.examlpe.com server77.example.com ]
                    vip     (ocf::heartbeat:IPaddr2):    Started server77.example.com
                    apache  (ocf::heartbeat:apache):    Started server77.example.com


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
添加fence
   (1)物理机 ( 获取fence的key )( 获取key必须在真机上进行,管理主机 192.168.2.1 )
              ( 当fence配置好以后,如果没有设置开机自启动,再次使用集群是必须先开启fence再开启需要管理的主机(虚拟机) )
         1.如果以前做过( 如下 )
               /etc/init.d/fence_virtd start
               netstat -aunlp | grep 1229
               udp   0    0 0.0.0.0:1229      0.0.0.0:*       2463/fence_virtd    
              ( 在ha主机建立完/etc/cluster/ 目录后在复制 )
               scp /etc/cluster/fence_xvm.key 192.168.2.77:/etc/cluster/
               scp /etc/cluster/fence_xvm.key 192.168.2.62:/etc/cluster/
        2.如果没有做过( 如下 )
        (1)安装fence  
                    yum search fence
                    yum install -y fence-virtd-libvirt.x86_64 fence-virtd-multicast.x86_64 fence-virtd.x86_64
                    rpm -qa | grep fence
                    fence-virtd-libvirt-0.2.3-15.el6.x86_64
                    fence-virtd-multicast-0.2.3-15.el6.x86_64
                    fence-virtd-0.2.3-15.el6.x86_64
        (2)获取fence_xvm.key     
                    fence_virtd -c  ( 需要填写的如下,其他的空格即可 )
                    Interface [none]: br0  ( 物理机O(真机) )
                    Backend module [checkpoint]: libvirt
                    Replace /etc/fence_virt.conf with the above [y/N]? y
        (3)开启服务 /etc/init.d/fence_virtd start
                    Starting fence_virtd:                                      [  OK  ]
        (4)建立存放目录  mkdir /etc/cluster
        (5)获取key  cd /etc/cluter/
                     dd if=/dev/urandom of=fence_xvm.key bs=128 count=1
                     运行结果如下:
                     1+0 records in
                     1+0 records out
                     128 bytes (128 B) copied, 0.000301578 s, 424 kB/s
            查看key   ll /etc/cluter/fence_xvm.key
                     -rw-r--r--. 1 root root 128 Jul 24 13:20 /etc/cluter/fence_xvm.key
        (6)key复制给被管理主机
                     scp /etc/cluster/fence_xvm.key 192.168.2.77:/etc/cluster/
                     scp /etc/cluster/fence_xvm.key 192.168.2.62:/etc/cluster/
       (7)重启服务   /etc/init.d/fence_virtd restart
       (8)查看端口   netstat -anulp | grep 1229
                     udp        0      0 0.0.0.0:1229        0.0.0.0:*             12686/fence_virtd   

   (2)节点机( 两个节点都需要做1-4,开启添加在一个节点上5.6,监控在另一个节点上 7 )
         1.建立放fence的key的目录
                     mkdir /etc/cluster
         2.安装fence  yum install -y fence*
         3.检测命令    stonith_admin -I ( 有fence_xvm就可以了 )
         4.观察过程参数 stonith_admin -M -a fence_xvm
         5.开启fence  crm
                     crm(live)# configure
                     crm(live)configure# property stonith-enabled=true  ( 开启fence )
                     crm(live)configure# commit
                     ( 虽然有错误,是因为还没有配置fence的原因,所以在此可以忽略 )
                     error: unpack_resources:     Resource start-up disabled since no STONITH resources have been defined
                     error: unpack_resources:     Either configure some or disable STONITH with the stonith-enabled option
                     error: unpack_resources:     NOTE: Clusters with shared data need STONITH to ensure data integrity
                     Errors found during check: config not valid
                     Do you still want to commit? y

        6.添加fence  crm(live)configure# primitive fence_xvm stonith:fence_xvm params pcmk_host_map=
                    "server77.example.com:vm2 server62.example.com:vm3" op monitor interval=60s
                    ( "主机名:域名(建立虚拟机时的名字)  主机名:域名(建立虚拟机时的名字) " )
                     crm(live)configure# commit

        7.监控页面    vip     (ocf::heartbeat:IPaddr2):    Started server77.example.com
                     apache  (ocf::heartbeat:apache):   Started server77.example.com
                     fence_xvm    (stonith:fence_xvm):    Started server62.examlpe.com  
                    ( 出现上面此行就证明添加成功 )

        8.测试( 在77主机上 )  
           77关闭时:在77上关闭eth0:( 执行完此操作,77主机被重启 )
                             ifconfig eth0 down
                    监控页面:( 资源立即跳转到62主机上 )
                             Online: [ server62.examlpe.com ]
                             OFFLINE: [ server77.example.com ]
                             vip     (ocf::heartbeat:IPaddr2):    Started server62.examlpe.com
                             apache  (ocf::heartbeat:apache):        Started server62.examlpe.com
                             fence_xvm    (stonith:fence_xvm):    Started server62.examlpe.com
                    网页测试:192.168.2.117( 出现62,但是刷新不变 )

           77开启时:开启corosync服务  
                             /etc/init.d/corosync start
                    监控页面:( 资源立即跳转到77主机上 )
                            Online: [ server62.examlpe.com server77.example.com ]
                            vip     (ocf::heartbeat:IPaddr2):    Started server77.example.com
                            apache  (ocf::heartbeat:apache):    Started server77.example.com
                            fence_xvm    (stonith:fence_xvm):    Started server62.examlpe.com

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

出现问题
     (1)在crm编辑输入错误时 输入edit,可以进行修改
     (2)在crm编辑时出现如下错误
              crm(live)# configure
              ERROR: running cibadmin -Ql: Could not establish cib_rw connection: Connection refused (111)
              Signon to CIB failed: Transport endpoint is not connected
              Init failed, could not perform requested operations
              可能: 1.服务没有开启    /etc/init.d/corosync start
                    2.配置可能有错    vim /etc/corosync/corosync.conf
     (3)在获取fence的key时 管理机没有1229端口    
                    1.可能没有配置    fence_virtd -c ( 进行配置 )( 需要填写的如下,其他的空格即可 )
                                     Interface [none]: br0  ( 物理机O(真机) )
                                     Backend module [checkpoint]: libvirt
                                     Replace /etc/fence_virt.conf with the above [y/N]? y
                    2.查看配置       cat /etc/fence_virt.conf
                                    fence_virtd {
                                  listener = "multicast";
                                  backend = "libvirt";
                                  module_path = "/usr/lib64/fence-virt";
                                    }
                                    listeners {
                                  multicast {
                                key_file = "/etc/cluster/fence_xvm.key";
                                address = "225.0.0.12";
                                family = "ipv4";
                                port = "1229";
                                interface = "br0";
                                  }

                                    }
                                    backends {
                                   libvirt {
                                 uri = "qemu:///system";
                                   }

                                    }
     (4)在开启fence时监控出现错误
              可能: 1.停止服务再开启服务  /etc/init.d/corosync stop
                                       /etc/init.d/corosync start
                    2.开启fence参数     crm(live)configure# property stonith-enabled=true  ( 必须是true不可以是yes )






   master1    master2
    \       /
    /var/lib/mfs
      ( drbd )

(二)添加drbd,与corosync整合

1.激活drbp  
2.挂载  ( 先激活,再挂载 )

     (1)编辑  crm
               crm(live)# configure
               1.添加数据资源:webdata如下:
                                webdata:数据名(可随意)      ocf:linbit:drbd:调用drbd      example:资源名
                                monitor interval=60s:每隔60s监控
                crm(live)configure# primitive webdata ocf:linbit:drbd params drbd_resource=example op monitor interval=60s

               2.主从接管数据资源(ms)  
                               webdataclone:数据克隆(可随意定义)    master-max=1:第一个节点(主节点)
                               master-node-max=1:第一个(主)节点最多个数    clone-max=2:第二个节点(克隆节点)
                               clone-node-max=1:第二个(克隆)节点最多个数    notify=true (生效)
                               两个主必须格式化成gfs2,ext4不可以
               crm(live)configure# ms webdataclone webdata meta master-max=1 master-node-max=1 clone-max=2 clone-node-max=1 notify=true
 
               3.添加数据文件系统wedfs
                               webfs:web文件系统      ocf:heartbeat:Filesystem:调用文件系统     device:设备
                               directory:挂载点       fstype:文件类型           有特殊字符时同“”
               crm(live)configure# primitive webfs ocf:heartbeat:Filesystem params device="/dev/drbd1" directory="/var/www/html" fstype=ext4

               4.绑定webfs和drbd
               crm(live)configure# colocation webfs_on_drbd inf: webfs webdataclone:Master

               5.顺序先webfs再webdata
               crm(live)configure# order webfs-after-webdata inf: webdataclone:promote webfs:start
               
               6.整合apache和webfs
               crm(live)configure# colocation apache-with-webfs inf: apache webfs

               7.顺序先apache再webfs
               crm(live)configure# order apache-after-webfs inf: webfs apache
               crm(live)configure# commit

               完成后监控页面:
                            Online: [ server62.example.com server77.example.com ]
                            vip     (ocf::heartbeat:IPaddr2):    Started server77.example.com
                            apache  (ocf::heartbeat:apache):        Started server77.example.com
                            fence_xvm    (stonith:fence_xvm):    Started server62.example.com
                             Master/Slave Set: webdataclone [webdata]
                                   Masters: [ server77.example.com ]
                                    Slaves: [ server62.example.com ]
                            webfs   (ocf::heartbeat:Filesystem):    Started server77.example.com

   (2)测试  1./etc/init.d/corosync stop ( 77节点 )
              监控页面:Online: [ server62.example.com ]
                      OFFLINE: [ server77.example.com ]
                      vip     (ocf::heartbeat:IPaddr2):    Started server62.example.com
                      apache  (ocf::heartbeat:apache):        Started server62.example.com
                      fence_xvm    (stonith:fence_xvm):    Started server62.example.com
                       Master/Slave Set: webdataclone [webdata]
                              Masters: [ server62.example.com ]
                              Stopped: [ server77.example.com ]
                      webfs   (ocf::heartbeat:Filesystem):    Started server62.example.com

            2./etc/init.d/corosync start ( 77节点 )
              监控页面:Online: [ server62.example.com server77.example.com ]
                       vip     (ocf::heartbeat:IPaddr2):    Started server77.example.com
                       apache  (ocf::heartbeat:apache):        Started server77.example.com
                       fence_xvm    (stonith:fence_xvm):    Started server62.example.com
                        Master/Slave Set: webdataclone [webdata]
                               Masters: [ server77.example.com ]
                                Slaves: [ server62.example.com ]
                       webfs   (ocf::heartbeat:Filesystem):    Started server77.example.com
              查看挂载:df( 77主节点自动挂载 )
                      结果:/dev/drbd1    2064108   35844   1923412   2% /var/www/html





出现问题:
(1)当停止corosync停不掉时,配置时出现问题,先杀死再开启
         /etc/init.d/corosync stop
         killall -9 corosync
         /etc/init.d/corosync start
(2)想删除节点
         crm(live)configure# cd
         crm(live)# node  
         crm(live)node# delete server62.examlpe.com
         结果:INFO: node server62.examlpe.com deleted


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


5.ha主机( master主机2 )   主机ip:192.168.2.52

(1)停服务( 客户端--存储主机--master主机 )
    客户端主机(126) : umount /mnt/mfs/
    存储主机1:(125): mfschunkserver stop
             结果:sending SIGTERM to lock owner (pid:1693)
             waiting for termination ... terminated
    存储主机2:(150):mfschunkserver stop
            结果:sending SIGTERM to lock owner (pid:1824)
             waiting for termination ... terminated
    master主机:(149): mfsmaster stop
            结果:sending SIGTERM to lock owner (pid:6918)
             waiting for termination ... terminated

(2)在mstart2主机上安装mstart的rpm包
        获得master的rpm包( 149 ):scp /root/rpmbuild/RPMS/x86_64/mfs-master-1.6.27-2.x86_64.rpm 192.168.2.52:
        安装rpm包 ( 52 ):rpm -ivh mfs-master-1.6.27-2.x86_64.rpm
            结果:Preparing...                ########################################### [100%]
                    1:mfs-master             ########################################### [100%]
    复制模板 ( 52 )
     cp /etc/mfs/mfsexports.cfg.dist /etc/mfs/mfsexports.cfg
     cp /etc/mfs/mfsmaster.cfg.dist /etc/mfs/mfsmaster.cfg
     cp /etc/mfs/mfstopology.cfg.dist /etc/mfs/mfstopology.cfg

(3)master主机1确保安装了heartbeat     
    rpm -q heartbeat
    结果:heartbeat-3.0.4-2.el6.x86_64
[    /etc/init.d/drbd status
    结果:drbd driver loaded OK; device status:
         version: 8.4.3 (api:1/proto:86-101)
         GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by root@server149.example.com, 2014-08-04 16:32:53
         m:res      cs         ro                 ds                 p  mounted  fstype
         1:example  Connected  Primary/Secondary  UpToDate/UpToDate  C

(4)修改权限
     1.cat /proc/drbd
        version: 8.4.3 (api:1/proto:86-101)
        GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by root@server149.example.com, 2014-08-04 16:32:53
        1: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
            ns:2163328 nr:0 dw:66276 dr:2098072 al:17 bm:128 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
     2.mount /dev/drbd1 /var/lib/mfs/
     3.ll -d /var/lib/mfs/
        drwxr-xr-x 3 nobody root 4096 Aug  4 17:25 /var/lib/mfs/
     4.umount /var/lib/mfs/


[root@server149 ~]# vim /etc/init.d/mfs
#!/bin/bash
#
# Init file for the MooseFS master service
#
# chkconfig: - 92 84
#
# description: MooseFS master
#
# processname: mfsmaster
# Source function library.
# Source networking configuration.
. /etc/init.d/functions
. /etc/sysconfig/network
# Source initialization configuration.
# Check that networking is up.
[ "${NETWORKING}" == "no" ] && exit 0
[ -x "/usr/sbin/mfsmaster" ] || exit 1
[ -r "/etc/mfsmaster.cfg" ] || exit 1
[ -r "/etc/mfsexports.cfg" ] || exit 1
RETVAL=0
prog="mfsmaster"
datadir="/var/lib/mfs"
mfsbin="/usr/sbin/mfsmaster"
mfsrestore="/usr/sbin/mfsmetarestore"
start () {
echo -n $"Starting $prog: "
$mfsbin start >/dev/null 2>&1
if [ $? -ne 0 ];then
$mfsrestore -a >/dev/null 2>&1 && $mfsbin start >/dev/null 2>&1
fi
RETVAL=$?
echo
return $RETVAL
}
stop () {
echo -n $"Stopping $prog: "
$mfsbin -s >/dev/null 2>&1 || killall -9 $prog #>/dev/null 2>&1
RETVAL=$?
echo
return $RETVAL
}
restart () {
stop
start
}
reload () {
echo -n $"reload $prog: "
$mfsbin reload >/dev/null 2>&1
RETVAL=$?
echo
return $RETVAL
}
restore () {
echo -n $"restore $prog: "
$mfsrestore -a >/dev/null 2>&1
RETVAL=$?
echo
return $RETVAL
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
reload)
reload
;;
restore)
restore
;;
status)
status $prog
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|restart|reload|restore|status}"
RETVAL=1
esac
exit $RETVAL

[root@server149 ~]# chmod +x /etc/init.d/mfs
[root@server149 ~]# /etc/init.d/mfs status
mfsmaster is stopped
[root@server149 ~]# mount /dev/drbd1 /var/lib/mfs/
[root@server149 ~]# df
Filesystem                   1K-blocks    Used Available Use% Mounted on
/dev/mapper/VolGroup-lv_root   5067808 1159672   3650704  25% /
tmpfs                           251048       0    251048   0% /dev/shm
/dev/vda1                       495844   33469    436775   8% /boot
/dev/drbd1                     2064108   36616   1922640   2% /var/lib/mfs
[root@server149 ~]# /etc/init.d/mfs start
Starting mfsmaster:
[root@server149 ~]# /etc/init.d/mfs status
mfsmaster (pid 11756) is running...




mfs