谈谈GlusterFs的脑裂

什么是脑裂呢

类似github的冲突,当github发现两个版本的分支不一样的时候,就会产生冲突。glusterfs发现一个文件的多个副本不一致的时候,就认为该文件处于脑裂状态,当然文件夹也会存在脑裂的(比如多个副本上的目录下的文件数量不一样)。

产生的原因
  • 网络分区。一个集群的多个节点处在不同的网络分区下时,不同的分区下的客户端都会操作改分区下的文件。当网络恢复的时候,glusterfs就会发现一个文件的多个副本是不一样的,此时该文件就会处于脑裂状态
  • glusterfs的进程出现问题:比如两个节点的集群server1和server2。(1)server1挂了,此时文件的操作时发生在server2上 (2)server1启动,server2挂掉了,此时文件的操作时发生在server1上 (3)server1和server2都启动了,此时两个节点上的副本就会不一样
减少脑裂的手段

对于glusterfs我们可以从客户端和服务端两个角度来说:

  • 服务端(Server-quorum):类似于zookeeper,只要大部分节点存活,集群才算存活。不过对于Server-quorum,这个百分比是可以调节的。比如两个节点的集群,我们把百分比调节成50%以上,这样当网络分区出现或者进程出现问题的时候,整个集群是不可以用的,也就不会出现文件脑裂的情况。
    不过对于下面的情况,仍会出现脑裂:
    我们在三个节点的集群中创建了一个两副本的卷,百分比调成51%:
    (1)server1和server3启动着,server2挂了,文件操作在server1上
    (2)server2和server3启动着,server1挂了, 文件操作在server2上
    (3)所有节点启动的时候,一个文件的两个副本不一样了,就出现了脑裂

当集群不满足server-quorum 时,整个集群是不可以用的

  • 客户端(Client-quorum):这种方式在写文件的时候,会检查一下集群是否符合条件,如果符合就会写文件,否则就不会写文件。检查的手段如下:
    (1)fixed类型:该状态下要先声明一个数字Number,处于活跃状态的存放副本的条带要大于等于Number
    (2)auto类型:(处于活跃状态的存放副本的条带)要大于等于(存放副本的条带/2,结果向下取整)。如果副本数是偶数,并且(处于活跃状态的存放副本的条带)要等于(存放副本的条带/2,结果向下取整),那么第一个条带必须存活。
    两副本的卷是不能既满足高可用又保持一致性的:
    (1)如果使用fixed,那么数值必须设置成2
    (2)如果使用auto,那么第一个节点必须存活

当集群不满足Client-quorum时,卷组变为只读

具体点

我们在实践的环境一般采用三副本或者仲裁盘结合Client-quorum来减少脑裂。

  • 三副本:三副本的情况下Client-quorum默认是auto。工作如下:
    (1)B1和B2存活,B3挂了,文件操作发生在B1和B2上
    (2)B3启动,B2挂了,文件操作发生在B1和B3上
    (3)B2启动,B1挂了,文件操作时发现B2和B3是存在不一样的版本,B2和B3不是up状态,不允许写文件,从而减少了进一步脑裂

只要有两个brick存活并且都允许写入,则此次操作就是成功的

  • 仲裁盘:具有减少脑裂的能力,相比三副本会省空间。仲裁盘所在的节点,是不会存储文件的内容的,只会存储文件的属性,所以会省空间。
    (1)如果仲裁盘和一个节点活着,并且中裁盘上的属性没有和这个节点上的副本有冲突,写操作就可以进行下去
    (2)如果中裁盘挂了,其他的两个节点活着,这时候是可以写文件的

除了有两个brick存活并且都允许写入以外,还要满足仲裁盘不会和另外的节点起冲突这个条件,此次操作才能成功


上文都是个人理解,有不到位的地方,请多多指点,请进QQ群630300475,大家聊聊

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值