DRBD 集群高可用

  • ​​一、什么是DRBD ?​​
  • ​​二、DRBD是如何工作的 ?​​
  • ​​三、DRBD 应用场景​​

一、什么是DRBD ?

DRBD 是由内核模块和相关脚本而构成,用以构建高可用性的集群。其实现方式是通过网络来镜像整个设备。它允许用户在远程机器上建立一个本地块设备的实时镜像。与心跳连接结合使用,也可以把它看作是一种网络RAID。

二、DRBD是如何工作的 ?

Drbd 负责接收数据,把数据写到本地磁盘,然后发送给另一个主机。另一个主机再将数据存到自己的磁盘中。目前,drbd 每次只允许对一个节点进行读写访问,这对于通常的故障切换高可用性集群来讲已经足够用了。以后的版本将支持两个节点进行读写存取。

** Drbd的工作原理图**

存储高可用 -- DRBD 集群高可用_运维


配合heartbeat工作图

存储高可用 -- DRBD 集群高可用_数据_02


drbd与现在的HA集群的关系

一个drbd系统由两个以上节点构成,与HA集群类似,也有主用节点和备用节点之分,在带有主要设备的节点上,应用程序和操作系统可以运行和访问drbd设备(/dev/nbX)。
在主节点写入的数据通过drbd设备存储到主节点的磁盘设备中,同时,这个数据也会自动发送到备用节点相应的drbd设备,最终写入备用节点的磁盘设备中,在备用节点上,drbd只是将数据从drbd设备写入到备用节点的磁盘设备中。
大部分现行高可用性集群都会使用共享存储,而Drbd也可以作为一个共享存储设备,使用drbd不需要任何硬件的投资。因为它在IP网络中运行,所以,利用drbd作为共享存储设备,要节约很多成本,因为在价格上IP网络要比专用的存储网络经济的多。

DRBD内部实现原理

存储高可用 -- DRBD 集群高可用_存储高可用_03


DRBD协议说明

  • 数据一旦写入磁盘并发送到网络中就认为完成了写入操作.
  • 收到接收确认就认为完成了写入操作.
  • 收到写入确认就认为完成了写入操作.

drbd设备的三个进程

每个drbd设备会有三个进程:

  • drbd0_worker是drbd0的主要进程,
  • drbd0_asender是primary上drbd0的数据发送进程,
  • drbd0_receiver是secondary上drbd0的数据接收进程

Drbd的工作模式和复制协议支持

单主模式:典型的高可靠性集群方案。
复主模式:需要采用cluster文件系统,如GFS和OCFS2。用于需要从两个节点并发访问数据的场合,需要特别的配置。
复制模式:3种模式:
协议A:异步复制协议。本地写成功立即返回,数据放在发送buffer中,可能丢失。
协议B:内存同步(半同步)复制协议。本地写成功并将数据发送到对方后立即返回,如果双机掉电,数据可能丢失。
协议C:同步复制协议。本地和对方服务器磁盘都写成功确认后返回成功。如果单机掉电或单机磁盘损坏,则数据不会丢失。
工作中一般用协议C。选择协议将影响流量,从而影响网络时延。

三、DRBD 应用场景

Drbd可以做什么

同步镜像重要数据
如前所述,drbd是工作在磁盘分区,逻辑卷等块设备之上的,它可以通过复制数据块把数据从本地磁盘同步到远端服务器磁盘内。
实时同步模式:
当写入数据到本地和远端所以服务器都成功后才返回成功写入。Drbd服务的协议C级别就是这种同步模式,可以防止本地和远端数据丢失和不一致。
非实时同步模式(异步同步):
当数据写入到本地服务器成功后就返回成功写入,不管远端服务器是否写入成功。
还可能是数据写入到本地服务器和远端的BUFFER成功后,返回成功。
提示:nfs也有类似的参数和功能。

Drbd的应用场合

生产场景中会有很多基于drbd的数据同步解决方案,例如:heartbeat+drbd+nfs/mfs/gfs,heartbeat+drbd+mysql/oracle等。实际上drbd可以配合任意需要数据同步的所有服务的应用场景。