ES容灾策略

1,173 阅读2分钟

一、容灾策略

  1. ES对索引进行分片,每个分片会有副本,保证同一个分片及其副本不会分配到同一个节点上
  2. 当集群中的一个节点宕机后:
    1. 如果该节点是master节点,那么ES集群重新选举master节点
    2. 如果该节点上包括某个分片的主分片,那么将该分片分配在其他节点上的某一副本提升为主分片
    3. 如果该节点上包括某个分片的副分片,那么会在非宕机节点上用主分片复制一个副分片作为补充

集群状态说明:

green(很健康)所有的主分片和副本分片都正常运行。

yellow(亚健康)所有的主分片都正常运行,但存在副本分片故障。

red(不健康)存在主分片故障

还是不明白?举个简单的例子

二、举例

1. 原状态

原集群具有三个节点:node1、node2、node3

在这个集群上存在一个索引:该索引分为3个分片,每个分片有一个副本。

因此我们有P0、P1、P2三个主分片和R0、R1、R2三个副分片共六个分片

这六个分片此时均匀分布在三个节点上

所有主分片和副分片都正常运行,集群状态为green

img

2. 节点宕机

假设此时node1发生了宕机,且node1为master节点,node1上包含P0和R2

此时,不是所有的主节点都是active状态(P0),所以集群状态转为red

img

3. 容灾恢复

  1. 由于node1为master节点,所以ES集群会重新选举一个master节点,假设新节点为node2
  2. 由于node1上包含P0,所以将副本分片R0提升为主分片
  3. 由于node1上包含R2,所以在node2上重新复制一份R2

img

恢复工作完成后,所有主分片都能正常运行,但不是所有的副本分片都能正常运行(R0),所以集群状态转为yellow

本文参考www.cnblogs.com/hello-shf/p…