DRBD是linux的内核的存储层中的一个分布式存储系统,可用使用DRBD在两台Linux服务器之间共享块设备,共享文件系统和数据。类似于一个网络RAID-1的功能,如图所示:
DRBD配置工具:
- drbdadm: 高级管理工具,管理/etc/drbd.conf,向drbdsetup和drbdmeta发送指令
- drbdsetup: 配置装载进kernel的DRBD模块,平时很少用
- drbdmeta: 管理META数据结构,平时很少用
DRBD配置文件:DRBD的主配置文件为/etc/drbd.conf
为了管理的便捷性通常会将些配置文件分多个部分,但都保存至/etc/drbd.d目录。主配置文件中仅使用"include"指令将这些配置文件片断整合。
通常/etc/drbd.d中的文件为global_common.conf和所有以.res结尾的文件。其中:
- global_common.conf中主要定义global段和common段
- 每个.res文件用于定义一个资源
global_common.conf:
在配置文件中global段仅出现一次,且若所有配置信息都保存至同一个配置文件中而不分开为多个文件的话则global段必须位于配置文件最开始处
目前global段中可以定义的参数仅有minor-count, dialog-refresh, disable-ip-verification和usage-count。
用于定义被每一个资源默认继承的参数,可在资源定义中使用的参数都可在common定义。实际应用中common段并非必须但建议将多个资源共享的参数定义在common段以降低配置复杂度
用于定义drbd资源,每个资源通常定义在一个单独的位于/etc/drbd.d目录中的以.res结尾的文件中。资源在定义时必须为其命名
每个资源段的定义中至少要包含两个host子段,以定义此资源关联至的节点,其它参数均可以从common段或drbd的默认中进行继承而无须定义
DRBD资源:
- Resource name: 除空白字符的任意的ACSII码字符
- DRBD device: 在双方节点上,此DRBD设备的设备文件;一般为/dev/drbdN,其主设备号147
- Disk configuration: 在双方节点上各自提供的存储设备
- Nerwork configuration: 双方数据同步时所使用的网络属性
DRBD 配置步骤:
- 安装drbd
- 配置资源文件(定义资料名称,磁盘,节点信息,同步限制等)
- 将drbd加入到系统服务chkconfig --add drbd
- 初始化资源组 drbdadm create-md resource_name
- 启动服务 service drbd start
- 设置primary主机并同步数据
- 分区、格式化/dev/drbd*
- 一个节点进行挂载
- 查看状态
DRBD支持的底层设备:
DRBD需构建在底层设备之上,然后构建出块设备。对用户来说DRBD设备就像是物理磁盘,可在其内创建文件系统。DRBD所支持的底层设备有以下这些类:
- 磁盘或是磁盘的分区
- soft raid设备
- LVM的逻辑卷
- EVMS(Enterprise Volume Management System,企业卷管理系统)的卷。
- 其他任何的块设备
单主模式:
在单主模式下任何资源在任何特定的时间,集群中只存在一个主节点。正因为这样在集群中只能有一个节点可随时操作数据,这种模式可用在任何的文件系统上(EXT3、EXT4、XFS等)
部署DRBD单主节点模式可保证集群的高可用性(fail-over遇故障转移的能力)
双主模式:这是DRBD8.0之后的新特性
在双主模式下任何资源在任何特定的时间,集群中都存在两个主节点。由于双方数据存在并发的可能性这种模式需一个共享的集群文件系统,利用分布式的锁机制进行管理,如GFS和OCFS2。
部署双主模式时,DRBD是负载均衡的集群,这就需要从两个并发的主节点中选取一个首选的访问数据。这种模式默认是禁用的,如果要是用的话必须在配置文件中进行声明。
部署:
关闭防火墙限制及软件安装:
service iptables stop && setenforce 0
yum -y install gcc kernel-devel kernel-headers flex ; export LC_ALL=C
wget http://oss.linbit.com/drbd/8.4/drbd-8.4.1.tar.gz && tar xzf drbd-8.4.1.tar.gz
cd drbd-8.4.1
./configure --prefix=/usr/local/drbd --with-km --with-heartbeat --sysconfdir=/etc/drbd # --with-km 激活内核模块 --with-heartbeat 激活heartbeat相关配置
make KDIR=/usr/src/kernels/$(uname -r)/ # KDIR=指定内核源码路径,依实际情况设置(查内核路径:ls -l /usr/src/kernels/$(uname -r)/)
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
chkconfig --add drbd && chkconfig drbd on
cd drbd #安装drbd模块
make clean && make KDIR=/usr/src/kernels/2.6.32-220.17.1.el6.x86_64/
cp drbd.ko /lib/modules/`uname -r`/kernel/lib/
depmod
modprobe drbd && lsmod | grep -i drbd
在两台主机之间配置host文件将名字指向对方:
vim /etc/hosts
10.0.0.7 data-1.localdomain #建议增加去往此网段的路由到指定出接口
10.0.0.8 data-2.localdomain #建议增加去往此网段的路由到指定出接口
在两端主机内创建分区:
数据区: parted /dev/sda mklabel gpt && parted /dev/sda mkpart logical ext3 20GB 20GB
重读分区: partprobe && cat /proc/partions