啥是脑裂

通俗来说,倘若一个人有多个相互独立工作的大脑,便会“不听使唤”。

在高可用系统中,当相互联系的节点失联时(即原本为一个整体的系统,被分裂成多个独立的节点),这些节点便开始争抢共享资源的现象;这可不是什么好事,争抢资源会导致服务异常乃至数据损坏,需妥善处理。

现象描述

环境

一组NFS双机热备,通过DRBD做数据管理与镜像同步。

DRBD(Distributed Replicated Block Device,分布式复制块设备),是一种基于软件的无共享功能的存储镜像模块;在高可用系统中使用,有概率出现脑裂情况。

主机名 作用 DRBD元数据块名
renNFS-Master 主节点(NFS、DRBD) nfs
renNFS-Slave 从节点(NFS、DRBD) nfs

征兆

在DRBD中,如果出现两节点的connection信息至少有一边处于 StandAloneConnecting(或 WFConnection )状态,一般情况是脑裂的征兆。

image-20240328154717252

image-20240328154700084

通过grep dropping /var/log/messages命令查看系统日志

  • 如果有 Split-Brain detected but unresolved, dsropping connection!的提示信息,则出现脑裂。

image-20240328155030790

手动处理

  1. 首先,在 从NFS 节点,执行命令放弃该节点的数据。
1
drbdadm connect [元数据块名] --discard-my-data
  1. 随后,在 主NFS 节点,执行连接元数据块的命令。
1
drbdadm connect [元数据块名]
  1. 稍等片刻,待两节点重新连接后,恢复正常通信。

image-20240328155459575

image-20240328155424989