Linux服务器双机热备的Heartbeat+drbd方法

双机热备基本是一个主服务器一个副服务器,双机热备主要看重业务的稳定性而负载均衡一般是WEB大流量并发负载,在平常双机热备中首要解决的是数据一致性问题,所以我们会使用两台服务器加一个存储设备的形式,但这样其实存储设备是一个单点设备。所以这里我们牛人技术将通过使用块级同步机制DRBD进行数据同步,通过Heartbeat进行热备。具体操作如下;

DRBD 复制协议的类型:
协议A: 异步复制。 本地数据写完成功后立即返回,数据放在buffer 中,如果服务器掉电数据可能丢失
协议B: 内存同步(半同步)复制 。 本地数据写成功将数据发送到远程服务器,发送到对端后立即返回。如果双机掉电数据可能丢失。
协议C: 同步复制。 本地和远端数据写成功后确认返回。 如果磁盘同时损坏数据可能丢失。

DRBD 的两种模式:
主备模式: 两台存储服务器。1主1备,主故障备顶替主工作,只有一台提供服务,另一台作为backup
主主模式: 两台存储服务器同时提供服务, 共同分担压力,当一台故障,服务新能会下降,但是服务不会中断。

     首先是本次双机热备的基本环境:
      操作系统:ubuntu9.04
      主服务器:192.168.1.11 drbd1
      备服务器:192.168.1.12 drbd2
      disk:/dev/sdb1(一个8G的分区)
      通过drbd,挂在每台机器上的sdb1这块分区将成为咱们“存储”。DRBD被认为是基于网络的RAID1存储,一种基于软件的,不需要共享的,块复制的存储同步方案。通过Linux内核对快级的设备进行镜像。


双机热备一般来说要求两台服务器的配置一样,特别是操作系统和磁盘分区情况。
      1.设定hosts解析
      vi /etc/hosts
      192.168.1.11 drbd1
      192.168.1.12 drbd2
      注意:比如在1.11这台机器上。drbd1是你执行hostname命令看到的,而不是随手一写的哟:)
      2.安装并配置drbd
     安装DRBD可以通过apt-get或者源代码两种安装方式,这里我们采用在线安装。
      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上验证结果
      我们现在已经确定drbd是正常工作的了。也相信在这么细致的介绍下,你已经熟悉了它是怎么工作了。我们现在有了“网络存储”了。下一步就是让一个东东帮我们调度资源了。简单的几步配置有请heartbeat的配置了


      配置heartbeat
     上面完成磁盘的配置用来处理数据一致性的DRBD服务,下面就是热备的服务了。
      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是不是被自动挂载了呢?里面是不是有刚创建的文件?
 
      总结;
      通过上面两个服务基本两台linux实现的双机热备到此就要结束了。主要是两台机器;两块独立的分区,最好是一样大,只分区,而没有格式化;linux操作系统;drbd网络磁盘;heartbeat实现资源调度;通过这两个服务就能实现不错的两个服务器的双机热备。

本文由作者自行上传发布,文章仅代表作者个人观点。如需转载,务必声明出处和网址,否则保留相关权利。

网友评论 comments

发表评论

电子邮件地址不会被公开。必填项已用 *标注

暂无评论

牛人技术博客 | AboutUS | 湘ICP备13000282号-8 |
Copyright © 2009 - 2019 NRJS Corporation, All Rights Reserved
添加图标到手机桌面
扫二维码
扫二维码
返回顶部