Teng's blog Teng's blog
首页
Java
H5前端
GitHub (opens new window)
首页
Java
H5前端
GitHub (opens new window)
  • 认知

  • 入门

  • 环境

  • 进阶

  • 框架集成

  • 优化

  • 面试题

    • 为什么使用Elasticsearch
    • ES中master的选举流程
    • ES中的脑裂问题
      • 可能的成因
      • 解决方案
    • ES索引文档的流程
    • ES更新和删除文档的流程
    • ES搜索的流程
    • Linux部署ES优化点
    • 关于GC需要注意的点
    • 大数据量聚合实现
    • 并发下保证读写一致
    • 关于字典树
    • 关于倒排索引
    • ES基本组成
  • Database-Elasticsearch
  • 面试题
Shetengteng
2022-02-05

ES中的脑裂问题

# 可能的成因

网络问题

  • 集群间的网络延迟导致一些节点访问不到master, 认为master 挂掉了从而选举出新的master,并对master上的分片和副本标红,分配新的主分片

节点负载

  • 主节点的角色既为master又为data
  • 访问量较大时可能会导致ES停止响应造成大面积延迟
  • 此时其他节点得不到主节点的响应认为主节点挂掉了,会重新选取主节点

内存回收

  • 主节点的角色既为master又为data

  • data 节点上的ES进程占用的内存较大,引发JVM的大规模内存回收,造成ES进程失去响应

# 解决方案

减少误判

  • discovery.zen ping_timeout 节点状态的响应时间
    • 默认为3s,如果master在该响应时间的范围内没有做出响应应答,判断该节点已经挂掉了
    • 调大参数,可适当减少误判
      • 如6s,discovery.zen.ping_timeout:6

选举触发

  • discovery.zen.minimum._master_nodes:1
    • 该参数是用于控制选举行为发生的最小集群主节点数量
    • 当备选主节点的个数大于等于该参数的值,且备选主节点中有该参数个节点认为主节点挂了,进行选举
    • 建议为(n / 2) +1, n为主节点个数,即有资格成为主节点的节点个数

角色分离

  • 即master节点与data节点分离,限制角色

    • 主节点配置为

      • node master: true

      • node data: false

    • 从节点配置为

      • node master: false

      • node data: true

Last Updated: 2022/03/20, 10:04:55
ES中master的选举流程
ES索引文档的流程

← ES中master的选举流程 ES索引文档的流程→

Theme by Vdoing | Copyright © 2021-2022 Shetengteng | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式