码迷,mamicode.com
首页 > 其他好文 > 详细

DRBD+HEARTBEAT+NFS高可用架构笔记

时间:2015-07-02 19:40:26      阅读:297      评论:0      收藏:0      [点我收藏+]

标签:hearbeat drbd nfs

参考1:http://os.51cto.com/art/201412/461533.htm

参考2:http://732233048.blog.51cto.com/9323668/1669417

参考3:http://network.51cto.com/art/201010/230237_all.htm

网络拓扑:


技术分享

简要说明:

两台 NFS 服务器,通过 eth0 网卡与内网的其他业务服务器进行通信,eth1网卡主要负责两台 NFS 服务器之间心跳通信,eth2网卡主要负责drbd数据同步的传输。

NFS 集群提供出来的一个VIP 192.168.1.160 来对外提供服务。

二、基础服务配置

1、配置时间同步

NFS1端:

[root@M1 ~]# ntpdate pool.ntp.org

NFS2端:

[root@M2 ~]# ntpdate pool.ntp.org
2、增加主机间路由 (选做)

首先先验证 M1 和 M2 的服务器 IP 是否合乎规划

   M1端:

[root@M1 ~]# ifconfig|egrep ‘Link encap|inet addr‘
[root@M2 ~]# ifconfig|egrep ‘Link encap|inet addr‘   
查看现有路由,然后增加相应的心跳线和drbd数据传输线路的端到端的静态路由条目。
目的是为了让心跳检测和数据同步不受干扰。

M1端:

route add -host 172.16.0.3 dev eth1
route add -host 172.16.100.3 dev eth2
echo ‘route add -host 172.16.0.3 dev eth1‘ >> /etc/rc.local
echo ‘route add -host 172.16.100.3 dev eth2‘ >> /etc/rc.local
traceroute 172.16.100.3

M2端:

和1 类似

三、部署 heartbeat 服务

此处仅演示 NFS1 服务端的安装,2 的不做复述。 

1、安装heartbeat软件

[root@M1 ~]# cd /etc/yum.repos.d/    
[root@M1 yum.repos.d]# wget http://mirrors.163.com/.help/CentOS6-Base-163.repo   
[root@M1 yum.repos.d]# rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm   
[root@M1 yum.repos.d]# sed -i ‘s@#baseurl@baseurl@g‘ *   (待研究,不做可以)
[root@M1 yum.repos.d]# sed -i ‘s@mirrorlist@#mirrorlist@g‘ *   (待研究,不做可以)
[root@M1 yum.repos.d]# yum install heartbeat -y     # 该命令有时可能需要执行2次

2、配置heartbeat服务

[root@M1  yum.repos.d]# cd /usr/share/doc/heartbeat-3.0.4/    
[root@M1 heartbeat-3.0.4]# ll |egrep ‘ha.cf|authkeys|haresources‘ 
[root@M1 heartbeat-3.0.4]# cp ha.cf authkeys haresources /etc/ha.d/    
[root@M1 heartbeat-3.0.4]# cd /etc/ha.d/   
[root@M1 ha.d]# ls    authkeys ha.cf harc haresources rc.d README.config resource.d shellfuncs

注意:主备节点两端的配置文件(ha.cf,authkeys,haresource)完全相同,下面是各个节点的文件内容

针对heartbeat的配置,主要就是修改ha.cf、authkeys、haresources这三个文件,下面我列出这三个文件的配置信息,大家仅作参考!

ha.cf

debugfile /var/log/ha-debug
logfile    /var/log/ha-log
logfacility    local0
keepalive 2
deadtime 10
warntime 6
udpport    694
ucast eth0 192.168.1.168 
auto_failback on
node    fuzai01
node    fuzai02
ping 192.168.1.199
respawn hacluster /usr/lib64/heartbeat/ipfail

authkeys

auth 1
1 crc

haresources

fuzai01 IPaddr::192.168.1.160/24/eth0

注意:这个里的nfsd并不是heartbeat自带的,需要自己编写。

针对该脚本的编写需要满足一下需求:

1、有可执行权限

2、必须存放在/etc/ha.d/resource.d或/etc/init.d目录下

3、必须有start、stop这两个功能

具体脚本信息,下文会写。

4、启动heartbeat

[root@M1 ha.d]# /etc/init.d/heartbeat start
 Starting High-Availability services: INFO: Resource is stopped    Done.   
 [root@M1 ha.d]# chkconfig heartbeat off

说明:关闭开机自启动。当服务重启时,需要人工去启动。

5、测试heartbeat

在此步测试之前,请先在 M2 上操作如上步骤!

a、正常状态

[root@M1 ha.d]# ip a|grep eth1    
  
[root@M2 ha.d]# ip a|grep eth1

说明:M1主节点拥有vip地址,M2节点没有。

b、模拟主节点宕机后的状态

[root@M1 ha.d]# /etc/init.d/heartbeat stop    
Stopping High-Availability services: Done.    
[root@M1 ha.d]# ip a|grep em1    说明:M1宕机后,VIP地址漂移到M2节点上,M2节点成为主节点

c、模拟主节点故障恢复后的状态

[root@M1 ha.d]# /etc/init.d/heartbeat start    
Starting High-Availability services: INFO: Resource is stopped    Done.    
[root@M1 ha.d]# ip a|grep em1    
说明:M1节点恢复之后,又抢占回了VIP资源

四、DRBD安装部署

1、新添加(初始)硬盘

# fdisk /dev/sdb

----------------

n-p-1-1-"+1G"-w

----------------

# mkdir /data


2、安装drbd

针对drbd的安装,我们不仅可以使用yum的方式,还可以使用编译安装的方式。由于我在操作的时候,无法从当前yum源取得drbd的rpm包,因此我就采用了编译的安装方式。

[root@M1 ~]# yum -y install gcc gcc-c++ kernel-devel kernel-headers flex make   
[root@M1 ~]# cd /usr/local/src   
[root@M1 src]# wget http://oss.linbit.com/drbd/8.4/drbd-8.4.3.tar.gz    
[root@M1 src]# tar zxf drbd-8.4.3.tar.gz    
[root@M1 src]# cd drbd-8.4.3    
[root@M1 ha.d]# ./configure --prefix=/usr/local/drbd --with-km --with-heartbeat    
[root@M1 ha.d]# make KDIR=/usr/src/kernels/补齐/   
[root@M1 ha.d]# make install   
[root@M1 ha.d]# mkdir -p /usr/local/drbd/var/run/drbd    
[root@M1 ha.d]# cp /usr/local/drbd/etc/rc.d/init.d/drbd /etc/init.d/    
[root@M1 ha.d]# chmod +x /etc/init.d/drbd    
[root@M1 ha.d]# modprobe drbd      # 执行命令加载drbd模块到内核   
[root@M1 ha.d]# lsmod|grep drbd     # 检查drbd是否被正确的加载到内核   
drbd 310236 3    libcrc32c 1246 1 drbd 

通过yum安装DRBD(推荐):(dbm135,dbm134)1234   
 [root@scj ~]# cd /usr/local/src/
 [root@scj src]# wget 
 [root@scj src]# rpm -ivh elrepo-release-6-6.el6.elrepo.noarch.rpm
 [root@scj src]# yum -y install  kmod-drbd84      #时间可能会比较长 
[root@scj ~]# modprobe drbd       #加载drbd模块FATAL: Module drbd not found.    
    解决加载drbd模块失败:
        因为在执行yum -y install drbd83-utils kmod-drbd83时,
        对内核kernel进行了update,要重新启动服务器,更新后的内核才会生效

3、配置DRBD

有关DRBD涉及到的配置文件主要是global_common.conf和用户自定义的资源文件(当然,该资源文件可以写到global_common.conf中)。

注意:M1和M2这两个主备节点的以下配置文件完全一样

global {   
        usage-count no;    
}    
common {    
        protocol C;    
        disk {    
                no-disk-flushes;    
                no-md-flushes;    
        }    
        net {    
                sndbuf-size 512k;   
                max-buffers 8000;   
                unplug-watermark 1024;   
                max-epoch-size 8000;   
                after-sb-0pri disconnect;   
                after-sb-1pri disconnect;   
                after-sb-2pri disconnect;   
                rr-conflict disconnect;   
        }    
        syncer {    
                al-extents 517;   
        }   
}
vi /usr/local/drbd/etc/drbd.d/drbd.res
resource drbd {            
        on fuzai01 {                 
                device /dev/drbd0;            
                disk disk /dev/sdb1;
                address 172.16.100.2:7789; 
                meta-disk internal; 
        }    
        on fuzai02 {    
                device /dev/drbd0;    
                disk disk /dev/sdb1;
                address 172.16.100.3:7789;    
                meta-disk internal;    
        }    
}


4、初始化meta分区

[root@M1 drbd]# drbdadm create-md drbd    
Writing meta data...    initializing activity log    
NOT initializing bitmap    
New drbd meta data block successfully created.

5、启动drbd服务

此处,我们可以看下M1 和M2 启动drbd服务前后,drbd设备发生的变化

M1端:

[root@M1 drbd]# cat /proc/drbd       # 启动前 drbd 设备信息   
version: 8.4.3 (api:1/proto:86-101)    
GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by root@M1.redhat.sx, 
2014-11-11 16:20:26    
[root@M1 drbd]# drbdadm up all      # 启动drbd,这里也可以使用脚本去启动   
[root@M1 drbd]# cat /proc/drbd        # 启动后 drbd 设备信息   
version: 8.4.3 (api:1/proto:86-101)    GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 
build by root@M1.redhat.sx, 2014-11-11 16:20:26    0: cs:Connected ro:Secondary/Secondary 
ds:Inconsistent/Inconsistent C r-----    ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0
 ep:1 wo:d oos:133615596

M2端:

[root@M2 ~]# cat /proc/drbd

M1端:

[root@M1 drbd]# drbdadm -- --overwrite-data-of-peer primary drbd    
[root@M1 drbd]# cat /proc/drbd    version: 8.4.3 (api:1/proto:86-101)    
GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by root@M1.redhat.sx, 
2014-11-11 16:20:26    0: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C 
r---n-    ns:140132 nr:0 dw:0 dr:144024 al:0 bm:8 lo:0 pe:17 ua:26 ap:0 
ep:1 wo:d oos:133477612    [>....................] sync‘ed: 0.2% (130348/130480)M  
  finish: 0:16:07 speed: 137,984 (137,984) K/sec

M2端:

[root@M2 ~]# cat /proc/drbd

M1端:

[root@M1 ~]# cat /proc/drbd
[root@M1 drbd]# mkfs.ext4 /dev/drbd0

M1端:

[root@M1 drbd]# dd if=/dev/zero of=/data/test bs=1G count=1   
 1+0 records in   1+0 records out    
 1073741824 bytes (1.1 GB) copied, 1.26333 s, 850 MB/s   
 [root@M1 drbd]# cat /proc/drbd    
 [root@M1 drbd]# umount /data/   
 [root@M1 drbd]# drbdadm down drbd    # 关闭名字为drbd的资源

M2端:

[root@M2 ~]# cat /proc/drbd    # 主节点关闭资源之后,查看备节点的信息,
可以看到主节点的角色已经变为UnKnown

五、NFS安装部署

该操作依旧仅以NFS1为例,2操作亦如此。

1、安装nfs

[root@M1 drbd]# yum install nfs-utils rpcbind -y   
[root@M2 ~]# yum install nfs-utils rpcbind -y

2、配置 nfs 共享目录

[root@M1 drbd]# cat /etc/exports    
/data 192.168.1.0/24(rw,sync,no_root_squash,anonuid=0,anongid=0)   
[root@M2 ~]# cat /etc/exports    
/data 192.168.1.0/24(rw,sync,no_root_squash,anonuid=0,anongid=0)

3、启动 rpcbind 和 nfs 服务

[root@M1 drbd]# /etc/init.d/rpcbind start;chkconfig rpcbind off    
[root@M1 drbd]# /etc/init.d/nfs start;chkconfig nfs off       
[root@M2 drbd]# /etc/init.d/nfs start;chkconfig nfs off

4、测试 nfs

[root@C1 ~] # mount -t nfs -o noatime,nodiratime 192.168.1.160:/data /xxxxx/    
[root@C1 ~] # df -h|grep data    
lost+found test   
[root@C1 data] # echo ‘nolinux‘ >> nihao   
[root@C1 data] # ls    
lost+found nihao test  
[root@C1 data] # cat nihao    
nolinux

六、整合Heartbeat、DRBD和NFS服务

未成功

DRBD+HEARTBEAT+NFS高可用架构笔记

标签:hearbeat drbd nfs

原文地址:http://024mj.blog.51cto.com/10252785/1670234

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!