本文的实现环境:

      os:ubuntu9.04

      ip1:192.168.1.11 drbd1

      ip2:192.168.1.12 drbd2

      disk:/dev/sdb1(一个8G的分区)

      通过drbd,挂在每台机器上的sdb1这块分区将成为咱们“存储”。let's go !

++++++现在开始两台机器配置一样++++++

      1.设定hosts

      vi /etc/hosts

      192.168.1.11 drbd1

      192.168.1.12 drbd2

      注意:比如在1.11这台机器上。drbd1是你执行hostname命令看到的,而不是随手一写的哟:)

      2.安装并配置drbd

      1).安装drbd。

      你可以去http://oss.linbit.com/drbd/下载最新的版本。本文为了方便直接从ubuntu的源进行安装

      apt-get install drbd8-utils

      2).创建配置文件

      如果用apt-get或者yum的方式安装的话,会默认创建配置文件,而编译安装则不会。不管直接清空或改名,写入以下内容。

      vi /etc/drbd.conf

      common {

          syncer { rate 10M; }           #速率

      }

      resource r0 {

          protocol C;

          disk { on-io-error detach; }

          on drbd1 {                     #drbd1为第一台机器的机器名

              device /dev/drbd0;         #创建的虚拟资源

              disk /dev/sdb1;            #实际的物理分区,一定要注意,是一个单独的分区,而且是未经格式化的

              address 192.168.1.11:7788; #第一台机器的ip地址,及通讯端口

              meta-disk internal;        #类型,局域网

          }  

          on drbd2 {

              device /dev/drbd0;

              disk /dev/sdb1;

              address 192.168.1.12:7788;

              meta-disk internal;

          }  

      }

      3)创建资源

      drbdadm create-md r0 #r0为刚才配置文件里的资源名

      会提示三个疑问,如果你英文还可以的话,可以阅读一下,不然的话,直接回车。在终点你会看到

      success

      :)

      4)启动drbd服务

      /etc/init.d/drbd start

      cat /proc/drbd

      你应该可以看到

heartbeat+drdb实现磁盘同步双击热备_双机热备

      注意里面我标注的"Secondary/Secondary"意思是说现在这块盘是从盘,主盘不知道。

      ++++++现在开始只在drbd1上操作++++++

      5)初始化网络硬盘

      drbdsetup /dev/drbd0 primary -o

      cat /proc/drbd

heartbeat+drdb实现磁盘同步双击热备_休闲_02

      你会发现现在已经是"Primary/Secondary"了,而且已经开始同步硬盘状态。

      为了实时的查看同步情况,你可以在drbd1上执行

      watch -n1 cat /proc/drbd

heartbeat+drdb实现磁盘同步双击热备_双机热备_03

      同步还在进行

heartbeat+drdb实现磁盘同步双击热备_双机热备_04

      经过一段时间的等待,你会发现成功完成!

heartbeat+drdb实现磁盘同步双击热备_heartbeat_05

      同步完成以后,在drbd2上查看硬盘状态

heartbeat+drdb实现磁盘同步双击热备_heartbeat_06

      注意磁盘状态是:"Secondary/Primary"

      格式化网络磁盘

heartbeat+drdb实现磁盘同步双击热备_drdb_07

      6)设置drbd开机启动

      在两台机器上都执行

      chkconfig drbd on

      7)手工测试drbd是不是正常工作

      在drbd1上建立3个文件

heartbeat+drdb实现磁盘同步双击热备_磁盘_08

      在drbd2上验证结果

heartbeat+drdb实现磁盘同步双击热备_heartbeat_09

      ok,我们现在已经确定drbd是正常工作的了。也相信在这么细致的介绍下,你已经熟悉了它是怎么工作了。我们现在有了“网络存储”了。下一步就是让一个东东帮我们调度资源了。简单的几步配置有请heartbeat出场

      3.配置heartbeat

      1)安装heartbeat

      apt-get install heartbeat

      2)配置heartbeat

      vi /etc/heartbeat/ha.cf

      logfacility     local0

      keepalive 2

      deadtime 10

      auto_failback off

      bcast   eth0

      node drbd1 drbd2

      vi /etc/heartbeat/haresources

      drbd1 drbddisk::r0 Filesystem::/dev/drbd0::/mnt::ext3

      vi authkeys

      auth 3

      3 md5 abc

      chmod 600 authkeys

      3)相同的配置复制到drbd2

      scp authkeys haresources ha.cf root@192.168.1.12:/etc/heartbeat/

heartbeat+drdb实现磁盘同步双击热备_双机热备_10

      4)确保服务都是正常运行的

      /etc/init.d/drbd start

      /etc/init.d/heartbeat start

      5)切换测试

      通过cat /proc/drbd查看drbd的状态或者mount查看/mnt是不是已经挂载确定资源所在的机器。然后在那台机器的/mnt新建立一些文件并停掉那台机器上的heartbeat。看另一台机器上/mnt是不是被自动挂载了呢?里面是不是有刚创建的文件?good luck!

      总结:基本两台linux实现的双机热备到此就要结束了。回顾一下环境:两台机器;两块独立的分区,最好是一样大,只分区,而没有格式化;linux操作系统;drbd网络磁盘;heartbeat实现资源调度;好像就这么多东西吧。可能您要说了,看完这篇文章,一点实际意义都没有,因为只是实现了共享磁盘。哈哈,我要说,要想发挥威力就要仔细的看一下heartbeat的资源调度了,有了这位大管家,还有啥实现不了的服务呢?