下面简单描述一下Elasticsearch横向扩容过程与容错机制node
对于ES默认建立的索引有10个shard,其中有5个是primary shard,5个是replica shard。
在ES内部会自动作一些事情:
(1)primary shard & replica shard会自动负载均衡。均匀的分布在各个节点
(2)保持每一个节点node拥有更少的shard,IO/CPU/Memory资源给每一个shard分配更多,使得每一个shard性能更好
(3)Elasticsearch的扩容极限,因为有10个shard(5个primary shard,5个replica shard),因此最多能够扩容到6台机器,此时每一个shard能够占用单台服务器的全部资源,性能最好。
(4)若是超出扩容的极限,能够动态的修改replica数量,好比将replica修改成2,那么就有15个分片(5个primary shard,10个replica shard),此时就能够扩容到15台机器,比以前拥有更高的读吞吐量。
(5)若是只有5台机器,15个分片(5个primary shard,10个replica shard),每一个shard占用的资源会更少,可是容错性会比10个分片的要好,此时最多能够容纳2台机器宕机,而10个分片只能容纳1台机器宕机。
这些知识点告诉咱们,一方面扩容应该怎么去扩,怎么去提高系统总体的吞吐量;另外一方面还要考虑到系统的容错性,怎样提升系统的容错性,让尽量多的服务器宕机,不会形成数据的丢失。服务器
场景描述:
假设master node1节点宕机的一瞬间,P0,P1,P2,P3,P4这些primary shard就没了,也就是说此时就不是active status
下面是ES作的容错的一个过程:
第一步:master选举,自动选择另外一台node做为新的master节点,承担起master的责任来
第二步:新的master node2将丢失掉primary shard的某个replica shard提高为primary shard。此时cluster status就会变为yellow,由于primary shard所有变成active了,可是少了一个replica shard,因此就不是全部的replica shard都是active的
第三步:重启故障的node,新的master会将缺失的副本都copy一份到该node上去。并且该node会使用以前已有的shard数据,只是同步一下宕机以后发生过的修改。cluster的状态变为green,由于primary shard和replica shard都齐全了。负载均衡