水平扩容过程
-
扩容后 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。