设为首页 收藏本站
查看: 611|回复: 0

[经验分享] DRBD配置过程

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-1-30 09:09:24 | 显示全部楼层 |阅读模式
最近因为工作需要,搭建了一个DRBD环境,发现网上很多关于此部分的配置内容不是太全,以下内容是配置过程, 其中很多内容是copy 过来的 E___6717ZHE1SIGG.jpg
1        drbd 工作原理
DRBD是一种块设备,可以被用于高可用(HA)之中.它类似于一个网络RAID-1功能.当你将数据写入本地文件系统时,数据还将会被发送到网络中另一台主机上.以相同的形式记录在一个文件系统中。 本地(主节点)与远程主机(备节点)的数据可以保证实时同步.当本地系统出现故障时,远程主机上还会保留有一份相同的数据,可以继续使用.在高可用(HA)中使用DRBD功能,可以代替使用一个共享盘阵.因为数据同时存在于本地主机和远程主机上,切换时,远程主机只要使用它上面的那份备份数据,就可以继续进行服务了。
DRBD的工作原理如下图:
       +-----------+
       |  文件系统 |
       +-----------+
            |
            V
       +--------------+
       |  块设备层  |
       | (/dev/drbd1) |
       +--------------+
        |           |
        |           |
        V           V
  +-------------+  +--------------+
   |  本地硬盘   |   | 远程主机硬盘|
   | (/dev/hdb1)|   |(/dev/hdb1)  |
  +-------------+  +--------------+
==========================================================
2        安装2.1       安装前须知
1.       对操作系统要求
在编译之前,首先要确认系统中已经安装了gcc, make,glibc库, flex scannergenerator和bison等工具,其中gcc的版本必须和编译当前linux内核所用的gcc是相同版本的。
查看gcc版本的命令:
#gcc -v
查看当前linux内核对应gcc版本的命令:
#cat /proc/version
DRBD会被编译内核模块,其中需要用到若干内核头文件、内核源码等等,所以需要做点准备。详细阅读源代码目录中的INSTALL就了解,准备工作分两种情况:
1)     当前系统使用的是发行版本(openSUSE,Fedora, ubuntu等等)编译好的内核(称为stockkernel),则可以检查一下系统/usr/src等目录。(关于内核模块的做法,可以找其它资料参考参考。)如果没有安装这些文件,那么就安装盘,通过安装包管理工具安装到文件系统中就是。
2)     当前系统使用的不是发行版本编译好的内核,比如自己编译的、或者去www.kernel.org下载的。这种情况,就要去下载对应内核版本的源文件包进行安装。本次安装时基于第(1)种情况。
2.       在安装系统的时候注意划分一个干净的分区,在以下的操作中(创建matadata时)会用到。
2.2       Centos5.4安装
1.       操作系统配置:
1)     

Cw
n0主服务器
主机名:master
IP:192.168.2.124
镜像的硬盘:/dev/hda2
2)     备份服务器
主机名:slave
IP:192.168.2.125
镜像的硬盘:/dev/hda2
2.       在安装过程中选择安装开发工具和开发包
3.       在划分磁盘分区时,划分一个分区专供DRBD使用,Master和slave的这两个分区大小最好相同(如果测试用,分区最好划小点,因为drbd初次同步时分区越大需要的时间越长) 。
2.3       下载安装drbd
1.       下载源代码:http://oss.linbit.com/drbd/。此次安装的版本是drbd-8.3.5,(网上有资料反映说drbd-8.3.5以上的版本在安装上会有不同)
2.       把下载好的drbd-8.3.5.tar.gz放置到/usr目录下,执行以下命令
1)       进入安装包所在目录
[iyunv@master ]#cd /usr
2)       解压
[iyunv@master ] # tar –zxvf drbd-8.3.5.tar.gz
3)       进入解压后的文件夹
[iyunv@master ] # cddrbd-8.3.5
4)       执行make命令
[iyunv@master ] #make
备注:
l       此命令适合于没有更改内核的情况,直接运行make,软件会直接到/lib/module里边去寻找系统环境
l       如果如果是新的内核需要以下命令来make
# make KDIR=/usr/src/linux(“/usr/src/linux”为内核所在的位置)
5)     执行make install 命令
[iyunv@master ] #  make install
如果没有报错,应该基本install好了,检查是否生成了相应的文件:/etc/drbd.conf ; /etc/init.d/drbd ; 以及./drbd/drbd.ko,同时系统应该至少多了以下两个命令:drbdadm和drbdsetup
6)       加载安装drbd模块
[iyunv@master ]#insmod drbd.ko 或者 modprobe drbd
7)       通过lsmod检查是否已经成功,如果有类似内容输出,则表示drbd安装成功了
[iyunv@master ]# lsmod |grep drbd
drbd        271736  0
8)       创建硬件设备drbd(不知道这步是否多余,有些配置文件里说是要执行,有些没有,待验证)
[iyunv@master ]# mknod /dev/drbd1 b147 0

1.1        DRBD的配置

DRBD运行时,会读取一个配置文件/etc/drbd.conf.这个文件里描述了DRBD设备与硬盘分区的映射关系,数据一旦写入磁盘并发送到网络中就认为完成了写入操作。

1.        drbd.conf的配置参数说明

1)        Protocol

Protocol  A

收到接收确认就认为完成了写入操作。

Protocol  B

收到写入确认就认为完成了写入操作。

Protocol  C

2)        global

global { usage-count yes; }

是否参加DRBD使用者统计,默认是yes

3)        common

common { syncer { rate 1M; } }

设置主备节点同步时的网络速率最大值,单位是字节.

4)        resource

一个DRBD设备(即:/dev/drbdX),叫做一个"资源"。里面包含一个DRBD设备的主备节点的的ip信息,底层存储设备名称,设备大小,meta信息存放方式,drbd对外提供的设备名等等。

resource r0 {

#使用协议C.表示收到远程主机的写入确认后,则认为写入完成.

protocol C;

net {

# 设置主备机之间通信使用的信息算法.

     cram-hmac-alg sha1;

     shared-secret "FooFunFactory";

   }

# 每个主机的说明以"on"开头,后面是主机名.在后面的{}中为这个主机的配置.

on master {

    # /dev/drbd1使用的磁盘分区是/dev/hdb1

    device    /dev/drbd1;

    disk      /dev/ hda2;

    # 设置DRBD的监听端口,用于与另一台主机通信

    address   192.168.2.124:7898;

    meta-disk  internal;

   }

on slave{

    device    /dev/drbd1;

    disk      /dev/ hda2;

    address   192.168.2.124:7898;

     meta-disk  internal;

    }

}

2.        以下为测试时的完整配置

global {

  usage-count yes;

}

common {

  protocol C;

}

resource r0 {

  on master.localdomain {

    device    /dev/drbd1;

    disk      /dev/hda2;

    address   192.168.2.124:7789;

    flexible-meta-disk  internal;

  }

  on slave.localdomain {

    device    /dev/drbd1;

    disk      /dev/hda2;

    address   192.168.2.125:7789;

    meta-disk internal;

  }

}

3.        双机两个节点的配置文件是一模一样的。DRBD源码目录下有个样本,里面说得比较详细。
                        1.1       启动
1.       创建matadata
在启动DRBD之前,需要分别在两台主机的hdb1分区上,创建供DRBD记录信息的数据块.分别在两台主机上执行:
[iyunv@master ]#drbdadm create-mdr0
[iyunv@slave ]#drbdadm create-mdr0
备注:
1)     “r0”是在drbd.conf里定义的资源名称.
2)     当执行命令”drbdadm create-md r0”时,出现以下错误信息。
Device size would be truncated,which
would corrupt data and resultin
'access beyond end of device'errors.
You need to either
* use external meta data(recommended)
* shrink that filesystemfirst
* zero out the device (destroy thefilesystem)
Operation refused.
Command 'drbdmeta 0 v08 /dev/xvdbinternal create-md' terminated with exit code 40
drbdadm create-md r0: exited withcode 40
解决办法:初始化磁盘文件格式,dd if=/dev/zero bs=1M count=1of=/dev/sdXYZ; sync
[iyunv@master ]#  dd if=/dev/zero bs=1M count=1of=/dev/hda3; sync
2.       启动DRBD,分别在两台主机上执行
[iyunv@master ]# /etc/init.d/drbdstart
[iyunv@slave ]# /etc/init.d/drbdstart
备注:
如果在启动过程中找不到node时,查看是/dev/hda3是否是处于挂载状态,如果是,用umount命令取消挂载
3.       查看DRBD的状态,分别在两台主机上执行
[iyunv@slave drbd]# cat/proc/drbd
version: 8.3.5(api:88/proto:86-91)
GIT-hash:ded8cdf09b0efa1460e8ce7a72327c60ff2210fb build by root@slave,2010-06-10 09:20:19
1: cs:Connected ro:/Secondary /Secondaryds:UpToDate/UpToDate Cr----
   ns:112262 nr:0 dw:7882 dr:110512 al:15 bm:7 lo:0 pe:0 ua:0 ap:0ep:1 wo:b oos:0
[iyunv@slave drbd]# cat/proc/drbd
version: 8.3.5(api:88/proto:86-91)
GIT-hash:ded8cdf09b0efa1460e8ce7a72327c60ff2210fb build by root@slave,2010-06-10 09:20:19
1: cs:Connected ro:Primary/Secondaryds:UpToDate/UpToDate C r----
ns:112262 nr:0 dw:7882 dr:110512al:15 bm:7 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0
可以看到目前2台机器都是备机状态(secondary状态,红色部分标记)
4.       激活主节点DRBD,此命令只在主机上执行
[iyunv@master ~]# drbdsetup /dev/drbd1 primary –o
5.       再次在两台机器上执行cat /proc/drbd查看状态
[iyunv@slave drbd]# cat /proc/drbdversion: 8.3.5 (api:88/proto:86-91)GIT-hash: ded8cdf09b0efa1460e8ce7a72327c60ff2210fb build by root@slave, 2010-06-10 09:20:19  1: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r----    ns:112262 nr:0 dw:7882 dr:110512 al:15 bm:7 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0[iyunv@slave drbd]# cat /proc/drbdversion: 8.3.5 (api:88/proto:86-91)GIT-hash: ded8cdf09b0efa1460e8ce7a72327c60ff2210fb build by root@slave, 2010-06-10 09:20:19  1: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r----    ns:112262 nr:0 dw:7882 dr:110512 al:15 bm:7 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0
可以看到目前2台机器都是主备状态(红色部分标记)
2        测试同步
把主机上的DRBD设备挂载到一个目录上进行使用。备机的DRBD设备无法被挂载,因为它是用来接收主机数据的,由DRBD负责操作。
1.     master
1)     把DRBD设备挂载到一个目录上
[iyunv@ master /]# cd /mnt[iyunv@ master mnt]# mkdir drbd1[iyunv@ master ]# mount /dev/drbd1 /mnt/drbd1
[iyunv@master ~]# df -h
文件系统             容量  已用 可用 已用% 挂载点
/dev/hda1             29G  3.5G   24G  13% /
tmpfs                988M    0  988M   0%/dev/shm
/dev/drbd1           7.7G  419M  6.9G   6%/mnt/drbd1现在,我们在
2)     在drbd1目录里建立一个200M的文件
[iyunv@g105-1 /]# dd if=/dev/zero of=/mnt/drbd1/tempfile1.tmp bs=104857600 count=2
2.     slave
1)     停止DRBD
[iyunv@slave /]# /etc/init.d/drbdstop
2)     挂载hdb1
[iyunv@ slave ]# mount /dev/hdb1 /mnt/drbd1
[iyunv@slave drbd1]# ls  -hl
总计 401M
-rw-r--r-- 1 rootroot    006-09 13:01 aa
-rw-r--r-- 1 rootroot    006-09 13:18 bb
-rw-r--r-- 1 rootroot 200M 06-09 13:24 cc.txt
?--------- ??   ?      ?         ? drbd1
drwx------ 2 rootroot  16K 06-09 12:58lost+found
-rw-r--r-- 1 rootroot    006-09 13:18 ls
-rw-r--r-- 1 rootroot 200M 06-09 13:21 tempfile1.tmp
可以看到,在主机g105-1上产生的文件tmpfile1.tmp,也完整的保存在备机g10slave的DRBD分区上。
这就是DRBD的网络RAID-1功能. 在主机上的任何操作,都会被同步到备机的相应磁盘分区上,达到数据备份的效果。
3)     测试完毕后请务必对slave解除挂载和重新启动,否则将导致同步停止
[iyunv@ slave ]# umount /dev/hdb1 /mnt/drbd1
[iyunv@slave /]# /etc/init.d/drbdstart
3        注意点
1.     mount drbd设备以前必须把设备切换到primary状态。
2.     两个节点中,同一时刻只能有一台处于primary状态,另一台处于secondary状态。
3.     处于secondary状态的服务器上不能加载drbd设备。
4.     主备服务器同步的两个分区大小最好相同,这样不至于浪费磁盘空间,因为drbd磁盘镜像相当于网络raid 1。
                                                                       




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-41716-1-1.html 上篇帖子: DRBD的概念和配置 下篇帖子: DRDB的安装配置与使用(第二版)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表