文档章节

elaselasticsearch集群脑裂

 张欢19933
发布于 2017/08/16 10:50
字数 1189
阅读 32
收藏 0
点赞 0
评论 0

集群脑裂是什么?

  所谓脑裂问题(类似于精神分裂),就是同一个集群中的不同节点,对于集群的状态有了不一样的理解。

   由于某些节点的失效,部分节点的网络连接会断开,并形成一个与原集群一样名字的集群,这种情况成为集群脑裂(split-brain)现象。这个问题非常危险,因为两个新形成的集群会同时索引和修改集群的数据。

今天,Elasticsearch集群出现了查询极端缓慢的情况,通过以下命令查看集群状态

  curl -XGET 'http://master:9200/_cluster/health'

    或者

  curl -XGET 'http://localhost:9200/_cluster/health'

  发现,集群的总体状态是red,本来9个节点的集群,在结果中只显示了4个;但是,将请求发向不同的节点之后,我却发现即使是总体状态是red的,但是可用的节点数量却不一致。

  正常情况下,集群中的所有的节点,应该对集群中master的选择是一致的,这样获得的状态信息也应该是一致的,不一致的状态信息,说明不同的节点对master节点的选择出现了异常——也就是所谓的脑裂问题。这样的脑裂状态直接让节点失去了集群的正确状态,导致集群不能正常工作。

ES集群脑裂可能导致的原因:
  1. 网络: 由于是内网通信, 网络通信问题造成某些节点认为 master 死掉, 而另选 master的可能性较小; 进而检查 Ganglia 集群监控, 也没有发现异常的内网流量, 故此原因可以排除。

   内网一般不会出现es集群的脑裂问题,可以监控内网流量状态。外网的网络出现问题的可能性大些。

  2. 节点负载: 由于 master 节点与 data 节点都是混合在一起的, 所以当工作节点的负载较大( 确实也较大) 时, 导致对应的 ES 实例停止响应, 而这台服务器如果正充当着 master节点的身份, 那么一部分节点就会认为这个 master 节点失效了, 故重新选举新的节点, 这时就出现了脑裂; 同时由于 data 节点上 ES 进程占用的内存较大, 较大规模的内存回收操作也能造成 ES 进程失去响应。 所以, 这个原因的可能性应该是最大的。

   3、回收内存

  由于data节点上es进程占用的内存较大,较大规模的内存回收操作也能造成es进程失去响应。

ES集群脑裂应对问题的办法:
  1、对应于上面的分析, 推测出原因应该是由于节点负载导致了 master 进程停止响应, 继而导致了部分节点对于 master 的选择出现了分歧。 为此, 一个直观的解决方案便是将 master节点与 data 节点分离。 为此, 我们添加了三台服务器进入 ES 集群, 不过它们的角色只是master 节点, 不担任存储和搜索的角色, 故它们是相对轻量级的进程。 可以通过以下配置来限制其角色:

  node.master: true
  node.data: false
  当然, 其它的节点就不能再担任 master 了, 把上面的配置反过来即可。 这样就做到了将 master 节点与 data 节点分离。当然,为了使新加入的节点快速确定master位置,可以将data节点的默认的master发现方式有multicast修改为unicast:

  discovery.zen.ping.multicast.enabled: false  

  discovery.zen.ping.unicast.hosts: ["master1", "master2", "master3"]  

  还有两个直观的参数可以减缓脑裂问题的出现:
  2、discovery.zen.ping_timeout( 默认值是 3 秒) : 默认情况下, 一个节点会认为, 如果 master节点在 3 秒之内没有应答, 那么这个节点就是死掉了, 而增加这个值, 会增加节点等待响应的时间, 从一定程度上会减少误判。

  3、discovery.zen.minimum_master_nodes( 默认是 1) : 这个参数控制的是, 一个节点需要看到的具有 master 节点资格的最小数量, 然后才能在集群中做操作。 官方的推荐值是(N/2)+1, 其中 N 是具有 master 资格的节点的数量( 我们的情况是 3, 因此这个参数设置为2, 但对于只有 2 个节点的情况, 设置为 2 就有些问题了, 一个节点 DOWN 掉后, 你肯定连不上 2 台服务器了, 这点需要注意) 。

  以上的解决方法只能是减缓这种现象的发生, 并没有从根本上杜绝。

本文转载自:http://www.cnblogs.com/zlslch/p/6477312.html

共有 人打赏支持
粉丝 29
博文 422
码字总数 211998
作品 0
海淀
EMQ 2.3-beta.1 发布, 百万级 MQTT 消息服务器

EMQ R2.3-beta.1版本发布!该版本正式支持集群节点自动发现与集群脑裂自动愈合,支持基于IP Multicast、Etcd、Kubernetes等多种策略自动构建集群。 节点发现与自动集群 EMQ R2.3 版本支持多种...

emqtt ⋅ 2017/07/25 ⋅ 4

elasticsearch脑裂问题

所谓脑裂问题(类似于精神分裂),就是同一个集群中的不同节点,对于集群的状态有了不一样的理解。 正常情况下,集群中的所有的节点,应该对集群中master的选择是一致的,这样获得的状态信息...

枫林飘影 ⋅ 04/03 ⋅ 0

【整理】脑裂问题

在心跳失效的时候,就发生了脑裂(split-brain)。 ( 一种常见的脑裂情况可以描述如下)比如正常情况下,(集群中的)NodeA 和 NodeB 会通过心跳检测以确认对方存在,在通过心跳检测确认不到...

摩云飞 ⋅ 2012/11/27 ⋅ 2

split-brain 脑裂问题(Keepalived)

脑裂(split-brain) 指在一个高可用(HA)系统中,当联系着的两个节点断开联系时,本来为一个整体的系统,分裂为两个独立节点,这时两个节点开始争抢共享资源,结果会导致系统混乱,数据损坏...

吞吞吐吐的 ⋅ 2017/09/15 ⋅ 0

mysql galera cluster集群的分裂与仲裁机制

集群的分裂 当集群由于网络原因分裂为几个单独的组时(一组可能是单节点,也可能是几个互联的节点),数据出现不一致,此时可能产生脑裂及数据不一致。这种情况下,只有一组节点能够继续提供...

bupt晶 ⋅ 2015/12/21 ⋅ 0

让我们聊聊脑裂这事情

万事皆有因 最近IM云平台也好,社交应用也好,大量的使用ejabberd的厂商涌现出来了。不过所有使用ejabberd厂商可能都会遇到Mnesia脑裂的问题。在这里打算简单的谈谈脑裂这个事情。 什么是脑裂...

通九互联科技 ⋅ 2015/11/03 ⋅ 1

DRBD的元数据实现:GI元组的原理

一、GI元组 DRBD使用代标识GI tuple来确定复制数据的“代”,通过GI tuple,DRBD可以确定两个节点是不是属于同一集群的事实(而不是意外连接的两个节点),确定重新同步时同步的方向(如果必...

dhb_oschina ⋅ 2016/04/01 ⋅ 0

Elasticsearch集群的脑裂问题

Elasticsearch集群的脑裂问题 正常情况下,集群中的所有的节点,应该对集群中master的选择是一致的,这样获得的状态信息也应该是一致的,不一致的状态信息,说明不同的节点对master节点的选择...

datacube ⋅ 2016/06/18 ⋅ 0

corosync+pacemaker 双节点脑裂问题

0.引入 corosync作为HA方案中成员管理层(membership layer),负责集群成员管理、通信方式(单播、广播、组播)等功能,pacemaker作为CRM层。在利用corosync+pacemaker 主备模式实践中,遇到...

安静美男子 ⋅ 2015/10/10 ⋅ 1

Elasticsearch集群所谓脑裂问题

所谓脑裂问题(类似于精神分裂),就是同一个集群中的不同节点,对于集群的状态有了不一样的理解。 今天,Elasticsearch集群出现了查询极端缓慢的情况,通过以下命令查看集群状态: curl -XG...

HIVE ⋅ 2016/07/05 ⋅ 2

没有更多内容

加载失败,请刷新页面

加载更多

下一页

常见数据结构(二)-树(二叉树,红黑树,B树)

本文介绍数据结构中几种常见的树:二分查找树,2-3树,红黑树,B树 写在前面 本文所有图片均截图自coursera上普林斯顿的课程《Algorithms, Part I》中的Slides 相关命题的证明可参考《算法(第...

浮躁的码农 ⋅ 昨天 ⋅ 0

android -------- 混淆打包报错 (warning - InnerClass ...)

最近做Android混淆打包遇到一些问题,Android Sdutio 3.1 版本打包的 错误如下: Android studio warning - InnerClass annotations are missing corresponding EnclosingMember annotation......

切切歆语 ⋅ 昨天 ⋅ 0

eclipse酷炫大法之设置主题、皮肤

eclipse酷炫大法 目前两款不错的eclipse 1.系统设置 Window->Preferences->General->Appearance 2.Eclipse Marketplace下载【推荐】 Help->Eclipse Marketplace->搜索‘theme’进行安装 比如......

anlve ⋅ 昨天 ⋅ 0

vim编辑模式、vim命令模式、vim实践

vim编辑模式 编辑模式用来输入或修改文本内容,编辑模式除了Esc外其他键几乎都是输入 如何进入编辑模式 一般模式输入以下按键,均可进入编辑模式,左下角提示 insert(中文为插入) 字样 i ...

蛋黄Yolks ⋅ 昨天 ⋅ 0

大数据入门基础:SSH介绍

什么是ssh 简单说,SSH是一种网络协议,用于计算机之间的加密登录。 如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码...

董黎明 ⋅ 昨天 ⋅ 0

web3j教程

web3j是一个轻量级、高度模块化、响应式、类型安全的Java和Android类库提供丰富API,用于处理以太坊智能合约及与以太坊网络上的客户端(节点)进行集成。 汇智网最新发布的web3j教程,详细讲解...

汇智网教程 ⋅ 昨天 ⋅ 0

谷歌:安全问题机制并不如你想象中安全

腾讯科技讯 5月25日,如今的你或许已经对许多网站所使用的“安全问题机制”习以为常了,但你真的认为包括“你第一个宠物的名字是什么?”这些问题能够保障你的帐户安全吗? 根据谷歌(微博)安...

问题终结者 ⋅ 昨天 ⋅ 0

聊聊spring cloud gateway的RedisRateLimiter

序 本文主要研究下spring cloud gateway的RedisRateLimiter GatewayRedisAutoConfiguration spring-cloud-gateway-core-2.0.0.RELEASE-sources.jar!/org/springframework/cloud/gateway/con......

go4it ⋅ 昨天 ⋅ 0

169. Majority Element - LeetCode

Question 169. Majority Element Solution 思路:构造一个map存储每个数字出现的次数,然后遍历map返回出现次数大于数组一半的数字. 还有一种思路是:对这个数组排序,次数超过n/2的元素必然在中...

yysue ⋅ 昨天 ⋅ 0

NFS

14.1 NFS介绍 NFS是Network File System的缩写 NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netapp公司参与并主导开发,最新为4.1版本 NFS数据传输基于RPC协议,RPC...

派派菠菜 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部