1、DRBD安装

1.1、安装依赖包:

  1. yum -y install gcc kernel-devel kernel-headers flex

下载安装drbd源码包:

  1. wget http://oss.linbit.com/drbd/8.4/drbd-8.4.1.tar.gz
  2. tar xzf drbd-8.4.1.tar.gz
  3. cd drbd-8.4.1
  4. ./configure --prefix=/usr/local/drbd --with-km
  5. make KDIR=/usr/src/kernels/2.6.32-220.17.1.el6.x86_64/
  6. make install
  7. mkdir -p /usr/local/drbd/var/run/drbd
  8. cp /usr/local/drbd/etc/rc.d/init.d/drbd /etc/rc.d/init.d
  9. chkconfig --add drbd
  10. chkconfig drbd on

KDIR=中指定的系统内核源码路径,根据实际情况设置

1.2、安装drbd模块:

  1. cd drbd
  2. make clean
  3. make KDIR=/usr/src/kernels/2.6.32-220.17.1.el6.x86_64/
  4. cp drbd.ko /lib/modules/`uname -r`/kernel/lib/
  5. depmod

2、DRBD配置

首先对/dev/sda设备分区/dev/sda3(这一步我是在装系统时就分区了),在根目录下建立/drbdData文件夹,名字自定义,供后面挂载/dev/sda3分区设备用。

2.1、配置global_common.conf

编辑全局配置:
  1. vi /usr/local/drbd/etc/drbd.d/global_common.conf

确保文件中包含有下内容:

  1. global {
  2. usage-count yes;
  3. }
  4. common {
  5. net {
  6. protocol C;
  7. }
  8. }

当然,还可以有其它配置,这是最基本的。

2.2、配置r0资源:

创建r0资源:
  1. vi /usr/local/drbd/etc/drbd.d/r0.res

写入文件内容:

  1. resource r0{
  2. on masterNode{
  3. device          /dev/drbd1; #逻辑设备的路径
  4. disk            /dev/sda3;  #物理设备
  5. address         192.168.58.128:7788;
  6. meta-disk       internal;
  7. }
  8. on backupNode{
  9. device          /dev/drbd1;
  10. disk            /dev/sda3;
  11. address         192.168.58.129:7788;
  12. meta-disk       internal;
  13. }
  14. }

需要把上面用到的防火墙7788端口打开,这个端口是自定义的,如果嫌麻烦可以直接关掉防火墙。

说明:

device 是自定义的物理设备的逻辑路径

disk       是磁盘设备,或者是逻辑分区

address   是机器监听地址和端口

meta-disk   这个还没弄明白,看到的资料都是设为:internal

2.3、建立resource

  1. modprobe drbd                               //载入 drbd 模块
  2. lsmod | grep drbd                                            //确认 drbd 模块是否载入
  3. dd if=/dev/zero of=/dev/sda3 bs=1M count=100    //把一些资料塞到 sda3 內 (否则 create-md 时会报错)
  4. drbdadm create-md r0                                     //建立 drbd resource
  5. drbdadm up r0

我遇到的问题:

  1. [root@backupNode /]# drbdadm up r0
  2. 1: Failure: (104) Can not open backing device.
  3. Command 'drbdsetup attach 1 /dev/sda3 /dev/sda3 internal' terminated with exit code

原因是我之前已经挂在了/dev/sda3,需要先卸载/dev/sda3设备,解决办法:

  1. umount /dev/sda3

问题解决。

注:以上每一步骤,都需要在主备服务器上进行配置设置。

2.4、设置Primary Node

将masterNode设为主服务器(primary node),在masterNode上执行:

  1. drbdadm primary --force r0

查看drbd状态:

  1. [root@backupNode /]# cat /proc/drbd
  2. version: 8.4.1 (api:1/proto:86-100)
  3. GIT-hash: 91b4c048c1a0e06777b5f65d312b38d47abaea80 build by root@masterNode, 2012-05-27 18:34:27
  4. 1: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
  5. ns:4 nr:9504584 dw:9504588 dr:1017 al:1 bm:576 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0

已经变成了主服务器。

2.5、创建DRBD文件系统

上面已经完成了/dev/drbd1的初始化,现在来把/dev/drbd1格式化成ext4格式的文件系统,在masterNode上执行:

  1. [root@masterNode /]# mkfs.ext4 /dev/drbd1

输出:

  1. mke2fs 1.41.12 (17-May-2010)
  2. 文件系统标签=
  3. 操作系统:Linux
  4. 块大小=4096 (log=2)
  5. 分块大小=4096 (log=2)
  6. Stride=0 blocks, Stripe width=0 blocks
  7. 589824 inodes, 2358959 blocks
  8. 117947 blocks (5.00%) reserved for the super user
  9. 第一个数据块=0
  10. Maximum filesystem blocks=2415919104
  11. 72 block groups
  12. 32768 blocks per group, 32768 fragments per group
  13. 8192 inodes per group
  14. Superblock backups stored on blocks:
  15. 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
  16. 正在写入inode表: 完成
  17. Creating journal (32768 blocks): 完成
  18. Writing superblocks and filesystem accounting information: 完成
  19. This filesystem will be automatically checked every 21 mounts or
  20. 180 days, whichever comes first.  Use tune2fs -c or -i to override.

然后,将/dev/drbd1挂载到之前创建好的/drbdData目录:

  1. [root@masterNode /]# mount /dev/drbd1 /drbdData

现在只要把数据写入/drbdData目录,drbd即会立刻把数据同步到backupNode的/dev/sda3分区上了。

2.6、DRBD同步测试

1、首先,在主服务器上先将设备卸载,同时将主服务器降为备用服务器:

  1. [root@masterNode /]# umount /dev/drbd1
  2. [root@masterNode /]# drbdadm secondary r0

2、然后,登录备用服务器,将备用服务器升为主服务器,同时挂载drbd1设备到 /drbdData目录:

  1. [root@masterNode /]# ssh backupnode
  2. Last login: Sun May 27 19:57:17 2012 from masternode
  3. [root@backupNode ~]# drbdadm primary r0
  4. [root@backupNode ~]# mount /dev/drbd1 /drbdData/

3、最后,进入/drbdData目录,就可以看到之前在另外一台机器上放入的数据了,如果没有看到,说明同步失败!

drbd的更多相关文章

  1. 基于corosync+pacemaker+drbd+LNMP做web服务器的高可用集群

    实验系统:CentOS 6.6_x86_64 实验前提: 1)提前准备好编译环境,防火墙和selinux都关闭: 2)本配置共有两个测试节点,分别coro1和coro2,对应的IP地址分别为192.1 ...

  2. 5 构建Mysql+heartbeat+DRBD+LVS集群应用系统系列之生产环境下drbd裂脑处理

    preface 公司的业务变更,导致服务器要搬迁,所以需要关闭服务器,然后到新地在开启服务器. 关机前确定drbd+heartbeat+mysql是正常使用的,没有异常,Heartbeat和drbd都 ...

  3. Heartbeat+DRBD+MySQL高可用方案

    1.方案简介 本方案采用Heartbeat双机热备软件来保证数据库的高稳定性和连续性,数据的一致性由DRBD这个工具来保证.默认情况下只有一台mysql在工作,当主mysql服务器出现问题后,系统将自 ...

  4. ZABBIX冗余架构构筑(Centos6.4+pacemaker+corosync+drbd)

    基本构成: 用pacemaker+corosync控制心跳和资源迁移 用drbd同步zabbix配置文件和mysql数据库 所有软件都用yum安装至默认路径 主机的drbd领域挂载至/drbd,备机不 ...

  5. 1 NFS高可用解决方案之DRBD+heartbeat搭建

    preface NFS作为业界常用的共享存储方案,被众多公司采用.我司也不列外,使用NFS作为共享存储,为前端WEB server提供服务,主要存储网页代码以及其他文件. 高可用方案 说道NFS,不得 ...

  6. 4 构建Mysql+heartbeat+DRBD+LVS集群应用系统系列之Lvs为Mysql-slave做负载均衡

    preface Mysql+drbd+heart能够实现Mysql的高可用了,master出现故障的时候能够快速切换.在现在的业务情况下,读操作多,写操作少的情况下,一台DB server明显扛不住, ...

  7. 3 构建Mysql+heartbeat+DRBD+LVS集群应用系统系列之heartbeat的搭建

    preface 在上节的说了mysql的搭建,这节我们在上节的基础上,继续搭建heartbeat. 安装和配置heartbeat 采用yum安装,dbmaster81和dbbackup136上都安装, ...

  8. 2 构建Mysql+heartbeat+DRBD+LVS集群应用系统系列之MySql的搭建

    preface 上一节我们讲了DRBD的原理,以及如何部署DRBD,那么现在在上一节的基础上部署Mysql 安装并启动Mysql 为了方便,我一般采用yum安装Mysql.命令如下: 在172.16. ...

  9. 1 构建Mysql+heartbeat+DRBD+LVS集群应用系统系列之DRBD的搭建

    preface 近来公司利润上升,购买了10几台服务器,趁此机会,把mysql的主从同步的架构进一步扩展,为了适应日益增长的流量.针对mysql架构的扩展,先是咨询前辈,后和同事探讨,准备采用Mysq ...

  10. Rhel6-pacemaker+drbd配置文档

    系统环境: rhel6 x86_64 iptables and selinux disabled 主机: 192.168.122.119 server19.example.com 192.168.12 ...

随机推荐

  1. CDN学习笔记二(技术详解)

    一本好的入门书是带你进入陌生领域的明灯,<CDN技术详解>绝对是带你进入CDN行业的那盏最亮的明灯.因此,虽然只是纯粹的重点抄录,我也要把<CDN技术详解>的精华放上网.公诸同 ...

  2. html一般标签、常用标签、表格

    body的属性: bgcolor               页面背景色 text                    文字颜色 topmargin            上边距 leftmargi ...

  3. spring注入简记

    我们知道对象是交给容器来管理的那么 init() destroy():可以在bean配置中设置对象初识化前执行和销毁后执行 int-delay=""表示是否延迟实例化即容器实例时还 ...

  4. Spring 自动装配 Bean

    Spring3系列8- Spring 自动装配 Bean 1.      Auto-Wiring ‘no’ 2.      Auto-Wiring ‘byName’ 3.      Auto-Wiri ...

  5. adb_亮屏

    来自:http://justonlypiano.blogspot.tw/2013/08/adbandroidandroid-phone-screen-off-via.html 更多内容请查看:http ...

  6. Monkey学习(1)环境搭建

    环境搭建: Monkey程序由Android系统自带,需要配置J2SE平台的JDK,还需要配置Android平台的SDK. 1)下载和配置JDK 下载与安装JDK过程省略... 配置JDK环境变量,我 ...

  7. 算法_队列的Java通用数组实现

    在实现Queue的API的时候,可以使用两个实例变量做索引,一个变量head指向队列的开头,另一个变量tail指向队列的结尾.在删除一个元素的时候,使用head访问,并将head+1,插入一个元素的时 ...

  8. Android最佳性能实践(一)——合理管理内存

    有不少朋友都问过我,怎样才能写出高性能的应用程序,如何避免程序出现OOM,或者当程序内存占用过高的时候该怎么样去排查.确实,一个优秀的应用程序,不仅仅要功能完成得好,性能问题也应该处理得恰到好处.为此 ...

  9. 无法找到脚本*.VBS的脚本引擎解决办法

    当你在运行一些基于VBS脚本语言的文件时,系统可能报错.这时候可能是你的VBS脚本服务在注册表中出错了,原因可能是卸载或安装一些代码不规范的程序引起的.这里给出无法找到脚本引擎"vbscri ...

  10. HDELETE

    use HDELETE to migration file deletion is good a choice. sample: //STEP0010 EXEC PGM=IKJEFT01 //SYSO ...