【来源:http://rainbird.blog.51cto.com/211214/225541/】

      一直想做基于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的资源调度了,有了这位大管家,还有啥实现不了的服务呢?

两台linux完美实现双机热备【来源网络尚未实践】的更多相关文章

  1. 两台linux利用heartbeat+drbd 完美实现双机热备

    一直想做基于linux的双机热备,一直没有时间和机会.一直以为只要做双机热备的实验就必须两台机器外接一个存储.甚至一个月以前在学习keepalived的时候还在琢磨keepalvied去掉哪些条件可以 ...

  2. 基于nginx实现web服务器的双机热备

    1.适用场景 对于部署重要的服务,会使用两台服务器,互相备份,共同执行同一服务.当一台服务器出现故障时,可以由另一台服务器承担服务任务,从而在不需要人工干预的情况下,自动保证系统能持续提供服务.双机热 ...

  3. ArcSDE Redhat Linux下双机热备部署文档

    http://www.gisall.com/html/47/122747-3867.html ArcSDE系统环境: 操作系统:Red Hat Enterprise Linux AS/ES 5.5 ( ...

  4. EMC存储同时分配空间到两台LINUX服务器路径不一致导致双机盘符大小不一致

    操作系统:Centos linux6.6 当我们从EMC存储上划分空间同时分配给两台或者多台服务器上时,有的时候会出现在服务器上所生成的磁盘路径是不一致的,这样就会导致盘符名称不一致或者是盘符对应的大 ...

  5. CentOS系统MySQL双机热备配置

    1  概述 在集成项目中需要应对不同环境下的安装配置,主流操作系统大致可以分为三种:Linux.Windows以及UNIX.其中Linux备受青睐的主要原因有两个: 首先,Linux作为自由软件有两个 ...

  6. Keepalived双机热备

    一,Keepalived双机热备的应用场景 1,网站流量不高,压力不大,但是对服务器的可靠性要求极其高,例如实时在线OA系统,政府部门网站系统,医院实时报医系统,公安局在线报案系统,股市后台网站系统等 ...

  7. keepalived+LVS 实现双机热备、负载均衡、失效转移 高性能 高可用 高伸缩性 服务器集群

    本章笔者亲自动手,使用LVS技术实现实现一个可以支持庞大访问量.高可用性.高伸缩性的服务器集群 在读本章之前,可能有不少读者尚未使用该技术,或者部分读者使用Nginx实现应用层的负载均衡.这里大家都可 ...

  8. HA(High available)--Heartbeat高可用性集群(双机热备)菜鸟入门级

    HA(High available)--Heartbeat高可用性集群(双机热备)   1.理解:两台服务器A和B ,当A提供服务,B闲置待命,当A服务宕机,会自动切换至B机器继续提供服务.当主机恢复 ...

  9. 使用sqlserver搭建高可用双机热备的Quartz集群部署【附源码】

    一般拿Timer和Quartz相比较的,简直就是对Quartz的侮辱,两者的功能根本就不在一个层级上,如本篇介绍的Quartz强大的序列化机制,可以序列到 sqlserver,mysql,当然还可以在 ...

随机推荐

  1. 一次http请求,谁会先断开TCP连接?什么情况下客户端先断,什么情况下服务端先断?

    我们有2台内部http服务(nginx): 201:这台服务器部署的服务是account.api.91160.com,这个服务是供前端页面调用: 202:这台服务器部署的服务是hdbs.api.911 ...

  2. java高级特性(4)--枚举

    枚举(enum),是指一个经过排序的.被打包成一个单一实体的项列表.一个枚举的实例可以使用枚举项列表中任意单一项的值.枚举在各个语言当中都有着广泛的应用,通常用来表示诸如颜色.方式.类别.状态等等数目 ...

  3. QT 样式表实例

    目标:实现button的圆角效果及背景颜色,鼠标滑过颜色变亮,鼠标点击颜色变重. 总体思路首,先根据需要及样式规则新建.qss文件,然后在代码中将文件引用并应用样式. 具体过程如下: 1在项目当前目录 ...

  4. Kettle 数据抽取

    1.创建数据库连接 2.建立转换 3.指定源数据库和目标数据库的字段映射 一定要在「输出」中勾选「指定字段」,然后点按钮「Get All fields」,再「Enter mapping」,在弹出窗口映 ...

  5. ElasticSearch介绍与安装

    什么是ES? 1基于Apache Lucene构建的开源搜索引擎 2采用java编写,提供简单易用的RESTFul API 3轻松的横向扩展,可支持PB级的结构化或非结构化数据处理 ES的应用场景? ...

  6. 12 Essential Bootstrap Tools for Web Designers

    12 Essential Bootstrap Tools for Web Designers Posted by vikas on June 6, 2014, filed in: Tools, Web ...

  7. 二十六 Python分布式爬虫打造搜索引擎Scrapy精讲—通过downloadmiddleware中间件全局随机更换user-agent浏览器用户代理

    downloadmiddleware介绍中间件是一个框架,可以连接到请求/响应处理中.这是一种很轻的.低层次的系统,可以改变Scrapy的请求和回应.也就是在Requests请求和Response响应 ...

  8. nyoj299——如何优雅的写矩阵快速幂

    Matrix Power Series 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 Given a n × n matrix A and a positive i ...

  9. ts结合vue使用的感悟

    TypeScript 前端现在越来越强大,多人开发更是常见,加上各大框架都开始支持TypeScript,而谷歌和微软又更加积极,导致不得不去学习,顺道通过js来了解ts,再通过ts来了解强类型语言.一 ...

  10. opengl:初次接触

    1.概述 OpenGL(Open Graphics Library),开放的图形程序接口,是编程接口的规范,并不是像OpenCV那样是库.GLFW是开源的基于opengl标准的库,并且是跨平台的.其开 ...