这篇文章其实是对《构建高可用Linux服务器(第二版)》中第五章中“生产下的高可用NFS文件服务器”一节的补充,其实像drbd和heartbeat这些软件都是可以通过yum来自动安装的,例如安装drbd的命令如下:

  1. yum -y install drbd83 kmod-drbd83 

DRBD的配置文件/etc/drbd.conf如下所示:

  1. global { 
  2. # minor-count dialog-refresh disable-ip-verification 
  3. usage-count no;         #统计drbd的使用 
  4. common { 
  5. syncer  { rate 100M; }  #同步速率,视带宽而定 
  6. resource r0 {           #创建一个资源,名字叫”r0” 
  7. protocol C;             #选择的是drbd的C 协议(数据同步协议,C为收到数据并写入后返回,确认成功) 
  8. handlers {              #默认drbd的库文件 
  9. pri-on-incon-degr "/usr/lib/drbd/notify-pri-on-incon-degr.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f"; 
  10. pri-lost-after-sb "/usr/lib/drbd/notify-pri-lost-after-sb.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f"; 
  11. local-io-error "/usr/lib/drbd/notify-io-error.sh; /usr/lib/drbd/notify-emergency-shutdown.sh; echo o > /proc/sysrq-trigger ; halt -f"; 
  12. # fence-peer "/usr/lib/drbd/crm-fence-peer.sh"; 
  13. # split-brain "/usr/lib/drbd/notify-split-brain.sh root"; 
  14. # out-of-sync "/usr/lib/drbd/notify-out-of-sync.sh root"; 
  15. # before-resync-target "/usr/lib/drbd/snapshot-resync-target-lvm.sh -p 15 -- -c 16k"; 
  16. # after-resync-target /usr/lib/drbd/unsnapshot-resync-target-lvm.sh; 
  17. startup { 
  18. # wfc-timeout degr-wfc-timeout outdated-wfc-timeout wait-after-sb 
  19. wfc-timeout 120; 
  20. degr-wfc-timeout 120;      
  21. disk { 
  22. # on-io-error fencing use-bmbv no-disk-barrier no-disk-flushes 
  23. # no-disk-drain no-md-flushes max-bio-bvecs 
  24. on-io-error detach; 
  25. net { 
  26. # sndbuf-size rcvbuf-size timeout connect-int ping-int ping-timeout max-buffers 
  27. # max-epoch-size ko-count allow-two-primaries cram-hmac-alg shared-secret 
  28. # after-sb-0pri after-sb-1pri after-sb-2pri data-integrity-alg no-tcp-cork 
  29. max-buffers 2048; 
  30. cram-hmac-alg "sha1"; 
  31. shared-secret "123456"; 
  32. #allow-two-primaries; 
  33. syncer { 
  34. rate 100M; 
  35. # rate after al-extents use-rle cpu-mask verify-alg csums-alg 
  36. on centos1.cn7788.com { #设定一个节点,分别以各自的主机名命名 
  37. device  /dev/drbd0; #设定资源设备/dev/drbd0 指向实际的物理分区 /dev/sdb1 
  38. disk    /dev/sdb; 
  39. address 192.168.11.32:7788;      #设定监听地址以及端口 
  40. meta-disk       internal; 
  41. on centos2.cn7788.com {         #设定一个节点,分别以各自的主机名命名 
  42. device  /dev/drbd0; #设定资源设备/dev/drbd0 指向实际的物理分区 /dev/sdb1 
  43. disk    /dev/sdb; 
  44. address 192.168.11.33:7788;       #设定监听地址以及端口 
  45. meta-disk       internal; 
Heartbeat的配置文件如下: 
  1. logfile /var/log/ha-log 
  2. logfacility local0 
  3. keepalive 2 
  4. deadtime 5 
  5. ucast eth0 192.168.11.32
  6. ucast eth1 10.0.0.2 
  7. auto_failback off 
  8. node centos1.cn7788.com centos2.cn7788.com 
 
补充说明的几点是:
一、许多朋友喜欢用独立分区的方式来部署DRBD,这个也是可行的,我们在安装系统时只需要保留Free空间即可,在部署DRBD时再进行fdisk,这个是不需要写进/etc/fstab表的,即不需要在安装系统时就挂载;
二、Secondary主机用来做DRBD的硬盘或分区可以跟Primar主机的不一样大小,但请不要小于Primary主机;
三、DRBD对网络环境要求很高,建议用单独的双绞线来作为二台主机之间的心跳线,如果条件允许,可以考虑用二根以上的心跳线;如果这个环节做得好,基本上可以解脑裂问题;
四、安装Heartbeat时需要安装二遍,即yum -y install heartbeat要执行二次;
五、DRBD+Heartbeat+NFS的实验在测试时发现也很威猛,我经常在做写入测试时忽然关掉primary机器,写数据丝毫不影响,用户完全感觉不到有机器挂掉了;
六、就算发生脑裂的问题,DRBD也不会丢失数据的,手动切换就是。

本文出自 “抚琴煮酒” 博客,请务必保留此出处http://andrewyu.blog.51cto.com/1604432/976135