参考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.org2、增加主机间路由 (选做)
首先先验证 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服务
未成功
原文地址:http://024mj.blog.51cto.com/10252785/1670234