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

  • 入门

  • 环境

  • 进阶

    • 核心概念
    • 系统架构
    • 单节点集群
    • 故障转移
    • 水平扩容
    • 应对故障
      • 分析
    • 路由计算
    • 分片控制
    • 写操作流程
    • 数据读流程
    • 更新操作流程
    • 批量操作流程
    • 倒排索引
    • 文档搜索
    • 文档刷新-刷写-合并
    • 文档分析-分词器
    • 文档控制
    • 文档展示-kibana
  • 框架集成

  • 优化

  • 面试题

  • Database-Elasticsearch
  • 进阶
Shetengteng
2022-01-29

应对故障

关闭第一个节点,这时集群的状态为:关闭了一个节点后的集群

img

示例关闭的节点是一个主节点,而集群必须拥有一个主节点来保证正常工作,所以发生的第一件事情就是选举一个新的主节点: Node 2 。在关闭 Node 1 的同时也失去了主分片 1 和 2 ,并且在缺失主分片的时候索引也不能正常工作。 如果此时来检查集群的状况,们看到的状态将会为 red :不是所有主分片都在正常工作

幸运的是,在其它节点上存在着这两个主分片的完整副本, 所以新的主节点立即将这些分片在 Node 2 和 Node 3 上对应的副本分片提升为主分片, 此时集群的状态将会为yellow,提升主分片的过程是瞬间发生的

# 分析

为什么集群状态是 yellow 而不是 green 呢

虽然拥有所有的三个主分片,但是同时设置了每个主分片需要对应 2 份副本分片,而此时只存在一份副本分片。 所以集群不能为 green 的状态;如果同样关闭了 Node 2 ,依然可以保持在不丢任何数据的情况下运行,因为Node 3 为每一个分片都保留着一份副本

如果要恢复原来的样子,要确保Node-1的配置文件有如下配置

discovery.seed_hosts: ["localhost:9302", "localhost:9303"]
1

集群可以将缺失的副本分片再次进行分配,那么集群的状态也将恢复成之前的状态。 如果 Node 1 依然拥有着之前的分片,它将尝试去重用它们,同时仅从主分片复制发生了修改的数据文件。和之前的集群相比,只是 Master 节点切换了

Last Updated: 2022/02/05, 15:58:51
水平扩容
路由计算

← 水平扩容 路由计算→

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