我正在运行 2 节点集群,其中 DRBD(主动/被动)由 drbd systemd 服务管理,还有一个小脚本,每当资源成为主要资源时就会安装卷。
我想以这样一种方式配置 DRBD,使其始终能够解决任何脑裂问题,并且始终至少有一个节点是主节点,并且只要两台机器都没有宕机,就能够在任何情况下提供服务。
我尝试了以下配置(其中pri-lost-after-sb
是 "reboot"
)
after-sb-0pri discard-younger-primary;
after-sb-1pri discard-secondary;
after-sb-2pri call-pri-lost-after-sb;
Run Code Online (Sandbox Code Playgroud)
和on-suspended-primary-outdated force-secondary
一些其他组合。
但我总是发现集群进入不良状态并且无法从裂脑中恢复的情况。通常我会进入StandAlone
节点并force-io-failures
辅助节点(因此,在主节点再次发生故障后,即使已连接,该辅助节点也将无法工作)。
考虑到我高度重视服务正常运行时间而不是避免数据丢失,我还能做些什么来提高此设置的稳健性吗?
过去,我曾多次尝试设置类似的集群。直到我了解到 DRBD 的设计已被破坏,并以“裂脑”作为它的第二个名字。在 DRBD9 中,情况有所好转(仅与噩梦般的 8.xx 相比),但它仍然无法在生产中使用。我只看到一种解决方案 - 节省您的时间并迁移到更可靠的解决方案。例如,头孢。
归档时间: |
|
查看次数: |
383 次 |
最近记录: |