CentOS6.5 安装配置drbd

分类:CentOS教程 阅读:89932 次

一、安装

##在之前,将6.5的内核进行了升级,如果以下命令不行,可以先将内核进行升级。升级后重启,应用新内核

##yum update kernel

##yum install kernel-devel

rpm -Uvh http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm

yum -y install drbd83-utils kmod-drbd83

modprobe drbd

前期准备说明:两台服务器,两块专用磁盘,大小一致。

操作系统 主机名 IP drbd磁盘

CentOS6.5 g105-1 192.168.100.177 /dev/testvg/testlv

CentOS6.5 g105-2 192.168.100.253 /dev/testvg/testlv

两台设备的防火墙要互相允许。

##以上主机名与IP对应的关系中,两台服务器上的hosts、/etc/sysconfig/network文件都要写上,如果在创建时报错,还要hostname g105-1

二、配置

#include"drbd.d/global_common.conf";注释掉 #include"drbd.d/*.res";注释掉 global{ usage-countno;是否参加DRBD使用者统计,默认参加 } common{ syncer{rate200M;}设置主用节点和备用节点同步时的网络速率最大值,单位是字节 } resourcer0{资源名字为r0 protocolC;使用DRBD的第三种同步协议(ABC),大多数用C,表示收到远程主机的写入确认后认为写入完成 startup{ wfc-timeout120;在启用DRBD块时,初始化脚本drbd会阻塞启动进程的运行,直到对等节点的出现。该选项就是用来限制这个等待时间的,默认为0,即不限制,永远等待。 degr-wfc-timeout120;也是用于限制等待时间,只是作用的情形不同:它作用于一个降级集群(即那些只剩下一个节点的集群)在重启时的等待时间。 } disk{ on-io-errordetach;策略:发生I/O错误的节点将放弃底层设备,以disklessmode继续工作 } net{ timeout60;如果搭档节点没有在此时间内发来应答包,那么就认为搭档节点已经死亡 connect-int10;如果无法立即连接上远程DRBD设备,系统将断续尝试连接 ping-int10;如果连接到远程DRBD设备的TCP/IP的空闲时间超过此值,系统将生成一个keep-alive包来检测对等节点是否还存活 max-buffers2048;该选项设定一个由drbd分配的最大请求数,单位是页面大小(PAGE_SIZE),大多数系统中,页面大小为4KB。这些buffer用来存储那些即将写入磁盘的数据。最小值为32(即128KB)。这个值大一点好。 max-epoch-size2048;该选项设定了两次writebarriers之间最大的数据块数。如果选项的值小于10,将影响系统性能。大一点好。 cram-hmac-alg"sha1";该选项设定内核支持的一个算法,用于网络上的用户数据的一致性校验。通常的数据一致性校验,由TCP/IP头中所包含的16位校验和来进行,而该选项可以使用内核所支持的任一算法。该功能默认关闭。 shared-secret"Mysql-abcD";用来设定在对待节点授权中使用的密码,最长64个字符。 } ontest02{每个主机的说明以on开头,后面是hostname device/dev/drbd0;drbd设备名称 disk/dev/sdb;/dev/drbd0使用的磁盘分区是/dev/sdb address192.168.1.244:6666;设置DRBD的监听端口,用于与另一台主机通信 meta-diskinternal;DRBD的元数据存放方式 } ontest03{ device/dev/drbd0; disk/dev/sdb; address192.168.1.245:6666;两台主机端口必须一致 meta-diskinternal; } }

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

Protocol

ProtocolA@数据一旦写入磁盘并发送到网络中就认为完成了写入操作

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

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

2、global

global { usage-count yes; }@是否参加DRBD使用者统计,默认是yes

3、common

common { syncer { rate1M; } }

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

4、resource

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

resource r0 {

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

net {

cram-hmac-alg sha1;@设置主备机之间通信使用的信息算法.

shared-secret "FooFunFactory";

}

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

on master {

device/dev/drbd0;

disk/dev/hdb;

address192.168.2.124:7898;@设置DRBD的监听端口,用于与另一台主机通信

meta-diskinternal;

}

on slave{

device/dev/drbd0;

disk/dev/hdb;

address192.168.2.124:7898;

meta-diskinternal;

}

}

1.全局配置文件

vi /etc/drbd.d/global_common.conf

global {

usage-count yes;

}

common {

protocol C;

startup {

wfc-timeout 240;

degr-wfc-timeout 240;

outdated-wfc-timeout 240;

}

disk {

on-io-error detach;

}

net {

cram-hmac-alg md5;

shared-secret "testdrbd";

}

syncer {

rate 330; #30% bandwith,官方推荐是30%的带宽

al-extents 3389;

verify-alg md5; ##pei he /etc/crontab 4 * * * * root /sbin/drbdadm verify resourceName,用于数据校验的,通过配合定时任务可以一起起作用。

}

}

2.资源配置文件

vi r0.res

resource r0{

on g105-1 {

device /dev/drbd0;

disk /dev/testvg/testlv;

address 192.168.100.177:7898;

meta-disk internal;

}

on g105-2 {

device /dev/drbd0;

disk /dev/VolGroup/testlv;

address 192.168.100.253:7898;

meta-disk internal;

}

}

三、启动

准备启动:
创建相应的元数据保存的数据块,两个机器都要执行一下:

drbdadm –c /etc/drbd.conf create-md all

or

drbdadm create-md r0

1.主备机都开户drbd服务:

/etc/init.d/drbd start

/etc/init.d/drbd start

2.启动后,先查看一下drbd的状态,目前显示是不一致,因为还没有指定主:

cat /proc/drbd

version: 8.3.16 (api:88/proto:86-97)

GIT-hash: a798fa7e274428a357657fb52f0ecf40192c1985 build by phil@Build64R6, 2014

-10-28 10:31:39

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:5242684

3.指定g105-1的drbd设备为主:在主机g105-1上执行命令:

drbdsetup /dev/drbd0 primary -o

4.再查看时,就会发现开始进行同步了:

version: 8.3.16 (api:88/proto:86-97)

GIT-hash: a798fa7e274428a357657fb52f0ecf40192c1985 build by phil@Build64R6, 2014-10-28 10:31:39

0: cs:SyncTarget ro:Secondary/Primary ds:Inconsistent/UpToDate C r-----

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

[>....................] sync'ed: 1.5% (5044/5116)M

finish: 3:47:13 speed: 360 (356) want: 330 K/sec

增加同步速度,drbdsetup /dev/drbd/by-res/r0 syncer -r 500M

四、使用drbd

注意:备机的drbd设备无法挂载,因为它由drbd负责。用于接收主机数据的。当然,为了测试,可以在主机无数据写入时,进行查看。

使用:将主机上的drbd设备挂载即可使用。当有数据变更时,它会自动同步到备用磁盘上。

备用磁盘要使用时,待数据同步完成后,将drbd停止掉,然后再挂载上就好。

五、主备切换

1.先将主上面的磁盘卸载掉并降级

umount /dev/drbd0

drbdadm secondary r0

2.在备机上升级为主机

drbdadm primary r0

3.挂载磁盘

mount /dev/drbd0 /media/mnt

停止DRBD服务切换

关闭主用节点服务,此时挂载的DRBD分区就自动在主用节点卸载了,操作如下:

[root@master-drbd/]#/etc/init.d/drbdstopStoppingallDRBDresources:

然后查看备用节点的DRBD状态:

[root@slave-drbd/]#cat/proc/drbdversion:8.3.13(api:88/proto:86-96)0:cs:WFConnectionro:Secondary/Unknownds:UpToDate/DUnknownCr-----ns:0nr:16dw:16dr:0al:0bm:0lo:0pe:0ua:0ap:0ep:1wo:boos:0

从输出可以看到,现在主用节点的状态变为“Unknown”,接着在备用节点执行切换命令:

[root@slave-drbd~]#drbdadmprimaryall

此时会出现如下报错信息:

2:Statechangefailed:(-7)RefusingtobePrimarywhilepeerisnotoutdatedCommand'drbdsetup2primary'terminatedwithexitcode11

因此,必须在备用节点执行如下命令:

[root@slave-drbd~]#drbdsetup/dev/drbd0primary-o

或者

[root@slave-drbd~]#drbdadm----overwrite-data-of-peerprimaryall

现在就可以正常切换了。接着查看此节点的状态,信息如下:

[root@slave-drbd/]#cat/proc/drbdversion:8.3.13(api:88/proto:86-96)0:cs:WFConnectionro:Primary/Unknownds:UpToDate/OutdatedCr----- ns:0nr:16dw:16dr:0al:0bm:0lo:0pe:0ua:0ap:0ep:1wo:boos:0

可以看出,原来的备用节点已经处于“Primary”状态了,而原来的主用节点由于DRBD服务未启动,还处于“Unknown”状态,在原来的主用节点服务启动后,会自动变为“Secondary”状态,无需在原来主用节点上再次执行切换到备用节点的命令。

最后,在新的主用节点上挂载DRBD设备即可完成主备节点的切换:

 [root@slave-drbd/]#mount/dev/drbd0/mnt