您的位置:首页 > 其它

DRBD安装配置、工作原理及故障恢复

2013-12-08 21:55 253 查看
一、DRBD简介DRBD为分布式块设备复制,DRBD是由内核模块和相关脚本而构成,用以构建高可用性的集群。其实现方式是通过网络来镜像整个设备。你可以把它看作是一种网络RAID1。它允许用户在远程机器上建立一个本地块设备的实时镜像。二、DRBD是如何工作的呢?(DRBD Primary)负责接收数据,把数据写到本地磁盘并发送给另一台主机(DRBD Secondary)。另一个主机再将数据存到自己的磁盘中。目前,DRBD每次只允许对一个节点进行读写访问,但这对于通常的故障切换高可用集群来说已经足够用了。有可能以后的版本支持两个节点进行读写存取。三、DRBD与HA的关系一个DRBD系统由两个节点构成,与HA集群类似,也有主节点和备用节点之分,在带有主要设备的节点上,应用程序和操作系统可以运行和访问DRBD设备(/dev/drbd*)。在主节点写入的数据通过DRBD设备存储到主节点的磁盘设备中,同时,这个数据也会自动发送到备用节点对应的DRBD设备,最终写入备用节点的磁盘设备上,在备用节点上,DRBD只是将数据从DRBD设备写入到备用节点的磁盘中。现在大部分的高可用性集群都会使用共享存储,而DRBD也可以作为一个共享存储设备,使用DRBD不需要太多的硬件投资。因为它在TCP/IP网络中运行,所以,利用DRBD作为共享存储设备,要节约很多成本,其性能与稳定性方面也不错。四、DRBD复制模式协议A:异步复制协议。一旦本地磁盘写入已经完成,数据包已在发送队列中,则写被认为是完成的。在一个节点发生故障时,可能发生数据丢失,因为被写入到远程节点上的数据可能仍在发送队列。尽管,在故障转移节点上的数据是一致的,但没有及时更新。这通常是用于地理上分开的节点协议B:内存同步(半同步)复制协议。一旦本地磁盘写入已完成且复制数据包达到了对等节点则认为写在主节点上被认为是完成的。数据丢失可能发生在参加的两个节点同时故障的情况下,因为在传输中的数据可能不会被提交到磁盘协议C:同步复制协议。只有在本地和远程节点的磁盘已经确认了写操作完成,写才被认为完成。没有任何数据丢失,所以这是一个群集节点的流行模式,但I / O吞吐量依赖于网络带宽
一般使用协议C,但选择C协议将影响流量,从而影响网络时延。为了数据可靠性,我们在生产环境使用时须慎重选项使用哪一种协议。四、 DRBD工作原理图DRBD是linux的内核的存储层中的一个分布式存储系统,可用使用DRBD在两台Linux服务器之间共享块设备,共享文件系统和数据。类似于一个网络RAID-1的功能,如图所示:


五、环境介绍及安装前准备

环境介绍:
系统版本:CentOS 6.4_x86_64DRBD软件:drbd-8.4.3-33.el6.x86_64 drbd-kmdl-2.6.32-358.el6-8.4.3-33.el6.x86_64 下载地址:http://pan.baidu.com/s/17sy7Uhttp://pan.baidu.com/s/1ov6MP 或者wget http://dl.atrpms.net/el6-x86_64/atrpms/stable/drbd-8.4.3-33.el6.x86_64.rpm
wget http://dl.atrpms.net/all/drbd-kmdl-2.6.32-358.14.1.el6-8.4.3-33.el6.x86_64.rpm
注意:这里两个软件的版本必须使用一致,而drbd-kmdl的版本要与当前系统的版本相对应,当然在实际应用中需要根据自己的系统平台下载符合需要的软件版本;查看系统版本 "uname -r"。
注意:也可以通过yum进行安装通过yum安装DRBD服务:[root@drbd1 ~]# yum -y install kmod-drbd83 drbd83检查DRBD是否安装成功:[root@drbd1 ~]# lsmod | grep -i drbddrbd2285283[root@drbd1 ~]#modprobe -l | grep -i drbd/lib/modules/2.6.18-194.11.1.el5/weak-updates/drbd83/drbd.ko安装成功之后/sbin目录下面有drbdadm,drbdmeta,drbdsetup命令,以及/etc/init.d/drbd启动脚本。安装前准备:1、每个节点的主机名称须跟"uname -n"命令的执行结果一样
2、两个节点的主机名称和对应的IP地址可以正常解析
3、配置epel的yum源,http://pan.baidu.com/s/1Dyc05
4、需要为两个节点分别提供大小相同的分区
六、安装并配置DRBD1、在NOD1与NOD2节点上安装DRBD软件包
2、查看DRBD配置文件
3、修改配置文件如下:修改配置文件如下:
注释: on-io-error <strategy>策略可能为以下选项之一detach 分离:这是默认和推荐的选项,如果在节点上发生底层的硬盘I/O错误,它会将设备运行在Diskless无盘模式下。pass_on:DRBD会将I/O错误报告到上层,在主节点上,它会将其报告给挂载的文件系统,但是在此节点上就往往忽略(因为此节点上没有可以报告的上层)。-local-in-error:调用本地磁盘I/O处理程序定义的命令;这需要有相应的local-io-error调用的资源处理程序处理错误的命令;这就给管理员有足够自由的权力命令或是脚本调用local-io-error处理I/O错误。4、添加资源文件:
5、将配置文件为NOD2提供一份
6、初始化资源并启动服务
7、资源的连接状态详细介绍7.1、如何查看资源连接状态?
7.2、资源的连接状态;一个资源可能有以下连接状态中的一种StandAlone 独立的:网络配置不可用;资源还没有被连接或是被管理断开(使用 drbdadm disconnect 命令),或是由于出现认证失败或是脑裂的情况Disconnecting 断开:断开只是临时状态,下一个状态是StandAlone独立的Unconnected 悬空:是尝试连接前的临时状态,可能下一个状态为WFconnection和WFReportParamsTimeout 超时:与对等节点连接超时,也是临时状态,下一个状态为Unconected悬空BrokerPipe:与对等节点连接丢失,也是临时状态,下一个状态为Unconected悬空NetworkFailure:与对等节点推动连接后的临时状态,下一个状态为Unconected悬空ProtocolError:与对等节点推动连接后的临时状态,下一个状态为Unconected悬空TearDown 拆解:临时状态,对等节点关闭,下一个状态为Unconected悬空WFConnection:等待和对等节点建立网络连接WFReportParams:已经建立TCP连接,本节点等待从对等节点传来的第一个网络包Connected 连接:DRBD已经建立连接,数据镜像现在可用,节点处于正常状态StartingSyncS:完全同步,有管理员发起的刚刚开始同步,未来可能的状态为SyncSource或PausedSyncSStartingSyncT:完全同步,有管理员发起的刚刚开始同步,下一状态为WFSyncUUIDWFBitMapS:部分同步刚刚开始,下一步可能的状态为SyncSource或PausedSyncSWFBitMapT:部分同步刚刚开始,下一步可能的状态为WFSyncUUIDWFSyncUUID:同步即将开始,下一步可能的状态为SyncTarget或PausedSyncTSyncSource:以本节点为同步源的同步正在进行SyncTarget:以本节点为同步目标的同步正在进行PausedSyncS:以本地节点是一个持续同步的源,但是目前同步已经暂停,可能是因为另外一个同步正在进行或是使用命令(drbdadm pause-sync)暂停了同步PausedSyncT:以本地节点为持续同步的目标,但是目前同步已经暂停,这可以是因为另外一个同步正在进行或是使用命令(drbdadm pause-sync)暂停了同步VerifyS:以本地节点为验证源的线上设备验证正在执行VerifyT:以本地节点为验证目标的线上设备验证正在执行7.3、资源角色查看资源角色命令
7.4、硬盘状态
查看硬盘状态命令
本地和对等节点的硬盘有可能为下列状态之一:Diskless 无盘:本地没有块设备分配给DRBD使用,这表示没有可用的设备,或者使用drbdadm命令手工分离或是底层的I/O错误导致自动分离Attaching:读取无数据时候的瞬间状态Failed 失败:本地块设备报告I/O错误的下一个状态,其下一个状态为Diskless无盘Negotiating:在已经连接的DRBD设置进行Attach读取无数据前的瞬间状态Inconsistent:数据是不一致的,在两个节点上(初始的完全同步前)这种状态出现后立即创建一个新的资源。此外,在同步期间(同步目标)在一个节点上出现这种状态Outdated:数据资源是一致的,但是已经过时DUnknown:当对等节点网络连接不可用时出现这种状态Consistent:一个没有连接的节点数据一致,当建立连接时,它决定数据是UpToDate或是OutdatedUpToDate:一致的最新的数据状态,这个状态为正常状态7.5、启用和禁用资源
7.6、升级和降级资源
8、初始化设备同步8.1、选择一个初始同步源;如果是新初始化的或是空盘,这个选择可以是任意的,但是如果其中的一个节点已经在使用并包含有用的数据,那么选择同步源是至关重要的;如果选错了初始化同步方向,就会造成数据丢失,因此需要十分小心8.2、启动初始化完全同步,这一步只能在初始化资源配置的一个节点上进行,并作为同步源选择的节点上;命令如下:
9、创建文件系统9.1、文件系统只能挂载在主(Primary)节点上,因此在设置好主节点后才可以对DRBD设备进行格式化操作
9.2、在挂载目录中创建一个测试文件并卸载;然后
9.3、切换主备节点
9.4、挂载设备并验证文件是否存在
七、DRBD脑裂的模拟及修复注释:我们还接着上面的实验继续进行,现在NOD2为主节点而NOD1为备节点1、断开主(parmary)节点;关机、断开网络或重新配置其他的IP都可以;这里选择的是断开网络2、查看两节点状态
3、将NOD1节点升级为主(primary)节点并挂载资源
4、假如原来的主(primary)节点修复好重新上线了,这时出现了脑裂情况
5、再次查看两节点的状态
6、查看NOD1与NOD2连接状态
7、查看DRBD的服务状态
8、在NOD1备用节点处理办法
9、需要在NOD2节点上重新建立连接资源
注意:特别提醒,如果是单主模式,资源只能在主(Primary)节点上挂载使用,而且不建议手动切换主备节点。到此DRBD的安装配置及故障修复已结束,DRBD的双主模式一般情况不会用到,这里也不再介绍双主模式的配置。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: