drbd+heartbeat构建分布式存储.docx
- 文档编号:8473197
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:8
- 大小:19.21KB
drbd+heartbeat构建分布式存储.docx
《drbd+heartbeat构建分布式存储.docx》由会员分享,可在线阅读,更多相关《drbd+heartbeat构建分布式存储.docx(8页珍藏版)》请在冰豆网上搜索。
drbd+heartbeat构建分布式存储
一、部署
Role hostname IP GatewayLVM
Primary node2 eth0:
192.168.32.32/24 192.168.32.254/dev/vg01/lv01
eth1:
10.160.100.32/24
Secondary node2 eth0:
192.168.32.33/24 192.168.32.254/dev/vg01/lv01
eth1:
10.160.100.33/24
二、软件安装
1.drbd安装
[root@node3~]#rpm-ivhdrbd83-8.3.10-2.el5.centos.i386.rpm
2.heartbeat的安装(略)
三、drbd配置(两节点drbd配置文件完全一样)
1.主配置文件(/etc/drbd.conf)
[root@node2~]#vim/etc/drbd.conf
#Youcanfindanexamplein /usr/share/doc/drbd.../drbd.conf.example
include"drbd.d/global_common.conf";
include"drbd.d/*.res";
#drbd的主配置文件为/etc/drbd.conf;为了管理的便捷性,目前通常会将些配置文件分成多个部分,且都保存至/etc/drbd.d目录中,主配置文件中仅使用"include"指令将这些配置文件片断整合起来。
通常,/etc/drbd.d目录中的配置文件为global_common.conf和所有以.res结尾的文件。
其中global_common.conf中主要定义global段和common段,而每一个.res的文件用于定义一个资源。
2.全局配置文件(/etc/drbd.d/global_common.conf)
[root@node2~]#vim/etc/drbd.d/global_common.conf
global{ #global段仅能出现一次,global段必须位于配置文件的最开始处
usage-countno;
#是否参与DRBD使用者统计,默认为yes。
#minor-countdialog-refreshdisable-ip-verification
#minor-count:
从(设备)个数,取值范围1~255,默认值为32。
该选项设定了允许定义的resource个数,当要定义的resource超过了此选项的设定时,需要重新载入drbd内核模块。
#dialog-refreshtime:
time取值0,或任一正数。
默认值为1。
我没理解官方对该选项的解释。
很少见到此选项被启用。
#disable-ip-verification:
是否禁用ip检查
}
common{ #common段则用于定义被每一个资源默认继承的参数,可以在资源定义中使用的参数都可以在common段中定义;非必须。
protocolC; #使用DRBD的第三种同步协议,写I/O到达本地磁盘和远程节点的磁盘之后,返回操作成功
#procotoA:
写I/O到达本地磁盘和本地的TCP发送缓存区之后,返回操作成功
#protocolB:
写I/O到达本地磁盘和远程节点的缓存之后,返回操作成功
handlers{ #用来定义一系列处理器,用来回应特定事件。
fence-peer"/usr/lib/drbd/crm-fence-peer.sh";
#outdate-peer"/usr/lib/drbd/obliterate-peer.sh";
split-brain"/usr/lib/drbd/notify-split-brain.shroot";
out-of-sync"/usr/lib/drbd/notify-out-of-sync.shroot";
after-resync-target/usr/lib/drbd/unsnapshot-resync-target-lvm.sh;
}
startup{
#become-primary-onboth;
wfc-timeout120; #该选项设定一个时间值,单位是秒。
在启用DRBD块时,初始化脚本drbd会阻塞启动进程的运行,直到对等节点的出现。
该选项就是用来限制这个等待时间的,默认为0,即不限制,永远等待
degr-wfc-timeout120; #选项也设定一个时间值,单位为秒。
也是用于限制等待时间,只是作用的情形不同:
它作用于一个降级集群(即那些只剩下一个节点的集群)在重启时的等待时间。
}
disk{
on-io-errordetach;
#on-io-error选项:
此选项设定了一个策略,如果底层设备向上层设备报告发生I/O错误,将按照该策略进行处理。
有效的策略包括:
#pass_on:
把I/O错误报告给上层设备。
如果错误发生在primary节点,把它报告给文件系统,由上层设备处理这些错误(例如,它会导致文件系统以只读方式重新挂载),它可能会导致drbd停止提供服务;如果发生在secondary节点,则忽略该错误(因为secondary节点没有上层设备可以报告)。
该策略曾经是默认策略,但现在已被detach所取代。
#call-local-io-error:
调用预定义的本地local-io-error脚本进行处理。
该策略需要在resource配置段的handlers部分,预定义一个相应的local-io-error命令调用。
该策略完全由管理员通过local-io-error命令(或脚本)调用来控制如何处理I/O错误。
#detach:
发生I/O错误的节点将放弃底层设备,以disklessmode继续工作。
在disklessmode下,只要还有网络连接,drbd将从secondarynode读写数据,而不需要failover。
该策略会导致一定的损失,但好处也很明显,drbd服务不会中断。
官方推荐和默认策略。
fencingresource-only;
#fencing选项:
该选项设定一个策略来避免splitbrain的状况。
有效的策略包括:
#dont-care:
默认策略。
不采取任何隔离措施。
#resource-only:
在此策略下,如果一个节点处于splitbrain状态,它将尝试隔离对等端的磁盘。
这个操作通过调用fence-peer处理器来实现。
fence-peer处理器将通过其它通信路径到达对等节点,并在这个对等节点上调用drbdadmoutdateres命令。
#resource-and-stonith:
在此策略下,如果一个节点处于splitbrain状态,它将停止I/O操作,并调用fence-peer处理器。
处理器通过其它通信路径到达对等节点,并在这个对等节点上调用drbdadmoutdateres命令。
如果无法到达对等节点,它将向对等端发送关机命令。
一旦问题解决,I/O操作将重新进行。
如果处理器失败,你可以使用resume-io命令来重新开始I/O操作
}
net{
cram-hmac-alg"sha1";
shared-secret"Myhttpd";
#DRBD同步时使用的验证方式和密码
}
syncer{
rate20M; #同步时网络速率的最大值
}
3.资源配置文件(/etc/drbd.d/*.conf)
[root@node2~]#vim/etc/drbd.d/web.res
resourceweb{ #资源名
onnode2{ #主机说明,必须以on开头,后面接hostname(uname-n)
device/dev/drbd0; #drbd生成的磁盘分区
disk /dev/vg01/lv01; #drbd使用的磁盘逻辑分区(lvm)
address10.160.100.32:
7788; #通信协议端口
meta-diskinternal; #drbd的元数据存储方式
}
onnode3{
device/dev/drbd0;
disk /dev/vg01/lv01;
address10.160.100.33:
7788;
meta-diskinternal;
}
}
四.在两个节点上初始化已定义的资源并启动服务:
1.初始化资源,在node2和node3上分别执行:
[root@node2~]#drbdadmcreate-mdweb #可用all表示为所有资源创建元数据库信息
#如出现创建不成功的情况,这时需覆盖文件系统中的设备块信息,可进行如下操作:
[root@node2~]#ddif=/dev/zeroof=/dev/vg01/lv01bs=1Mcount=128
#执行完dd命令后,再重新创建
2.启动服务,在node2和node3上分别执行:
[root@node2~]#/etc/init.d/drbdstart
3.查看启动状态:
[root@node2ha.d]#cat/proc/drbd
version:
8.3.10(api:
88/proto:
86-96)
GIT-hash:
5c0b0469666682443d4785d90a2c603378f9017bbuildbymockbuild@builder17.centos.org,2011-02-1110:
05:
34
0:
cs:
Connectedro:
Primary/Secondaryds:
UpToDate/UpToDateCr-----
ns:
140768nr:
12dw:
140780dr:
1925al:
145bm:
0lo:
0pe:
0ua:
0ap:
0ep:
1wo:
foos:
0
#ro:
角色信息
#ds:
磁盘状态,显示数据是否一致,(UpToDate/UpToDate表面同步没有延时)
#ns:
网络发送的数据包,单位Kb
#dw:
磁盘写操作
#dr:
磁盘读操作
#也可以使用drbd-overview命令来查看:
[root@node2~]#drbd-overview
0:
web ConnectedSecondary/SecondaryInconsistent/InconsistentCr----
#从上面的信息中可以看出此时两个节点均处于Secondary状态。
需要将其中一个节点设置为Primary。
4.设置节点为Primary
[root@node2~]#drbdsetup/dev/drbd0primary-o
#也可以在要设置为Primary的节点上使用如下命令来设置主节点:
[root@node2~]#drbdadm----overwrite-data-of-peerprimaryweb
#以后再设置节点为primary节点是可用如下命名:
[root@node2~]#drbdadmprimaryweb
[root@node2~]#drbd-overview
#再次查看状态,可以发现数据同步过程已经开始,等数据同步完成以后再次查看状态,可以发现节点已经牌实时状态,且节点已经有了主次。
5、创建文件系统
文件系统的挂载只能在Primary节点进行,因此,也只有在设置了主节点后才能对drbd设备进行格式化:
[root@node2~]#mke2fs-j-LDRBD/dev/drbd0
[root@node2~]#mount/dev/drbd0/var/www/html
6、切换Primary和Secondary节点
对主Primary/Secondary模型的drbd服务来讲,在某个时刻只能有一个节点为Primary,因此,要切换两个节点的角色,只能在先将原有的Primary节点设置为Secondary后,才能原来的Secondary节点设置为Primary:
[root@node2~]#touch/var/www/html/index{1,2,3}.html
[root@node2~]#umount/mnt/drbd
[root@node2~]#drbdadmsecondaryweb
[root@node2~]#drbd-overview
0:
web ConnectedSecondary/SecondaryUpToDate/UpToDateCr----
[root@node3~]#drbdadmprimaryweb
[root@node3~]#drbd-overview
0:
web ConnectedPrimary/SecondaryUpToDate/UpToDateCr----
[root@node3~]#mount/dev/drbd0/var/www/html
使用下面的命令查看在此前在主节点上复制至此设备的文件是否存在:
[root@node3~]#ls/var/www/html
index1.htmlindex2.htmlindex3.html
五.drbd的相关问题处理
1.脑裂之后的手工处理
(1)首先在确定要作为secondary的节点上面切换成secondary并放弃该资源的数据:
drbdadmdisconnectresource_name/all
drbdadmsecondaryresource_name/all
drbdadm----discard-my-dataconnectresource_name/all
(2)在要作为primary的节点重新连接secondary(如果这个节点当前的连接状态为WFConnection的话,可以省略)
drbdadmconnectresource_name/all
2.主从都StandAlone的情况
重启服务仍然无法链接成功,可以在两端分别执行:
drbdadmdisconnectresource_name/all
drbdadmconnectresource_name/all
六.drbd相关命令的使用
1.drbdsetup
drbsetup是drbd程序套件中的底层配置工具。
您可以使用该工具把低层模块设备和drbd设备联系起来、安装drbd设备对,以便镜像它们的低层模块设备和检查运行drbd设备的配置。
如:
在节点node2上,您可以发出以下命令
[root@node2~]#insmoddrbd.o
[root@node2~]#drbdsetup/dev/drbd0disk/dev/vg01/lv01
[root@node2~]#drbdsetup/dev/drbd0net10.160.100.3310.160.100.32B #B:
同步协议
在节点node3上,您可以发出以下命令:
[root@node2~]#insmoddrbd.o
[root@node2~]#drbdsetup/dev/drbd0disk/dev/vg01/lv01
[root@node2~]#drbdsetup/dev/drbd0net10.160.100.3210.160.100.33B
[root@node2~]#drbdsetup/dev/drbd0 primary
此时,您就可以像在其他设备一样使用/dev/drbd0了。
七.heartbeat的配置(两节点配置一样)
1.ha.cf配置略
2.authkeys配置略
3.haresource配置
[root@node2ha.d]#vim/etc/ha.d/haresources
node2drbddisk:
:
webFilesystem:
:
/dev/drbd0:
:
/var/www/html
#drbddisk:
heartbeat默认提供的DRBD管理脚本,web是drbd的资源
4.启动heartbeat
[root@node2ha.d]#serviceheartbeatstart
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- drbd heartbeat 构建 分布式 存储