HeartBeat+DRBD+NFS 高可用

heartbeatdrbdnfs全部使用yum安装。

NFS客户端使用的是centos 7 可以实现自动挂载。

此文是测试成功后的总结

主节点:

Last login: Thu Jul 30 09:12:52 2015 from 10.0.0.1
[root@heartbeat1 ~]#
[root@heartbeat1 ~]# cat /etc/redhat-release
CentOS release 6.6 (Final)
[root@heartbeat1 ~]# uname -ra
Linux heartbeat1 2.6.32-504.el6.x86_64 #1 SMP Wed Oct 15 04:27:16 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
[root@heartbeat1 ~]# tail -3 /etc/hosts
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.0.7    heartbeat1
10.0.0.8    heartbeat2
[root@heartbeat1 ~]# tail -3 /etc/rc.local
/sbin/route add -host 10.0.0.26 dev eth1
modprobe drbd
drbdadm up data

[root@heartbeat1 ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:51:A3:1E 
          inet addr:10.0.0.7  Bcast:10.0.0.255  Mask:255.255.255.0     #备节点ip10.0.0.8
eth1      Link encap:Ethernet  HWaddr 00:0C:29:51:A3:28 
          inet addr:10.0.10.7  Bcast:10.0.10.255  Mask:255.255.255.0    #备节点心跳ip10.0.10.8

heartbeat 配置文件:(主节点备节点配置相同)
[root@heartbeat1 ha.d]# grep -v ^# /etc/ha.d/authkeys
auth 3
3 md5 Hello!
[root@heartbeat1 ha.d]# grep -v ^# /etc/ha.d/ha.cf
debugfile /var/log/ha-debug
logfile    /var/log/ha-log
logfacility    local0
keepalive 2
deadtime 5
warntime 10
initdead 60
udpport 694
mcast eth1 225.0.0.1 694 1 0
auto_failback on
node heartbeat1
node heartbeat2
[root@heartbeat1 ha.d]# grep -v ^# /etc/ha.d/haresources
heartbeat1      IPaddr::10.0.0.50/24/eth0 drbddisk::data Filesystem::/dev/drbd0::/md1::ext4
[root@heartbeat1 ha.d]#

共享磁盘分区:(主备节点相同)
parted /dev/sdc mklabel gpt
parted /dev/sdc mkpart primary 0 1024
parted /dev/sdc mkpart primary 1025 2146
parted /dev/sdc p    查看分区表

共享磁盘分区信息:(主备节点配置相同)
[root@heartbeat1 ~]# parted /dev/sdc p
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdc: 2147MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number  Start   End     Size    File system  Name     Flags
1      17.4kB  1024MB  1024MB  ext4         primary
2      1025MB  2146MB  1121MB               primary

DRBD配置文件:(主备节点配置相同)
[root@heartbeat1 ~]# cat /etc/drbd.d/global_common.conf
global    {
    usage-count no;
}
common    {
    syncer    {
        rate 1M;
        verify-alg crc32c;
        al-extents 517;
    }
}
#primary for drbd1
resource data {
    protocol C;
    disk    {
        on-io-error detach;
        }
    on heartbeat1 {
        device    /dev/drbd0;
        disk    /dev/sdc1;
        address    10.0.0.7:7788;
        meta-disk    /dev/sdc2 [0];
    }
    on heartbeat2    {
        device /dev/drbd0;
        disk    /dev/sdc1;
        address    10.0.0.8:7788;
        meta-disk    /dev/sdc2 [0];
    }
}   
[root@heartbeat1 ~]#

DRBD启动:
第一步初始化:
[root@heartbeat1 ~]# drbdadm create-md data    初始化data磁盘
[root@heartbeat1 ~]# drbdadm up data
[root@heartbeat1 ~]# cat /proc/drbd    如果是Secondary 说明启动正常
启动后进行格式化磁盘:(只是主节点上配置,备节点会自动同步配置)
[root@heartbeat1 drbd.d]# mkfs.ext4 -b 4096 /dev/drbd0 (对应的是/dev/sdc1  ,drbd 主上配置)
[root@heartbeat1 drbd.d]# tune2fs -c -1 /dev/drbd0
tune2fs 1.41.12 (17-May-2010)
Setting maximal mount count to -1

测试磁盘:
mkdir /md1    创建挂载目录

mount /dev/drbd0 /md1    挂载drbd0设备测试
[root@heartbeat1 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
                       35G  4.0G   30G  13% /
tmpfs                 491M     0  491M   0% /dev/shm
/dev/sda1             477M   34M  418M   8% /boot
/dev/drbd0            749M  3.5M  707M   1% /md1    自动挂载点

NFS配置文件:(主备节点相同)
[root@heartbeat1 ~]# cat /etc/exports
/md1    10.0.0.*(rw,sync)          目录 允许ip段 权限

NFS启动:主从同时配置: 先启动rpcbind  服务
[root@heartbeat2 ~]# /etc/init.d/rpcbind restart
Stopping rpcbind:                                          [  OK  ]
Starting rpcbind:                                          [  OK  ]
[root@heartbeat2 ~]# /etc/init.d/nfs restart
Shutting down NFS daemon:                                  [FAILED]
Shutting down NFS mountd:                                  [FAILED]
Shutting down NFS quotas:                                  [FAILED]
Starting NFS services:                                     [  OK  ]
Starting NFS quotas:                                       [  OK  ]
Starting NFS mountd:                                       [  OK  ]
Starting NFS daemon:                                       [  OK  ]
Starting RPC idmapd:                                       [  OK  ]
[root@heartbeat2 ~]# chkconfig rpcbind on
[root@heartbeat2 ~]# chkconfig nfs on
[root@heartbeat1 ~]# rpcinfo -p localhost      检查启动状态

[root@heartbeat1 ~]# showmount -e 10.0.0.50
Export list for 10.0.0.50:
/md1 10.0.0.*

客户端挂载:
[root@localhost ~]# mount -t nfs 10.0.0.50:/md1/ /md1/
[root@localhost ~]#
[root@localhost ~]# ls /md1/
lafjd       oldboy14  oldboy21
[root@localhost ~]# echo "mount -t nfs 10.0.0.50:/md1/ /md1/" >> /etc/rc.local    添加开机启动
[root@localhost ~]# tail -1 /etc/rc.local
mount -t nfs 10.0.0.50:/md1/ /md1/

也可以使用exportfs 配置NFS(详情 man exportfs)
[root@heartbeat1 ha.d]#exportfs  -o rw,sync,all_squash,anonuid=65534,anongid=65534,mp,fsid=2

10.0.0.0/24:/md1
[root@heartbeat1 ha.d]# /etc/init.d/nfs restart
[root@heartbeat1 ha.d]# showmount -e 10.0.0.7
Export list for 10.0.0.7:
/md1 10.0.0.*

----------------------------------------------------------------------------
查看drbd运行状态:
[root@heartbeat1 ~]# cat /proc/drbd
version: 8.4.4 (api:1/proto:86-101)
GIT-hash: 74402fecf24da8e5438171ee8c19e28627e1c98a build by root@heartbeat1, 2015-07-21 14:36:54
0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
    ns:8 nr:0 dw:4 dr:776 al:1 bm:1 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
[root@heartbeat1 ~]#

[root@heartbeat1 ~]# lsmod |grep drbd
drbd                  327515  4
libcrc32c               1246  1 drbd

drbdadm  命令说明:
[root@heartbeat1 ~]# drbdadm -h

USAGE: drbdadm COMMAND [OPTION...] {all|RESOURCE...}

GENERAL OPTIONS:
  --stacked, -S
  --dry-run, -d
  --verbose, -v
  --config-file=..., -c ...
  --config-to-test=..., -t ...
  --drbdsetup=..., -s ...
  --drbdmeta=..., -m ...
  --drbd-proxy-ctl=..., -p ...
  --sh-varname=..., -n ...
  --peer=..., -P ...
  --version, -V
  --setup-option=..., -W ...
  --help, -h

COMMANDS:
attach                             disk-options                      
detach                             connect                           
net-options                        disconnect                        
up                                 resource-options                  
down                               primary                           
secondary                          invalidate                        
invalidate-remote                  outdate                           
resize                             verify                            
pause-sync                         resume-sync                       
adjust                             adjust-with-progress              
wait-connect                       wait-con-int                      
role                               cstate                            
dstate                             dump                              
dump-xml                           create-md                         
show-gi                            get-gi                            
dump-md                            wipe-md                           
apply-al                           hidden-commands                   

Version: 8.4.4 (api:1)
GIT-hash: 74402fecf24da8e5438171ee8c19e28627e1c98a build by root@heartbeat1, 2015-07-21 14:36:42

[root@heartbeat1 ~]# drbdadm create-md data    初始化data磁盘
[root@heartbeat1 ~]# drbdadm disconnect data    断开data磁盘连接
[root@heartbeat1 ~]# drbdadm connect data    连接data磁盘

注意事项:
启动heartbeat:(重启先stop在start)
/etc/init.d/heartbeat start
关掉开机启动(heartbeat开机启动容易发生裂脑问题)
chkconfig heartbeat off
chkconfig drbd    off

解决drbd Unknown 问题:
cs:StandAlone ro:Secondary/Unknown ds:UpToDate/DUnknown   r-----
方法一:
在选定的非主节点上执行
drbdadm secondary data
drbdadm -- --discard-my-data connect mysql
主节点上执行
drbdadm connect data

如果以上方法不行:
重新初始化
drbdadm detach data
###dd if=/dev/zero bs=1M count=100 of=/dev/sdb1
drbdadm down data
drbdadm create-md data
在主节点上执行
drbdadm connect data

你可能感兴趣的:(客户端)