Elasticsearch 水平扩容过程与容错机制

2/7/2018 elasticsearch

# Elasticsearch 水平扩容过程与容错机制

# 水平扩容过程

  • 扩容后 primary shardreplica shard 会自动的负载均衡。

  • 扩容后每一个节点上的 shard 会减少,那么分配给每个 shard的CPU、内存、IO资源会更多,性能将会提高。

  • 扩容的极限,如果有6个 shard,扩容的极限就是6个节点,每个节点上一个 shard,如果想超出扩容的极限,比如说扩容到9个节点,那么可以增加 replica shard的个数.

  • 6个 shard,3个节点,最多能承受几个节点所在的服务器宕机?(容错性)任何一台服务器宕机都会丢失部分数据。为了提高容错性,增加 shard 的个数:9个 shard(3个 primary shard ,6个 replica shard ),这样就可以容忍最多两台服务器宕机。

总结:扩容是为了提高系统的吞吐量,同时也要考虑容错性,也就是在尽可能多的服务器宕机的情况下,还可以保证数据不丢失。

Elasticsearch的容错机制 以9个 shard,3个 node为例:

情况:如果 master node(主节点 ) 宕机,此时不是所有的 primary shard(主分片) 都是 Avtive Status(活跃状态),所以此时的集群状态是 red。 容错处理:

  • 第一步:选择一台服务器作为 master(选举产生)

  • 第二步:新 master 会把挂掉的 primary shard 的某个 replica shard 提升为 primary shard ,此时集群状态为 yellow。因为少了一个 replica shard ,并不是所有的 replica shard 都是 Avtive Status (即并不是所有的副本分片都是活跃的)。

  • 第三步:重启故障机,新 master 会把所有的副本都复制一份到该节点上(同步一下宕机后发生的修改),测试集群状态将变为 green,因为此时所有的 primary shard 和 replica shard 都是 Avtive Status。