五、Heartbeat的配置过程

真实的服务器之间的连接用交叉线连接,本着简单高效的原则,直接购买即可。

1. 安装, 在两台主机都同样的安装.

 

 
  
  1. yum -y install heartbeat  
  2. #奇怪的事,此命令要执行二次,不然heartbeat还真安装不上去,奇怪的问题。  
  3. 其中Heartbeat配置共涉及3个文件.  
  4. /etc/ha.d/ha.cf  
  5. /etc/ha.d/haresources  
  6. /etc/ha.d/authkeys  
  7. /etc/ha.d/resource.d/killnfsd 

 

2. 二个节的配置的配置文件都是一样, 文件内容如下

 

 
  
  1. logfile         /var/log/ha-log  
  2. #定义HA的日志名字及存放位置  
  3. logfacility     local0  
  4. keepalive       2  
  5. #设定心跳(监测)时间为2秒  
  6. deadtime        5  
  7. #死亡时间定义为5秒  
  8. ucast           eth1 10.0.0.2  
  9. #采用单播方式,IP地址指定为对方IP  
  10. auto_failback   off  
  11. #服务器正常后由主服务器接管资源,另一台服务器放弃该资源  
  12. node            centos1.7788.com  centos2.7788.com  
  13. #定义节点 

 

2. 编辑双机互联验证文件: authkeys

 

 
  
  1. [root@centos1 ha.d]# vim /etc/ha.d/authkeys  
  2. auth 1  
  3. 1 crc  
  4. //需要将 /etc/ha.d/authkeys设为600的权限.  
  5. [root@centos1 ha.d]# chmod 600 /etc/ha.d/authkeys  
  6. [root@centos2 ha.d]# chmod 600 /etc/ha.d/authkeys 

 

3. 编辑集群资源文件: haresources

 

 
  
  1. [root@centos1 ha.d]# vim /etc/ha.d/haresources  
  2. centos1.7788.com IPaddr::192.168.4.194/24/eth0 drbddisk::r0 Filesystem::/dev/drbd0::/d::ext3 killnfsd  
  3. #此文件二台机器上配置一样,千万不要自做聪明在另一台机器上配置成centos2.7788.com 

 

4.编辑脚本文件killnfsd,目的其实就是为了重启nfs服务。这是因为NFS服务切换后,必须重新mount一下nfs共享出来的目录,否则会出现stale NFS file handle的错误。

 

 
  
  1. #[root@centos1 ha.d]# vim /etc/ha.d/resource.d/killnfsd  
  2. #killall -9 nfsd; /etc/init.d/nfs restart; exit 0  
  3. #[root@centos1 ha.d]# chmod 755 /etc/ha.d/resource.d/killnfsd 

 

5. 在二个节点启动Heartbeat即可,先在主节点启动

 
  
  1. [root@centos1 /]# service heartbeat start  
  2. [root@centos2 /]# service heartbeat start  
  3. #这时就可以在另外的机器上面,正常挂载192.168.4.194:/d到自己的/mnt/data下进行正常的读写了,client会认为这个就是一个提供NFS的机器。 

 

 

六、测试

由于我的线上环境已经很稳定了,这个测试结果是让大家进行的,让大家熟悉DRBD+Heartbeat;我建议做完此步后再做测试,看Heartbeat是否能做到真正的热切换。

测试一、在另一台FreeBSD8下挂载192.168.4.194:/d,向里面写数据时,忽然重新启动主DRBD,看此时写数据有影响不,发现DRBD+Heartbeat正常切换还是需要些时间的;

测试二、正常状态下关机Primary机,然后看数据有无问题,观察DRBD的status;然后等主机启动后,再观察变化,然后再关机secondary,然后再启动,观察DRBD变化及Heartbeat起作用了没。

测试三、假设此时把primary的eth0 给ifdown了, 然后直接在secondary上进行主的提升,并也给mount了, 发现在primary上测试拷入的文件确实同步过来了。之后把primary的 eth0 恢复后, 发现没有自动恢复主从关系, 经过支持查询,发现出现了drbd检测出现了Split-Brain 的状况, 两个节点各自都standalone了,故障描术如下:Split-Brain detected, dropping connection!这个即时传说中的脑裂了,DRBD官方推荐手动恢复(生产环境下出现这个机率的机会很低的,谁会去故障触动生产中的服务器)

以下手动恢复Split-Brain状况:

i. 在secondary上:

 
  
  1. drbdadm secondary r0  
  2. drbdadm disconnect all  
  3. drbdadmin -- --discard-my-data connect r0 

 

ii.在primary上:

 
  
  1. drbdadm disconnect all  
  2. drbdadm connect r0 

 

测试四、假设Primary因硬件损坏了,需要将Secondary提生成Primay主机,如何处理,方法如下:

在primaty主机上,先要卸载掉DRBD设备.

[root@centos1 /]# umount /d

将主机降级为”备机”

 

 
  
  1. [root@centos1 /]# drbdadm secondary r0  
  2. [root@centos1 /]# cat /proc/drbd  
  3. 1: cs:Connected st:Secondary/Secondary ds:UpToDate/UpToDate C r— 

 

现在,两台主机都是”备机”.

在备机centos2上, 将它升级为”主机”.

 

 
  
  1. [root@centos2 /]# drbdadm primary r0  
  2. [root@centos2 /]# cat /proc/drbd  
  3. 1: cs:Connected st:Primary/Secondary ds:UpToDate/UpToDate C r— 

 

现在centos2成为主机了.

至此,整个实验结束了;建议大家多做测试和总结,几十遍后就会完全掌握其用法,祝大家Happy先了。