码迷,mamicode.com
首页 > 其他好文 > 详细

一步一步搭建DRBD实验

时间:2015-06-24 19:23:15      阅读:304      评论:0      收藏:0      [点我收藏+]

标签:drbd ha 高可用

DRBD简介:

        DRBD是一个用软件实现的、无共享的、服务器之间镜像块设备内容的存储复制解决方案。主要用于对于服务器之间的磁盘、分区、逻辑卷等进行数据镜像。


DRBD的复制模式:

        协议A:异步写入,只要本地磁盘写入完成,另外一份拷贝的数据包在发送队列中,则认为一个写操作过程完成。

        协议B:半同步写入,只要本地磁盘写入完成,另外一份拷贝的数据包已经到达远程节点,则认为一个写操作过程完成。

        协议C:同步写入,只有本地和远程节点的磁盘都已经确认了写操作完成,则认为一个写操作过程完成。


DRBD的安装和配置

环境如下:

节点1        node1.jwh5566.com  192.168.1.116

节点2        node2.jwh5566.com  192.168.1.117  

        技术分享

安装前配置 

    此处省略1000字......

    设定主机名 hosts文件

vi /etc/hosts
192.168.10.116 node1.jwh5566.com node1
192.168.10.117 node2.jwh5566.com node2

    关闭防火墙,SELINUX

    设定双机互信

node1上
ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub root@node2
node2上
ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub root@node1

    同步系统时间

    在两个系统上分别添加第二块硬盘

   

安装编译环境

                

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

安装用户空间工具

        cd /usr/local/src
        wget http://oss.linbit.com/drbd/8.4/drbd-8.4.4.tar.gz
        tar xf  drbd-8.4.4.tar.gz
        cd drbd-8.4.4
        ./configure --prefix=/usr/local/drbd --with-km
        make KDIR=/usr/src/kernels/2.6.32-504.el6.x86_64/
        make install
        mkdir -p /usr/local/drbd/var/run/drbd
        cp /usr/local/drbd/etc/rc.d/init.d/drbd /etc/rc.d/init.d

 安装drbd模块

        cd drbd        
        make clean
        make KDIR=/usr/src/kernels/2.6.32-504.el6.x86_64/
        cp drbd.ko /lib/modules/`uname -r`/kernel/lib/
        depmod
        modprobe drbd                                    //载入 drbd 模块
        lsmod|grep drbd                                  //确认 drbd 模块是否载入

格式化硬盘,分区

[root@node1 ~]# fdisk /dev/sdb 
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0xb52b897c.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won‘t be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

WARNING: DOS-compatible mode is deprecated. It‘s strongly recommended to
         switch off the mode (command ‘c‘) and change display units to
         sectors (command ‘u‘).

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-652, default 1): 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-652, default 652): 
Using default value 652

Command (m for help): p

Disk /dev/sdb: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xb52b897c

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         652     5237158+  83  Linux

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
partx /dev/sdb
sdb   sdb1  
[root@node1 ~]# partx /dev/sdb
# 1:        63- 10474379 ( 10474317 sectors,   5362 MB)
# 2:         0-       -1 (        0 sectors,      0 MB)
# 3:         0-       -1 (        0 sectors,      0 MB)
# 4:         0-       -1 (        0 sectors,      0 MB)

  配置drbd

cd /usr/local/drbd/etc/drbd.d
vim vim global_common.conf
global {
        usage-count no;定义是否参加使用者统计,默认是yes
        # minor-count dialog-refresh disable-ip-verification
}

common {
        protocol C; 使用哪种同步协议
        handlers {    定义出现错误的时候采用哪种处理办法
        pri-on-incon-degr "/usr/lib/drbd/notify-pri-on-incon-degr.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f";
        pri-lost-after-sb "/usr/lib/drbd/notify-pri-lost-after-sb.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f";
        local-io-error "/usr/lib/drbd/notify-io-error.sh; /usr/lib/drbd/notify-emergency-shutdown.sh; echo o > /proc/sysrq-trigger ; halt -f";
        }

        startup {
                # wfc-timeout degr-wfc-timeout outdated-wfc-timeout wait-after-sb
                定义各种超时时间
        }

        options {
                # cpu-mask on-no-data-accessible
        }

        disk {
                # size max-bio-bvecs on-io-error fencing disk-barrier disk-flushes
                # disk-drain md-flushes resync-rate resync-after al-extents
                # c-plan-ahead c-delay-target c-fill-target c-max-rate
                # c-min-rate disk-timeout
                on-io-error detach;定义磁盘IO错误的时候,剔除设备。
        }

        net {
        }
        syncer { rate 500M; }定义
}

  设置Resource

vim drbd.res
resource r1 {
        on node1.jwh5566.com {  每个主机说明以on开头,后面是hostname(uname -n)
        device /dev/drbd0;    
        disk /dev/sdb1;       drbd使用的磁盘分区是/dev/sdb1
        address 192.168.10.131:7789;设定drbd的监听端口,与另一台主机通信
        meta-disk internal;  设定drbd的磁盘内部保存元数据
        }
        on node2.jwh5566.com {
        device /dev/drbd0;
        disk /dev/sdb1;
        address 192.168.10.132:7789;
        meta-disk internal;
        }
}

将上面两个配置文件复制到node2相同的目录下

启动DRBD

在两个节点执行
    drbdadm create-md all
    启动drbd服务
    service drbd start
查看节点的状态
    cat /proc/drbd 或 service drbd status
    [root@node1 drbd.d]# cat /proc/drbd 
    version: 8.4.4 (api:1/proto:86-101)
    GIT-hash: 74402fecf24da8e5438171ee8c19e28627e1c98a build by root@node1.jwh5566.com, 2015-06-23 21:15:01
    0: cs:Connected ro:Secondary/Secondary ds:UpToDate/UpToDate C r-----
    ns:0 nr:4 dw:4 dr:664 al:0 bm:1 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
    
    注:
        ro:表示角色信息primary或secondary
        ds:表示磁盘信息 一致或非一致
    第一次显示是非一致的状态,使用如下命令设定主节点,同步一致状态
    在任意节点
    drbdadm -- --overwrite-data-of-peer primary all
    以后再要切换状态的时候可以使用如下命令
    drbdadm primary all
    执行之后可以看到角色和状态显示正常。
挂载设备和创建文件系统,在primary的主机上执行
    mkfs.ext3 /dev/drbd0
    mount /dev/drbd0   /mnt

测试DRBD

在primary主机上执行
在/mnt目录下创建文件,在另一台主机上查看是否同步
dd if=/dev/zero of=/mnt/test  bs=1M count=100
在secondary主机上
停止drbd服务
    service drbd stop
挂载/dev/sdb1,查看文件
    mount /dev/sdb1 /mnt
    ls -al /mnt/  可以成功看到设备,即正常。

DRBD主备节点切换

  1. 在主节点停止drbd服务

    1. server drbd stop

  2. 在备节点切换成主节点

    1. drbdadm primary all

   或

   1.在主节点卸载磁盘分区

         a.umount  /mnt

   2.切换到secondary角色

         a.drbdadm secondary all

   3.在另一节点切换成主角色

         drbdadm primary all







本文出自 “Linux is belong to you” 博客,请务必保留此出处http://jwh5566.blog.51cto.com/7394620/1665076

一步一步搭建DRBD实验

标签:drbd ha 高可用

原文地址:http://jwh5566.blog.51cto.com/7394620/1665076

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!