1、要确保master-db和slave-db的drbd服务和heartbeat服务都已经停止了;

2、heartbeate设置:

修改master-db和slave-db的'/etc/ha.d/haresource'配置文件如下:

master-db IPaddr::172.16.1.26/24/eth1 drbddisk::data Filesystem::/dev/drbd0::/master-db::ext4

#######################################################################

#1、master-db #主机名,表示初始状态会在master-db主机上绑定IP;

#2、IPaddr::172.16.1.26/24/eth1 #表示使用IPaddr脚本创建浮动ip在eth1网卡上,相当于执行

#/etc/ha.d/resource.d/IPaddr 172.16.1.26/24/eth1 start/stop命令;相当于

#ip addr add 172.16.1.26/24 dev eth1 label eth0:0、ifconfig down eth0:0;

#3、drbddisk::data #表示使用drbddisk脚本启动drbd中的data资源,相当于执行

#/etc/ha.d/resource.d/drbddisk data star/stop命令;相当于drbdadm primary/secondary data

#Filesystem::/dev/drbd0::/master-db::ext4 #表示使用Filesystem脚本挂载文件系统为

#ext4的'/dev/drbd0'设备到master-db目录;相当于执行

#/etc/ha.d/resource.d/Filesystem /dev/drbd0 /master-db ext4 start/stop;相当于

#mount/umount -t ext4 /dev/drbd0 /master-db

#4、总结:实质是通过心跳判断后哪端接收(start)资源和哪端放弃(stop)资源然后执行

#/etc/ha.d/resource.d/scripts <传参> start/stop的脚本;

#######################################################################

3、启动master-db上的drbd服务:

[root@master-db ~]#drbdadm up data

4、启动master-db上的heartbeat服务:

[root@master-db ~]#/etc/init.d/heartbeat start

5、启动slave-db上的drbd服务:

[root@slave-db ~]#drbdadm up data

6、启动slave-db上的heartbeat服务:

[root@slave-db ~]#/etc/init.d/heartbeat start

7、查看服务:

(1)master-db

1)查看浮动IP地址:

[root@master-db ~]#ip addr

3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

link/ether 00:0c:29:5c:f0:d0 brd ff:ff:ff:ff:ff:ff

inet 172.16.1.16/24 brd 172.16.1.255 scope global eth1

inet 172.16.1.26/24 brd 172.16.1.255 scope global secondary eth1

inet6 fe80::20c:29ff:fe5c:f0d0/64 scope link

valid_lft forever preferred_lft forever

2)查看磁盘挂载情况:

[root@master-db ~]#df -h

Filesystem Size Used Avail Use% Mounted on

/dev/drbd0 4.5G 9.4M 4.3G 1% /master-db

3)查看drbd的状态信息:

[root@master-db ~]#cat /proc/drbd

version: 8.4.9-1 (api:1/proto:86-101)

GIT-hash: 9976da086367a2476503ef7f6b13d4567327a280 build by mockbuild@Build64R6, 2016-12-13 18:38:15

0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----

ns:4 nr:8 dw:12 dr:685 al:1 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0

(2)slave-db

1)无浮动ip;没有磁盘挂载;

2)查看drbd的状态信息:

[root@slave-db ~]#cat /proc/drbd

version: 8.4.9-1 (api:1/proto:86-101)

GIT-hash: 9976da086367a2476503ef7f6b13d4567327a280 build by mockbuild@Build64R6, 2016-12-13 18:38:15

0: cs:Connected ro:Secondary/Primary ds:UpToDate/UpToDate C r-----

ns:8 nr:4 dw:12 dr:685 al:1 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0

8、停掉master-db的heartbeat服务:

[root@master-db ~]# /etc/init.d/heartbeat stop

Stopping High-Availability services: Done.

(1)master-db

1)无浮动ip;没有磁盘挂载;

2)查看drbd的状态信息:

[root@master-db ~]#cat /proc/drbd

version: 8.4.9-1 (api:1/proto:86-101)

GIT-hash: 9976da086367a2476503ef7f6b13d4567327a280 build by mockbuild@Build64R6, 2016-12-13 18:38:15

0: cs:Connected ro:Secondary/Primary ds:UpToDate/UpToDate C r-----

ns:8 nr:12 dw:20 dr:685 al:1 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0

(2)slave-db

1)查看浮动ip地址:

[root@slave-db ~]#ip addr

3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

link/ether 00:0c:29:4a:99:4c brd ff:ff:ff:ff:ff:ff

inet 172.16.1.17/24 brd 172.16.1.255 scope global eth1

inet 172.16.1.26/24 brd 172.16.1.255 scope global secondary eth1

inet6 fe80::20c:29ff:fe4a:994c/64 scope link

valid_lft forever preferred_lft forever

2)查看磁盘:

[root@slave-db ~]#df -h

Filesystem Size Used Avail Use% Mounted on

/dev/drbd0 4.5G 9.4M 4.3G 1% /master-db

3)查看drbd的状信息:

[root@slave-db ~]#cat /proc/drbd

version: 8.4.9-1 (api:1/proto:86-101)

GIT-hash: 9976da086367a2476503ef7f6b13d4567327a280 build by mockbuild@Build64R6, 2016-12-13 18:38:15

0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----

ns:12 nr:8 dw:20 dr:1386 al:1 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0

9、总结:

(1)到此heartbeat和drbd的整合就完成了,后面可以做heartbeat+drbd+nfs、heartbeat+drbd+mysql的

高可用都能够轻松的实现了;

(2)注意事项:

在实际的生产环境中heartbeat的心跳线和drbd的数据传输线是分开的,这里为了实验方便,心跳线和数据线

用的是同一条直连线,在生产中这么做可能会因为数据堵塞导致heartbeat的心跳异常;

(3)heartbeat、drbd启动和关闭服务的顺序 :

1)启动:

主(drbd-heartbeat)——>从(drbd-heartbeat)

2)关闭:

从(heartbeat-drbd)——>主(heartbeate-drbd)

3)注意:在关闭主的drbd服务时需要使用'umount /dev/drbd0'命令先卸载drbd0设备;

(4)小结:

1)对于高可用的软件都要设置为开机不自启动,启动时由人工启动和切换,为了防止脑裂,最重要的是vip资源;

2)修改参数需要停止服务;

3)heartbeat通过心跳只能控制drbd的挂载、卸载、至主从的作用,没有关闭drbd和开启drbd的功

能,所以drbd属于最底层的服务,需要手动进行开启和关闭;

启动的时候drbd都是角色都是secondary;

4)切换drbd的时候要看角色是primary/secondary或secondary/secondary后,说明数据时安全

的,可切换;

如果是裂脑(secondary/unknow)的状态,不可切换;

5)drbd有自我保护的功能,不会导致数据的不一致性;

drbd使用的C模式同步时如果有一方drbd掉线,就无法写数据,有助于保证了两边数据的一致性,出现裂脑也不会导致数据丢失;

6)启动过程:

启动服务:主(底层服务-上层服务)——>从(底层服务-上层服务)

关闭服务:从(上层服务-底层服务)——>主(上层服务-底层服务)

7)heartbeat服务器级别的,不能够监控服务,如果当相关的服务停止时需要切换时需要写守护进程

脚本监控相关服务,如果相关服务有异常就杀死heartbeat服务,实现切换;