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. JavaScript基础知识之——Location 对象详解

    属性 描述 location.hash 设置或取得 URL 中的锚 location.host 设置或取得 URL 中主机(包括端口号) location.hostname 设置或取得 URL 中的主 ...

  2. mysql概要(八)视图

    1.视图使用时,以表的方式使用 视图修改 alter view 视图名 as select ...; 1.1创建视图: 2.视图的好处: 通过id取模存放四个表中,然后通过视图把表合成一张表: 3.视 ...

  3. iOS8 获取通知设置状态

    UIUserNotificationSettings *settings = [[UIApplication sharedApplication] currentUserNotificationSet ...

  4. linux学习笔记2-命令总结3

    文件搜索命令 1.文件搜索命令 find 2.其他文件搜索命令 grep - 在文件中搜索字串匹配的行并输出 locate - 在文件资料库中查找文件 whereis - 搜索命令所在目录及帮助文档路 ...

  5. mysql 求时间段平均值

    考虑下面的需求,在一段时间内,间隔一段时间,取一个平均值,把所有的平均值取出来,怎么办?思路:在存储过程中,拼接sql语句.根据起始时间和结束时间,while循环每次加一段时间.DROP PROCED ...

  6. 【转载】【Centos linux系统】命令行(静默)安装oracle 11gR2

    [原文]:http://blog.chinaunix.net/uid-23886490-id-3565998.html 一.安装前准备 1.内存及swap要求 至于swap如何添加,后文将提到 gre ...

  7. Linux配置全局环境变量的方法

    总结3种方法: 1.修改/etc/profile    1.1 :首先在此文件中设置环境变量;    1.2:export  设置好的环境变量.  #view /etc/profile export ...

  8. 正则表达式使用(Js、Java)

    Js中全局替换,需要在最后加上g(global),并且使用//包围起来 1.全局替换字符+ 和 只替换第一个字符+ alert("2014+03-22++aaaa".replace ...

  9. ie、火狐、谷歌浏览器,光标定位问题

    IE:不管该行有没有文字,光标高度与font-size一致. FF:该行有文字时,光标高度与font-size一致.该行无文字时,光标高度与input的height一致. Chrome:该行无文字时, ...

  10. HEVC编解码优化信息

    hevc解码GPU优化: 1.This GPU acceleration has opened up the possibility of playing a Full-HD (1080p) at 6 ...