我使用 drbd 已经有一年左右了,现在我都快要抓狂了。每次出现网络故障(在我工作的环境中,这种情况很常见,令人失望),一对关键服务器就会发生脑裂,我必须手动干预。背景情况是,这些服务器采用主从配置,在将文件分发到世界各地的其他服务器之前,它们会对文件执行哈希操作。它们每 2-5 分钟接收一次新文件,并且两者必须始终保持同步,以便在服务发生故障转移时,另一台服务器不会提供过时的数据。虽然这对服务器尚未投入生产,但它令人沮丧,因为每次出现网络问题时,它都会导致一个节点上出现过时的数据。(令人担忧的是,这种情况频繁发生)
如何让 drbd 每次出现网络问题时都不会发生脑裂?或者自动恢复?这是我的 drbd 资源的配置。我通过 cman 堆栈对其进行控制。
resource foo {
handlers {
split-brain "/usr/local/bin/notify-split-brain.sh root";
}
protocol C;
meta-disk internal;
device /dev/drbd0;
net {
after-sb-0pri discard-younger-primary;
after-sb-1pri discard-secondary;
after-sb-2pri disconnect;
}
on nodea {
disk /dev/sdb;
address x.x.x.1:7789;
}
on nodeb {
disk /dev/sdb;
address x.x.x.2:7789;
}
}
这是在 CentOS Linux 版本 7.2.1511(核心)上运行的。