业务需求描述

假设有两台服务器A、B 其实际ip 10.0.0.22 和10.0.0.23

配置目标:

两台服务器分别配置好drdb,实现在A服务器上/dev/sdb分区上写入数据,数据实时同步到B 机器上,一旦服务器A宕机或硬盘损坏导致数据不可用,B服务器上的数据此事是A的一个完整备份,且可以瞬间接替服务器A,实现数据异机的实时数据同步。

部署结构  图

主备模式

               新存储服务器 I                          新存储服务器ii

                                       ------》

                                           drdb/md1

               drdb分区1主 《------》 drdb分区1从

                                           heartbeat


主主模式:

                 新存储服务器 I                          新存储服务器ii

                                        ------》

                                           drdb/md1

                 drdb分区1主 《------》drdb分区1从

                                             heartbeat

                   

                 drdb分区2从 《------    drdb分区2主

drdb 安装_第1张图片





环境准备

 参照:http://linuxboys.blog.51cto.com/9150052/1671201

 此处两台服务器各添加一块硬盘, 且分区

wKioL1WgxNvxPuZpAAB0MyntaWs545.jpg

 使用  parted  分区(mkfs无法格式化大于16 T分区,可使用XFS或e2fsprogs)

http://blog.ronnyegner-consulting.de/2011/08/18/ext4-and-the-16-tb-limit-now-solved/
http://rritw.com/a/JAVAbiancheng/ANT/20101003/43604.html

分区命令

parted /dev/sdb  mklabel gpt yes
parted /dev/sdb  mkpart primary ext4 0 1000  ignore
parted /dev/sdb  mkpart primary ext4 1001 2000  Yes ignore
parted /dev/sdb  p

 提示:这里的meta data分区一定不能格式化建立文件系统,交给drdb管理

            格式化好的分区不要进行挂载(mount)

            生产环境drdb meta data分区一般可设为1-2G ,数据分区可以格式化

          (mkfs.ext4 /dev/sdb1;tune2fs -c -1 /dev/sdb1 )

             

             

检查格式化的方法:
            
      [root@B ~]# mount /dev/sdb2 /tools
       mount: you must specify the filesystem type
      #此处说明meda data分区是正确的


软件安装

rpm -Uvh http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm  #注意此处的elrepo源

yum install -y kmod-drbd84

[root@B tools]# rpm -qa drbd84-utils kmod-drbd84

kmod-drbd84-8.4.6-1.el6.elrepo.x86_64

drbd84-utils-8.9.2-1.el6.elrepo.x86_64

[root@B tools]# modprobe drbd           #手动加载内核模块

[root@B tools]# lsmod | grep drbd

drbd                  365931  0 

libcrc32c               1246  1 drbd

[root@B tools]# echo "modprobe drbd" >>/etc/rc.local  #此处不是必须

[root@B tools]# echo "modprobe drbd" >/etc/sysconfig/modules/drbd.modules

[root@B tools]# chmod 755 /etc/sysconfig/modules/drbd.modules 

#问题,加载模块是遇到找不见,可重启服务器。


配置文件 默认的配置路径:/etc/drbd.conf 

[root@B tools]# cat /etc/drbd.conf 

# You can find an example in  /usr/share/doc/drbd.../drbd.conf.example #样例


include "drbd.d/global_common.conf";       #相当于公共文件

include "drbd.d/*.res";                    #相当于nginx 的虚拟主机




/etc/drbd.conf 

范例详细注释

global {

    usage-count no; #是否参加DRBD使用者统计,默认为yes

}

#全局配置选项(global)

common {

  syncer { 

  rate 10M;            #设置主备节点同步时的网络速率最大值,单位时字节

verify-alg crc32c;  #数据校验方法

 }

}

#公共配置项(common)这里的common,指的是drbd所管理的多个资源之间的common。配置项里主要是配置drbd所有resource可以设置为相同的参数项,比如protocol、syncer等等

# primary for drbd1

resource data {                #resource资源 data名称

  protocol C;                    #协议

  disk {                             #磁盘控制

    on-io-error   detach;   #磁盘io错误,分离

  }

  on A {                             #节点1, drbd1 主机名(host解析)

    device    /dev/drbd0;   #指定设备

    disk      /dev/sdb1;       #节点对应磁盘

    address   10.0.0.22:7788;  #监听地址,端口

    meta-disk /dev/sdb2[0];   #存放meta信息

  }

  on drbd2 {              #节点2

    device     /dev/drbd0;

    disk       /dev/sdb1;

    address    10.0.0.23:7788;

    meta-disk  /dev/sdb2[0];

  }

}

#可以添加多个资源,但需要作用于不同的设备

#注意两边的配置相同

 Enabling DRBD资源(两台操作相同):

创建drbd纪录信息的metadata

[root@B ~]# drbdadm  create-md data

initializing activity log

NOT initializing bitmap

Writing meta data...

New drbd meta data block successfully created.

# 如果此处格式化就无法创建

启动服务

drbdadm  create-md data

  或

drbdadm up all

状态查看

cat /proc/drbd

  或

/etc/init.d/drbd status


version: 8.4.6 (api:1/proto:86-101)

GIT-hash: 833d830e0152d1e457fa7856e71e11248ccf3f70 build by phil@Build64R6, 2015-04-09 14:35:00

 0: cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent C r-----

    ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:976548

Connected表示连接通信正常

Secondary/Secondary表示角色未确定

:Inconsistent/Inconsistent表示磁盘状态数据不一致