基本介绍
drbd(distrbuted replicated block device):分布式复制块设备
类似 rsync + inotify 的架构:inotify基于文件系统上层,当文件系统中有数据发生变化,就调用rsync服务,将文件系统中的文件同步到备库。
涉及对象
drbd 中的块设备可以是磁盘分区,lvm逻辑卷,或整块磁盘等。
原理
drbd软件工作位置是在文件系统层级以下,比文件系统更加靠近操作系统内核及IO栈。
基于网络的raid-1,当我们将数据写入本地磁盘系统时,数据还会被实时发送到网络中另一台主机中,以相同的形式记录在另一个磁盘系统中,使得本地(主节点)与远程主机(备节点)的数据保持实时数据同步。
如果本地系统出现故障,那么远程主机上还会保留有一份和主节点相同的数据备份可以继续使用。不会数据不会丢失。还会提升访问数据的用户访问体验(直接接管提供服务,降低宕机修复时间)。drbd服务的作用类似于磁盘阵形里的raid1功能,就相当于把网络中的两台服务器做成了类似磁盘阵列里的raid1一样。
Drbd工作原理图:
1.SERVICE 将数据写入==> FILE SYSTEM ==> BUFFER CACHE ==> DRBD
2.DRBD分两条路走,一条是通过磁盘驱动DISK DRIVER写入到磁盘
3.另一条通过tcp/ip协议,将数据通过网卡将数据发送到备节点...
两种工作模式
1)实时同步模式:
当数据写到本地磁盘和远端服务器磁盘都成功后才会返回成功写入。DRBD服务协议C级别就是这种模式,可以防止本地和远端数据丢失和不一致,此种模式是生产环境中最常用的模式。
2)异步同步模式:
当数据写入到本地服务器成功后就返回成功写入,不管远端服务器是否写入成功。
还可能是数据写入到本地服务器或远端服的buffer成功后,返回成功,就是DRBD服务协议的A,B级别
提示:在nfs网络文件系统的时候也有类似的参数和功能。例如:nfs服务参数sync和async,mount挂载参数也有sync和async。
DRBD的3种同步复制协议
协议A:异步复制协议。本地写成功后立即返回,数据放在发送BUFFER中,可能丢失。
协议B:内存同步(半同步)复制协议。本地写成功并将数据发送到对方后立即返回,如果双机掉电,数据可能丢失(mysql5.5以上支持)。
协议C:同步复制协议。本地和对方服务器磁盘都写成功确认后返回成功。如果单机掉电后单机磁盘损坏,数据都不会丢失。
工作中一般用协议C。选择协议将影响流量,从而影响网络延时。
DRBD的生产应用模式
单主模式及主备模式,为典型的高可用性集群方案。
复主模式:需要采用共享cluster文件系统,如gfs和ocfs2。用于需要从2个节点并发访问数据的场合,需要特别配置。
DRBD的企业应用场景
生产场景中会有很多基于高可用服务器对drbd的数据同步解决方案。
例如:heartbeat+drbd+nfs/mfs/gfs,heartbeat+drbd+mysql/oracle等。实际上drbd可以配合任意需要数据同步的所有服务的应用场景。
相关数据同步工具介绍
1) Rsync(sersync,inotify,lsyncd)
2) Scp
3) Nc
4) Nfs
5) Union双机同步
6) Csync2多机同步
7) 软件自身同步机制(mysql,oracle,mongdb,ttserver,redis...)
8) Drbd
补充:
Oracle dg分为基于物理block和逻辑block
逻辑:基于sql,类似