Elasticsearch集群“脑裂”现象 您所在的位置:网站首页 脑裂产生的原因 Elasticsearch集群“脑裂”现象

Elasticsearch集群“脑裂”现象

2024-03-12 09:16| 来源: 网络整理| 查看: 265

一、什么是Elasticsearch集群脑裂

  Elasticsearch集群由一个主节点(可以有多个备选主节点)和多个数据节点组成。其中主节点负责创建、删除索引、分配分片、追踪集群中的节点状态等工作,即调度节点,计算压力较轻;数据节点负责数据存储和具体操作,如执行搜索、聚合等任务,计算压力较大。

  正常情况下,当主节点无法工作时,会从备选主节点中选举一个出来变成新主节点,原主节点回归后变成备选主节点。但有时因为网络抖动等原因,主节点没能及时响应,集群误以为主节点下线了,选举了一个新主节点,此时一个Elasticsearch集群中有了两个主节点,其他节点不知道该听谁的调度,这时就发生了"脑裂"现象,通俗点就是“精神分裂”。

二、产生的原因

  (1)网络抖动。

  由于是内网通信、网络通信等问题造成部分节点认为master node挂掉, 然后另选master node的情况可能性较小;可以通过检查Ganglia集群监控,没有发现异常的内网流量, 故此原因可以排除。

  而外网的网络出现问题的可能性更大,更有可能造成“脑裂”现象。

  (2)节点负载。

  如果主节点同时承担数据节点的工作,可能会因为工作负载大而导致对应的Elasticsearch实例停止响应。此外,由于数据节点上的Elasticsearch进程占用的内存较大, 较大规模的内存回收操作(GC)也能造成Elasticsearch进程失去响应。所以,该原因出现“脑裂”现象的可能性更大。

  (3)内存回收。   由于数据节点上的Elasticsearch进程占用的内存较大,较大规模的内存回收操作也能造成Elasticsearch进程失去响应。

三、解决方法

  (1)不要把主节点同时设为数据节点,即node.master和node.data不要同时为true。

  (2)将节点响应超时discovery.zen.ping_timeout稍稍设置长一些(默认是3秒)。默认情况下, 一个节点会认为, 如果master节点在 3 秒之内没有应答, 那么这个节点就是挂掉了, 而增加这个值, 会增加节点等待响应的时间, 从一定程度上会减少误判。

  (3)discovery.zen.minimum_master_nodes的默认值是1,该参数表示, 一个节点需要看到的具有master节点资格的最小数量, 然后才能在集群中做操作,即重新选举主节点。官方的推荐值是(N/2)+1,其中 N 是具有 master资格的节点的数量,即只有超过(N/2)+1个主节点同意,才能重新选举主节点。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有