drbd之学习路线

author author     2022-09-25     480

关键词:






二、DRBD 是什么

       简单的说,DRBD (Distributed Replicated Block Device,分布式复制块设备)是由内核模块和相关脚本而构成,用以构建高可用性的集群。其实现方式是通过网络来镜像整个设备。你可以把它看作是一种网络RAID1。




技术分享


四、DRBD 工作原理

       每个设备(drbd 提供了不止一个设备)都有一个状态,可能是‘主’状态或‘从’状态。在主节点上,应用程序应能运行和访问drbd设备(/dev/drbd*)。每次写入都会发往本地磁盘设备和从节点设备中。从节点只能简单地把数据写入它的磁盘设备上。 读取数据通常在本地进行。 如果主节点发生故障,心跳(heartbeat或corosync)将会把从节点转换到主状态,并启动其上的应用程序。(如果您将它和无日志FS 一起使用,则需要运行fsck)。如果发生故障的节点恢复工作,它就会成为新的从节点,而且必须使自己的内容与主节点的内容保持同步。当然,这些操作不会干扰到后台的服务。




DRBD是一个用软件实现的、无共享的、服务器之间镜像块设备内容的存储复制解决方案。












https://baike.baidu.com/item/DRBD/7342076?fr=aladdin




http://docs.linbit.com/




















DRBD编译安装与配置

https://www.centos.bz/2012/02/drbd-compile-install-deploy/





配置DRBD出现错误总结

https://www.centos.bz/2012/02/drbd-erros-faq/






Linux 高可用(HA)集群之DRBD详解

http://freeloda.blog.51cto.com/2033581/1275384


双机热备+负载均衡线上方案


(Heartbeat+DRBD+NFS+Keepalived+Lnmp)

https://www.centos.bz/2012/03/heartbeat-drbd-nfs-keepalived-lnmp/


使用heartbeat实现DRBD主从自动切换

https://www.centos.bz/2012/03/achieve-drbd-high-availability-with-heartbeat/








https://www.centos.bz/tag/drbd/



目录

 一、DRBD简介

 二、DRBD的特性

 三、DRBD的用户空间管理工具

 四、DRBD的模式

 五、DRBD的同步协议

 六、DRBD的资源

 七、DRBD的配置文件详解

 八、实战,使用drbd+mysql+Corosync来实现mysql的高可用集群解决方案

 

一、DRBD简介

DRBD:叫做分布式复制块设备,这是一种基于软件,无共享,复制的解决方案。在服务器之间的块设备(包括硬盘、分区、逻辑卷)进行镜像。也就是说当某一个应用程序完成写操作后,它提交的数据不仅仅会保存在本地块设备上,DRBD也会将这份数据复制一份,通过网络传输到另一个节点的块设备上,这样,两个节点上的块设备上的数据将会保存一致,这就是镜像功能。


二、DRBD的特性

DRBD具有如下特性:

1)实时性:当某个应用程序完成对数据的修改时,复制功能立即发生

2)透明性:应用程序的数据存储在镜像块设备上是独立透明的,他们的数据在两个节点上都保存一份,因此,无论哪一台服务器宕机,都不会影响应用程序读取数据的操作,所以说是透明的。

3)同步镜像和异步镜像:同步镜像表示当应用程序提交本地的写操作后,数据后会同步写到两个节点上去;异步镜像表示当应用程序提交写操作后,只有当本地的节点上完成写操作后,另一个节点才可以完成写操作。


三、drbd的用户空间管理工具

为了能够配置和管理drbd的资源,drbd提供了一些管理工具与内核模块进行通信

drbdadm:高级的DRBD程序管理套件工具。它从配置文件/etc/drbd.conf中获取所有配置参数。drbdadm为drbdsetup和drbdmeta两个命令充当程序的前端应用,执行drbdadm实际是执行的drbdsetup和drbdeta两个命令。

drbdsetup:drbdsetup可以让用户配置已经加载在内核中运行的DRBD模块,它是底层的DRBD程序管理套件工具。使用该命令时,所有的配置参数都需要直接在命令行中定义,虽然命令很灵活,但是大大的降低了命令的简单易用性,因此很多的用户很少使用drbdsetup。

drbdmeta:drbdmeta允许用户创建、转储、还原和修改drbd的元数据结构。这个命令也是用户极少用到。


四、DRBD的模式

DRBD有2中模式,一种是DRBD的主从模式,另一种是DRBD的双主模式

1、DRBD的主从模式

这种模式下,其中一个节点作为主节点,另一个节点作为从节点。其中主节点可以执行读、写操作;从节点不可以挂载文件系统,因此,也不可以执行读写操作。在这种模式下,资源在任何时间只能存储在主节点上。这种模式可用在任何的文件系统上(EXT3、EXT4、XFS等等)。默认这种模式下,一旦主节点发生故障,从节点需要手工将资源进行转移,且主节点变成从节点和从节点变成主节点需要手动进行切换。不能自动进行转移,因此比较麻烦。

为了解决手动将资源和节点进行转移,可以将DRBD做成高可用集群的资源代理(RA),这样一旦其中的一个节点宕机,资源会自动转移到另一个节点,从而保证服务的连续性。

2、DRBD的双主模式

这是DRBD8.0之后的新特性

在双主模式下,任何资源在任何特定的时间都存在两个主节点。这种模式需要一个共享的集群文件系统,利用分布式的锁机制进行管理,如GFS和OCFS2。部署双主模式时,DRBD可以是负载均衡的集群,这就需要从两个并发的主节点中选取一个首选的访问数据。这种模式默认是禁用的,如果要是用的话必须在配置文件中进行声明。


五、DRBD的同步协议

DRBD的复制功能就是将应用程序提交的数据一份保存在本地节点,一份复制传输保存在另一个节点上。但是DRBD需要对传输的数据进行确认以便保证另一个节点的写操作完成,就需要用到DRBD的同步协议,DRBD同步协议有三种:

协议A:数据在本地完成写操作且数据已经发送到TCP/IP协议栈的队列中,则认为写操作完成。如果本地节点的写操作完成,此时本地节点发生故障,而数据还处在TCP/IP队列中,则数据不会发送到对端节点上。因此,两个节点的数据将不会保持一致。这种协议虽然高效,但是并不能保证数据的可靠性。

协议B:数据在本地完成写操作且数据已到达对端节点则认为写操作完成。如果两个节点同时发生故障,即使数据到达对端节点,这种方式同样也会导致在对端节点和本地节点的数据不一致现象,也不具有可靠性。

协议C:只有当本地节点的磁盘和对端节点的磁盘都完成了写操作,才认为写操作完成。这是集群流行的一种方式,应用也是最多的,这种方式虽然不高效,但是最可靠。

 

六、DRBD的资源

在DRBD中,资源是所有可复制移动存储设备的总称,它包括:

资源名称:资源名称可以是除了空白字符以外的任意ASCII码字符

DRBD设备:DRBD的虚拟块设备。在双方节点上,DRBD设备的设备文件命名方式;一般为/dev/drbdN,其主设备号147,N是次设备号

磁盘配置:DRBD内部应用需要本地数据副本,元数据。在双方节点上,为各自提供的存储设备。

网络配置:双方数据同步时所使用的网络属性;

 

七、DRBD的配置文件详解

drbd的主配置文件为/etc/drbd.conf;为了管理的便捷性,目前通常会将些配置文件分成多个部分,且都保存至/etc/drbd.d目录中,主配置文件中仅使用"include"指令将这些配置文件片断整合起来。通常,/etc/drbd.d目录中的配置文件为global_common.conf和所有以.res结尾的文件。其中global_common.conf中主要定义global段和common段,而每一个.res的文件用于定义一个资源。

在配置文件中,global段仅能出现一次,且如果所有的配置信息都保存至同一个配置文件中而不分开为多个文件的话,global段必须位于配置文件的最开始处。目前global段中可以定义的参数仅有minor-count, dialog-refresh, disable-ip-verification和usage-count。

common段则用于定义被每一个资源默认继承的参数,可以在资源定义中使用的参数都可以在common段中定义。实际应用中,common段并非必须,但建议将多个资源共享的参数定义为common段中的参数以降低配置文件的复杂度。

resource段则用于定义drbd资源,每个资源通常定义在一个单独的位于/etc/drbd.d目录中的以.res结尾的文件中。资源在定义时必须为其命名,名字可以由非空白的ASCII字符组成。每一个资源段的定义中至少要包含两个host子段,以定义此资源关联至的节点,其它参数均可以从common段或drbd的默认中进行继承而无须定义。

http://blog.csdn.net/u014421556/article/details/52925442









本文出自 “运维自动化” 博客,请务必保留此出处http://shower.blog.51cto.com/4926872/1977372

分布式存储之学习路线

本文出自“运维自动化”博客,请务必保留此出处http://shower.blog.51cto.com/4926872/1973262 查看详情

分布式存储之学习路线

本文出自“运维自动化”博客,请务必保留此出处http://shower.blog.51cto.com/4926872/1973266 查看详情

压力测试之学习路线

怎样正确做Web应用的压力测试?https://www.zhihu.com/question/19867883本文出自“运维自动化”博客,请务必保留此出处http://shower.blog.51cto.com/4926872/1981132 查看详情

markdown之学习路线

Markdown:Basics(快速入门)http://www.appinn.com/markdown/basic.html本文出自“运维自动化”博客,请务必保留此出处http://shower.blog.51cto.com/4926872/1982681 查看详情

dhcp之网络服务学习路线

TheDynamicHostConfigurationProtocol(DHCP)isastandardizednetworkprotocolusedonInternetProtocol(IP)networks.TheDHCPiscontrolledbyaDHCPserverthatdynamicallydistributesnetworkconfigurationparameters,sucha 查看详情

devops之学习路线

和Atlassian一起探索DevOpshttp://www.confluence.cn/pages/viewpage.action?pageId=9275113DevOps文化建设工具http://www.confluence.cn/pages/viewpage.action?pageId=9275113本文出自“运维自动化”博客,请务必保留此出处http://shower.blog.51cto 查看详情

zpanel主机控制面板之学习路线

Welcometotheofficial ZPanel website. ZPanel isafreeandcompletewebhostingcontrolpanelforMicrosoftWindowsandPOSIX(Linux,UNIXandMacOSX)basedservers ZPanel iswrittenin P 查看详情

pylint之tutorial学习路线

http://www.jb51.net/article/31185.htmpylint&tutorialhttp://liujinguang.blog.51cto.com/9906588/1612532/pylint&installhttp://blog.csdn.net/972301/article/details/58104788pylint&pycharmhttp:/ 查看详情

drbd学习

1drbd是内核级别文件--drbd--磁盘2准备环境双网卡数据口和传递drbd心跳线[[email protected]~]#ifconfig|grep-A1etheth0   Linkencap:Ethernet HWaddr00:0C:29:65:14:0F      inetadd 查看详情

springboot学习路线大全之springboot与分布式保姆式教程

SpringBoot学习路线大全之SpringBoot与分布式【保姆式教程】值得一看 查看详情

springboot学习路线大全之springboot与分布式保姆式教程

SpringBoot学习路线大全之SpringBoot与分布式【保姆式教程】值得一看 查看详情

bgp之协议学习路线

https://baike.baidu.com/item/%E8%BE%B9%E7%95%8C%E7%BD%91%E5%85%B3%E5%8D%8F%E8%AE%AE/2987527?fr=aladdin&fromid=91408&fromtitle=bgphttp://www.360doc.com/content/10/1230/16/2614615_82680038.shtml 查看详情

pytorch之人工智能学习路线

TyTorchhttp://pytorch.org/官网http://pytorch.org/tutorials/入门教程超简单!pytorch入门教程(一):Tensorhttp://www.jianshu.com/p/5ae644748f21PyTorch深度学习:60分钟入门(Translation)https://zhuanlan.zhihu.com/p/25572330Tensorsan 查看详情

java菜鸟到大牛学习路线之高级篇

这是一套java菜鸟到大牛的学习路线之高级教程,由本站工作了10年的资深Java架构师整理。     01-java高级架构师设计-基础深入      J2SE深入讲解      Java多线程与并发... 查看详情

企业级网络实战之学习路线

VRRPHSRP关于网络层的负载均衡和热备        http://dog250.blog.51cto.com/2466061/556775路由器和交换机的区别        http://chen908113385.blog.51ct 查看详情

spark修炼之道——spark学习路线课程大纲

课程内容Spark修炼之道(基础篇)——Linux基础(15讲)、Akka分布式编程(8讲)Spark修炼之道(进阶篇)——Spark入门到精通(30讲)Spark修炼之道(实战篇)——Spark应用开发实战篇(20讲)Spark修炼之道(高级篇)——Spark源代码... 查看详情

codepipeline之学习路线

CodePipeline联动容器的DevOps实践 我觉得就是要开发者和服务运营人员之间能够有一种互相延伸的能力,开发者可以参与到运营的工作里边,运营也可以参与到开发设计工作当中,以及他们之间的互相反馈信息能力,对用户的价... 查看详情

soa架构之学习路线

SOA (面向服务的架构) 编辑面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现... 查看详情