预计阅读本页时间:-
7.1.8 高可用块设备DRBD
DRBD(Distributed Replicated Block Device)是一种块设备,可以用于高可用(HA)软件之中。它的功能类似于一个网络RAID-1(工作原理见图7-2)。当你将数据写入本地文件系统时,该数据还将被发送到网络中的另一台主机上,并以相同的形式记录在一个文件系统中。本地(主节点)与远程主机(备节点)的数据可以保证实时同步。当本地系统出现故障时,远程主机上还保留着一份相同的数据,可以继续使用。在高可用(HA)软件中使用DRBD功能,可以代替一个共享盘阵。因为数据同时存在于本地主机和远程主机上,切换时,远程主机只要使用它上面的那份备份数据就可以继续服务了。
DRBD的工作原理如图7-2所示。
广告:个人专属 VPN,独立 IP,无限流量,多机房切换,还可以屏蔽广告和恶意软件,每月最低仅 5 美元
图7-2 DRBD工作原理图
DRBD支持3种不同的复制模式,允许3种程度的复制同步。
·协议A:异步复制协议。只要主节点完成本地写操作就认为写操作完成,并且需要复制的数据包会被存放到本地TCP发送缓存中。当发生Failover故障时,在Standby节点的数据仍被认为是稳固的,然而,在故障发生的时间点上很多最新的更新操作会丢失。
·协议B:内存同步(半同步,semi-synchronous)复制协议。只有当本地磁盘的写入已经完成,并且复制数据包已经到达对应从节点时,此时主节点才认为磁盘写入已经完成。通常情况下,发生Failover不会导致数据丢失(因为后备系统内存中已经获得了数据更新)。然而,如果所有节点同时出现电源故障,则主节点数据存储会发生不可逆的错误结构,主节点上多数最新写入的数据可能会丢失。
·协议C:同步复制协议。只有在本地和远程磁盘都确定写入已完成时,主节点才会认为写入完成。这样可确保发生单点故障时不会导致任何数据丢失。如果发生数据丢失的现象,那也只会在所有节点同时存在错误存储时才会发生这种情况。
在DRBD设置中,最常用的复制协议是协议C。选择哪种复制协议将受部署的两个因素影响:保护要求和延迟。为了保证数据的一致性和可靠性,建议选择协议C。
另外,笔者公司在线上环境中主要采用DRBD+Heartbeat+NFS组成高可用的文件系统,此项目上线几年多一直没有发生过丢失数据的现象;另外,DRBD已被MySQL官方采用并作为其推荐的高可用方案之一。