DRBD项目实施之NFS高可用架构NFS+Heartbeat+Drbd.docx
- 文档编号:4343136
- 上传时间:2022-11-30
- 格式:DOCX
- 页数:34
- 大小:63.37KB
DRBD项目实施之NFS高可用架构NFS+Heartbeat+Drbd.docx
《DRBD项目实施之NFS高可用架构NFS+Heartbeat+Drbd.docx》由会员分享,可在线阅读,更多相关《DRBD项目实施之NFS高可用架构NFS+Heartbeat+Drbd.docx(34页珍藏版)》请在冰豆网上搜索。
DRBD项目实施之NFS高可用架构NFS+Heartbeat+Drbd
由于目前线上的两台NFS服务器,一台为主,一台为备。
主到备的数据同步,靠rsync来做。
由于数据偏重于图片业务,并且还是千万级的碎图片。
在目前的业务框架下,NFS服务是存在单点的,并且数据的同步也不能做完全实时性,从而导致不能确保一致性。
因此,出于对业务在线率和数据安全的保障,目前需要一套新的架构来解决NFS服务单点和数据实时同步的问题。
然后,就没有然后了。
下面是一个丑到爆的新方案架构图,已经在公司测试环境的部署,并且进行了不完全充分的测试。
架构拓扑:
简单描述:
两台NFS服务器,通过em1网卡与内网的其他业务服务器进行通信,em2网卡主要负责两台NFS服务器之间心跳通信,em3网卡主要负责drbd数据同步的传输。
前面的2台图片服务器通过NFS集群提供出来的一个VIP192.168.0.219来使用NFS集群服务。
一、项目基础设施及信息介绍
1、设备信息
1
2
3
4
5
6
7
8
现有的两台 NFS 存储服务器的硬件配置信息:
CPU:
Intel(R) Xeon(R) CPU E5-2609 0 @ 2.40GHz
MEM:
16G
Raid:
RAID 1
Disk:
SSD 200G x 2
网卡:
集成的 4 个千兆网卡 Link is up at 1000 Mbps, full duplex
前端两台静态图片服务器硬件配置信息:
略
2、网络
1
2
3
4
5
6
7
8
9
10
浮动 VIP :
192.168.0.219 # 漂浮在M1和M2上,负责对外提供服务
现有的两台 NFS 存储服务器的网络配置信息:
主机名:
M1.redhat.sx
em1:
192.168.0.210 内网
em2:
172.16.0.210 心跳线
em3:
172.16.100.210 DRBD千兆数据传输
主机名:
M2.redhat.sx
em1:
192.168.0.211 内网
em2:
172.16.0.211 心跳线
em3:
172.16.100.211 DRBD千兆数据传输
3、系统环境
1
2
3
4
5
内核版本:
2.6.32-504.el6.x86_64
系统版本:
CentOS 6.5
系统位数:
x86_64
防火墙规则清空
selinux关闭
4、软件版本
1
2
3
4
heartbeat-3.0.4-2.el6.x86_64
drbd-8.4.3
rpcbind-0.2.0-11.el6.x86_64
nfs-utils-1.2.3-54.el6.x86_64
二、基础服务配置
这里仅以M1服务的配置为例,M2服务器配置与此相同。
1、配置时间同步
M1端:
1
2
[root@M1 ~]# ntpdate pool.ntp.org
12 Nov 14:
45:
15 ntpdate[27898]:
adjust time server 42.96.167.209 offset 0.044720 sec
M2端:
1
2
[root@M2 ~]# ntpdate pool.ntp.org
12 Nov 14:
45:
06 ntpdate[24447]:
adjust time server 42.96.167.209 offset 0.063174 sec
2、配置/etc/hosts文件
M1端:
1
2
3
4
5
[root@M1 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
:
:
1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.0.210 M1.redhat.sx
192.168.0.211 M2.redhat.sx
M2端:
1
2
3
4
5
[root@M2 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
:
:
1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.0.210 M1.redhat.sx
192.168.0.211 M2.redhat.sx
3、增加主机间路由
首先先验证M1和M2的服务器IP是否合乎规划
M1端:
1
2
3
4
5
6
7
8
9
[root@M1 ~]# ifconfig|egrep 'Link encap|inet addr' # 验证现有 IP 信息
em1 Link encap:
Ethernet HWaddr B8:
CA:
3A:
F1:
00:
2F
inet addr:
192.168.0.210 Bcast:
192.168.0.255 Mask:
255.255.255.0
em2 Link encap:
Ethernet HWaddr B8:
CA:
3A:
F1:
00:
30
inet addr:
172.16.0.210 Bcast:
172.16.0.255 Mask:
255.255.255.0
em3 Link encap:
Ethernet HWaddr B8:
CA:
3A:
F1:
00:
31
inet addr:
172.16.100.210 Bcast:
172.16.100.255 Mask:
255.255.255.0
lo Link encap:
Local Loopback
inet addr:
127.0.0.1 Mask:
255.0.0.0
M2端:
1
2
3
4
5
6
7
8
9
[root@M2 ~]# ifconfig|egrep 'Link encap|inet addr'
em1 Link encap:
Ethernet HWaddr B8:
CA:
3A:
F1:
DE:
37
inet addr:
192.168.0.211 Bcast:
192.168.0.255 Mask:
255.255.255.0
em2 Link encap:
Ethernet HWaddr B8:
CA:
3A:
F1:
DE:
38
inet addr:
172.16.0.211 Bcast:
172.16.0.255 Mask:
255.255.255.0
em3 Link encap:
Ethernet HWaddr B8:
CA:
3A:
F1:
DE:
39
inet addr:
172.16.100.211 Bcast:
172.16.100.255 Mask:
255.255.255.0
lo Link encap:
Local Loopback
inet addr:
127.0.0.1 Mask:
255.0.0.0
查看现有路由,然后增加相应的心跳线和drbd数据传输线路的端到端的静态路由条目。
目的是为了让心跳检测和数据同步不受干扰。
M1端:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
[root@M1 network-scripts]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
172.16.100.0 0.0.0.0 255.255.255.0 U 0 0 0 em3
172.16.0.0 0.0.0.0 255.255.255.0 U 0 0 0 em2
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 em1
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 em1
169.254.0.0 0.0.0.0 255.255.0.0 U 1003 0 0 em2
169.254.0.0 0.0.0.0 255.255.0.0 U 1004 0 0 em3
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 em1
[root@M1 network-scripts]# /sbin/route add -host 172.16.0.211 dev em2
[root@M1 network-scripts]# /sbin/route add -host 172.16.100.211 dev em3
[root@M1 network-scripts]# echo '/sbin/route add -host 172.16.0.211 dev em2' >> /etc/rc.local
[root@M1 network-scripts]# echo '/sbin/route add -host 172.16.100.211 dev em3' >> /etc/rc.local
[root@M1 network-scripts]# tail -2 /etc/rc.local
/sbin/route add -host 172.16.0.211 dev em1
/sbin/route add -host 172.16.100.211 dev em1
[root@M1 network-scripts]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
172.16.0.211 0.0.0.0 255.255.255.255 UH 0 0 0 em2
172.16.100.211 0.0.0.0 255.255.255.255 UH 0 0 0 em3
172.16.100.0 0.0.0.0 255.255.255.0 U 0 0 0 em3
172.16.0.0 0.0.0.0 255.255.255.0 U 0 0 0 em2
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 em1
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 em1
169.254.0.0 0.0.0.0 255.255.0.0 U 1003 0 0 em2
169.254.0.0 0.0.0.0 255.255.0.0 U 1004 0 0 em3
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 em1
[root@M1 network-scripts]# traceroute 172.16.0.211
traceroute to 172.16.0.211 (172.16.0.211), 30 hops max, 60 byte packets
1 172.16.0.211 (172.16.0.211) 0.820 ms 0.846 ms 0.928 ms
[root@M1 network-scripts]# traceroute 172.16.100.211
traceroute to 172.16.100.211 (172.16.100.211), 30 hops max, 60 byte packets
1 172.16.100.211 (172.16.100.211) 0.291 ms 0.273 ms 0.257 ms
M2端:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
[root@M2 network-scripts]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
172.16.100.0 0.0.0.0 255.255.255.0 U 0 0 0 em3
172.16.0.0 0.0.0.0 255.255.255.0 U 0 0 0 em2
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 em1
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 em1
169.254.0.0 0.0.0.0 255.255.0.0 U 1003 0 0 em2
169.254.0.0 0.0.0.0 255.255.0.0 U 1004 0 0 em3
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 em1
[root@M2 network-scripts]# /sbin/route add -host 172.16.0.210 dev em2
[root@M2 network-scripts]# /sbin/route add -host 172.16.100.210 dev em3
[root@M2 network-scripts]# echo '/sbin/route add -host 172.16.0.210 dev em2' >> /etc/rc.local
[root@M2 network-scripts]# echo '/sbin/route add -host 172.16.100.210 dev em3' >> /etc/rc.local
[root@M2 network-scripts]# tail -2 /etc/rc.local
/sbin/route add -host 172.16.0.210 dev em1
/sbin/route add -host 172.16.100.210 dev em1
[root@M2 network-scripts]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
172.16.0.210 0.0.0.0 255.255.255.255 UH 0 0 0 em2
172.16.100.210 0.0.0.0 255.255.255.255 UH 0 0 0 em3
172.16.100.0 0.0.0.0 255.255.255.0 U 0 0 0 em3
172.16.0.0 0.0.0.0 255.255.255.0 U 0 0 0 em2
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 em1
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 em1
169.254.0.0 0.0.0.0 255.255.0.0 U 1003 0 0 em2
169.254.0.0 0.0.0.0 255.255.0.0 U 1004 0 0 em3
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 em1
[root@M2 network-scripts]# traceroute 172.16.0.210
traceroute to 172.16.0.210 (172.16.0.210), 30 hops max, 60 byte packets
1 172.16.0.210 (172.16.0.210) 0.816 ms 0.843 ms 0.922 ms
[root@M2 network-scripts]# traceroute 172.16.100.210
traceroute to 172.16.100.210 (172.16.100.210), 30 hops max, 60 byte packets
1 172.16.100.210 (172.16.100.210) 0.256 ms 0.232 ms 0.215 ms
三、部署heartbeat服务
此处仅演示M1服务端的安装,M2的不做复述。
1、安装heartbeat软件
1
2
3
4
5
6
[root@M1 ~]# cd /etc/yum.repos.d/
[root@M1 yum.repos.d]# wget
[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服务
1
2
3
4
5
6
7
8
9
[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'
-rw-r--r--. 1 root root 645 Dec 3 2013 authkeys # heartbeat服务的认证文件
-rw-r--r--. 1 root root 10502 Dec 3 2013 ha.cf # heartbeat服务主配置文件
-rw-r--r--. 1 root root 5905 Dec 3 2013 haresources # heartbeat资源文件
[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这三个文件,下面我列出这三个文件的配置信息,大家仅作参考!
a、ha.cf文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@M1 ~]# cat /etc/ha.d/ha.cf
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility local0
keepalive 2
deadtime 10
warntime 6
#initdead 120
udpport 694
#bcast em2
mcast em2 225.0.0.192 694 1 0
auto_failback on
respawn hacluster /usr/lib64/heartbeat/ipfail
node M1.redhat.sx
node M2.redhat.sx
ping 192.168.0.1
b、authkeys 文件
1
2
3
4
5
6
[root@M1 ha.d]# cat authkeys
auth 1 # 采用何种加密方式
1 crc # 无加密
#2 sha1 HI!
# 启用sha1的加密方式
#3 md5 Hello!
# 采用md5的加密方式
[root@M1 ha.d]# chmod 600 authkeys # 该文件必须设置为600权限,不然heartbeat启动会报错
c、haresources 文件
1
2
3
[root@M1 ha.d]# cat haresources
M1.redhat.sx IPaddr:
:
192.168.0.219/24/em1
#NFS IPaddr:
:
192.168.0.219/24/em1 drbddisk:
:
data Filesystem:
:
/dev/drbd0:
:
/data:
:
ext4 rpcbind nfsd
注意:
这个里的nfsd并不是heartbeat自带的,需要自己编写。
针对该脚本的编写需要满足一下需求:
1、有可执行权限
2、必须存放在/etc/ha.d/resource.d或/etc/init.d目录下
3、必须有start、stop这两个功能
具体脚本信息,下文会写。
4、启动heartbeat
1
2
3
4
[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
说明:
关闭开机自启动。
当服务重启时,需要人工去
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DRBD 项目 实施 NFS 可用 架构 Heartbeat