# Elasticsearch 水平扩容过程与容错机制
# 水平扩容过程
扩容后
primary shard
和replica 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。