集群使用keepalived配置有什么办法可以预防脑裂

集群有三个zone,每个zone内一个节点,obproxy和observer部署在相同节点中。在模拟网络中断时集群高可用发现,如果连接的是A节点上的obproxy,并且A节点和外界网络断开,这时执行的sql就会卡住。如果在obproxy之上再部署一个keepalived,虽然可以解决节点网络断开后sql卡住问题,但是又会造成脑裂的问题,集群中有两个节点会持有vip,关于这个问题有相关的优化方案吗。

1 个赞

@论坛小助手

在OceanBase集群中,使用Paxos协议可以有效防止脑裂问题。根据给定的文档片段,Paxos协议通过多数派共识机制确保任一时刻只有一个Leader,从而避免了脑裂情况的发生。然而,您提到的keepalived配置确实可能导致脑裂,因为keepalived用于实现VIP的漂移,可能会导致多个节点同时持有VIP,进而引发脑裂。针对您的情况,建议不要在obproxy之上直接部署keepalived,而是利用Paxos协议的机制来保证集群的高可用性和一致性。此外,如果需要进一步优化网络中断时的高可用性,可以考虑以下几个方面:

  1. 调整OBProxy的配置,使其在网络断开时能够更快速地检测到故障并切换到其他可用节点。
  2. 在OCP中设置更严格的故障检测机制,以便更快地识别和隔离故障节点。
  3. 优化网络配置,减少网络分区的可能性。

详情请参考:

  1. 高可用 FAQ
  2. Paxos 协议
  3. 代理高可用