一、安装
##在之前,将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的监听端口,用于与另一台主机通信
}
on slave{
device/dev/drbd0;
disk/dev/hdb;
address192.168.2.124:7898;
}
}
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;
}
on g105-2 {
device /dev/drbd0;
disk /dev/VolGroup/testlv;
address 192.168.100.253:7898;
}
}
三、启动
准备启动:
创建相应的元数据保存的数据块,两个机器都要执行一下:
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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。