您的位置:首页 > 大数据 > 人工智能

ElasticSearch学习11_集群脑裂_Split-Brain

2016-01-14 10:25 453 查看
在ES集群中,可能会遇到脑裂问题,描述如下所示:



下面对脑裂进行一些介绍:

脑裂:本来一个大脑的两半球互相配合,变成了分裂成两个独立的大脑,都认为对方已死。在集群环境中,有这么几种可能造成"Split-Brain"现象:

1、在集群环境中的节点间的心跳线同时断掉后,集群系统所处于的一种特殊状态。例如节点1和2组成一个集群,突然1和2间的心跳同时都断了,如果此前节点1正在运行应用,心跳都断掉后2开始去接管应用,强行加载数据,此时就是split-brain。

2、集群中节点因为处理器忙或者其他原因暂时停止响应时,其他节点可能误认为该节点“已死”。

后果:节点间争夺共享磁盘(即资源)的访问权,都对共享文件系统产生读写操作,从而导致共享磁盘文件系统损坏。

解决办法:使用硬盘心跳,scsi reservation,以及最极端的power fence。

解决方法详细描述:

解决办法

小提一下冗余心跳,但是该方式治标不治本,只能减少脑裂发生的概率。

1、踢出集群

(1)Quorum Algorithm

Quorum Algorithm(选举算法):集群内各节点通过心跳收集彼此的健康状况,收集到一个心跳就获得一票,假设集群内3个节点(A、B、C),节点A获得B和自己一票,节点B获得自己和A一票,而节点C只有自己,则节点C被踢出集群。

(2)Quorum Device

Quorum Algorithm有个缺陷:集群内如果只有2个节点,那就悲剧了。因此,需要引入第3个设备来解决此问题,此时,Quorum Device粉墨登场。

Quorum Device(Quorum Disk):这个设备也占一票,这一票由先到请求者获得,这样就能顺利的踢出另一个节点。

2、IO隔离

做了上面的操作后,很多人就开始稳坐钓鱼台了,实际,悲剧还在深海。节点虽然被踢出,但是仍然有可能处于active状态,这样,这家伙还能操作共享文件资源,危机依然挥之不去。银弹来了,IO隔离(IO Fencing)可以阻止”灰太狼来羊村“。

IO Fencing主要有两种方式,分别如下:

(1)硬件方式

(A)SCSI Reserve/Release设备

正常节点能够使用SCSI Reserve/Release命令锁住存储设备,不正常节点发现存储设备被锁后,就用suicide(自杀)的方式来了结自己以使自己恢复正常,纯爷们儿。

(B)STONITH(Shoot The Other Node In The Head)

当一个节点发生故障时,另一个节点如果检测到了,就会通过串口来控制故障节点的电源开关以暂时断电然后又上电来重启故障节点。手好黑啊,好在还没彻底落井下石。

(2)软件方式

ORACLE RAC就是典型代表,直接重启故障节点以保证故障节点不能继续访问共享数据。具体可参考ORACLE,也可以参考这里。

原文来自:
http://hazt1011.blog.51cto.com/1072107/1102236/

http://blog.chinaunix.net/uid-16728139-id-3495667.html
维基百科:
https://en.wikipedia.org/wiki/Split-brain
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: