脑裂问题到底有多大危害?如何降低容灾方案当中出现脑裂的概率?

脑裂问题到底有多大危害?如何通过技术手段来降低脑裂问题发生的概率?

参与5

2同行回答

s6dongs6dongit技术咨询顾问东软集团
1,脑裂问题会导致上层业务无法识别ab两个数据中心哪一个才是主数据中心,会影响数据写入的完整性和安全性。2,由于发生了脑裂,AB两个数据中心的存储之间没有了通讯,谁都无法判断自己是否为主存储,所有的数据写入请求都照单全收,这样一来,同一个业务的数据文件可能会同时存在ab数据...显示全部

1,脑裂问题会导致上层业务无法识别ab两个数据中心哪一个才是主数据中心,会影响数据写入的完整性和安全性。
2,由于发生了脑裂,AB两个数据中心的存储之间没有了通讯,谁都无法判断自己是否为主存储,所有的数据写入请求都照单全收,这样一来,同一个业务的数据文件可能会同时存在ab数据中心两个存储上,会造成数据存储的混乱,数据的完整性也会受到极大的影响。
3,为了解决脑裂问题,通常会设置一个仲裁节点,这个仲裁节点需要设置在第三数据中心,也就是c节点,而且需要保持和ab两个数据中心保持通讯。这样不管是a数据中心故障还是b数据中心故障又或者是ab两个数据中心通讯故障导致的脑裂问题,都可以由仲裁节点来解决。因为c仲裁节点可以时刻和ab两个数据中心节点保持通讯,可以在ab故障的时候指定其中一个节点为主数据中心,所有数据都会写入主数据中心,避免数据写入混乱和数据完整性问题的出现。
4,最后还有一点就是仲裁节点故障不会对ab两个数据中心产生任何影响,因为c节点只是负责仲裁,不参与数据存储和处理。平时只需要定期对仲裁节点进行运维,检查其工作状态即可。

收起
互联网服务 · 2021-07-27
浏览1696
haizdlhaizdl技术经理大连
1. 为什么会集群可能产生脑裂?这个问题需要回到集群的仲裁机制上来,一般来讲集群的仲裁算法是以每一个节点可以获得仲裁资源的多少来判断谁是集群的主导。集群的仲裁资源无非是来自网络层面的心跳信息和共享存储的磁盘心跳资源,在普通的节点层故障场合下,发生故障的节点可以...显示全部

1. 为什么会集群可能产生脑裂?
这个问题需要回到集群的仲裁机制上来,一般来讲集群的仲裁算法是以每一个节点可以获得仲裁资源的多少来判断谁是集群的主导。集群的仲裁资源无非是来自网络层面的心跳信息和共享存储的磁盘心跳资源,在普通的节点层故障场合下,发生故障的节点可以获得的仲裁资源就会少于其他节点,那么就不会发生脑裂问题。但是在一种特殊的场合(双数据中心之间的网络发生了故障),两个节点可以获得的仲裁资源是一样的,网络彼此不能互通,存储彼此不能看到对方,这样的的场景下仲裁就会失效,脑裂发生。

2. 集群如果发生了脑裂问题,那么会造成什么样的结果?
那么为什么说对于容灾架构来讲,脑裂是灾难性的事件呢?如果从一个统一集群的调度变成两个相互独立的集群调度,意味着双方的写操作相互也是独立的,但是他们的存储空间是共享的, AA模式下通过锁机制控制并发,HA模式下通过存储卷的Owner控制写的权限。但是独立之后意味着两个集群可以随时写入同样的存储地址,必然会造成脏写脏读等一系列数据不一致事件。这对业务来讲是灾难性的。

3. 如何避免脑裂问题?
两种策略:(1)预定义优先级规则(例如Oracle RAC 以实例号来定义),很多存储方案是可以自定义的;(2)第三方仲裁。

参照:
https://www.talkwithtrend.com/Article/256125

收起
银行 · 2021-07-27
浏览1515

问题来自

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2021-07-27
  • 关注会员:2 人
  • 问题浏览:3049
  • 最近回答:2021-07-27
  • X社区推广