两台linux完美实现双机热备

      一直想作基于linux的双机热备,一直没有时间和机会。一直觉得只要作双机热备的实验就必须两台机器外接一个存储。甚至一个月之前在学习keepalived的时候还在琢磨keepalvied去掉哪些条件能够实现双机热备。直到一个月之前设计存储方案的时候部门老大给了一个国外的连接介绍drbd+nfs实现nfs的热备方案的时候,个人眼前一亮,这不就是我一直想作的不依靠存储实现热备的解决方案吗?
      先来纠正一下本身的错误认识吧,没接触keepalived和heartbeat的时候,道听途说的认为keepalived出现之后就没有必要再用heartbeat了。在仔细学习了这两个传奇人物之后发现:keepavled是专门为高可用的集群而诞生的,而heartbeat生是双机热备的人死是双机热备的死人。
      好了,说说本文实现的原理吧。大致来讲就是heartbeat+drbd。heartbeat自是不用说,用它来实现资源的统一调度;而drbd就是本文的重头戏。这一个什么东东呢?官方的东东咱就不说了。用我们本身的话说,就是实现两台机器的两块硬盘的实时完整复制(drbd即磁盘镜像)。它的出现,解决了两台机器作双机时的数据一致性问题。
      ok,废话半天,说一下本文的实现环境:
      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
      你应该能够看到
      注意里面我标注的"Secondary/Secondary"意思是说如今这块盘是从盘,主盘不知道。

      ++++++如今开始只在drbd1上操做++++++
      5)初始化网络硬盘
      drbdsetup /dev/drbd0 primary -o
      cat /proc/drbd
      
      你会发现如今已是"Primary/Secondary"了,并且已经开始同步硬盘状态。
      为了实时的查看同步状况,你能够在drbd1上执行
      watch -n1 cat /proc/drbd
      同步还在进行
      通过一段时间的等待,你会发现成功完成!
      同步完成之后,在drbd2上查看硬盘状态
      注意磁盘状态是:"Secondary/Primary"
      格式化网络磁盘
      6)设置drbd开机启动
      在两台机器上都执行
      chkconfig drbd on
      7)手工测试drbd是否是正常工做
      在drbd1上创建3个文件
      在drbd2上验证结果
      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/
      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的资源调度了,有了这位大管家,还有啥实现不了的服务呢?
相关文章
相关标签/搜索