Elasticsearch 横向扩容
文字内容整理自 B 站中华石杉的 Elasticsearch 顶尖高手系列课程核心知识篇,图片来自于网络,其实我觉的图片比文字好看
Elasticsearch 横向扩容
在扩容过程中,primary shard 和 replica shard 会自动负载均衡,6 个 shard,3 primary,3 replica
扩容之后,每个节点 node 有更少的 shard,IO/CPU/Memory 资源给每个 shard 分配更多,每个 shard 性能更好
扩容的极限,6 个 shard(3 primary,3 replica),最多扩容到 6 台机器,每个 shard 可以占用单台服务器的所有资源,性能最好
超出扩容极限,可以动态修改 replica 数量,9 个 shard(3primary,6 replica),扩容到 9 台机器,比 3 台机器时,拥有 3 倍的读吞吐量
3 台机器下,9 个 shard(3 primary,6 replica),资源更少,但是容错性更好,最多容纳 2 台机器宕机
一方面扩容可以提升系统整体吞吐量;另一方面考虑容错性,在部分服务器宕机的情况下,保证数据不丢失
从这张图可以看出 Elasticsearch 的扩容过程,来自于 2014 年的官方博客 Sizing Elasticsearch
3 台机器,6 个 shard,3 primary,3 replica,可以容错一台机器故障;
3 台机器,9 个 shard,3 primary,3 replica,可以容错两台机器故障。
Elasticsearch 容错机制
假设 Elasticsearch 集群为 9 shard,3 node
master node 宕机,自动 master 选举,此时集群状态是 red
replica 容错:新 master 节点将 replica 提升为 primary shard,此时集群状态为 yellow
重启宕机 node,master 拷贝 replica 到该 node,使用原有的 shard 并同步宕机后的修改,此时结群状态变为 green,恢复正常
容错第一步:EDN-3 节点宕机,集群自动开始 master 选举,选举另外一个 node 成为新的 master,承担起 master 的职责
容错第二步:新 master 将丢失的 primary shard 的某个 replica shard 提升为 primary shard。此时 cluster status 会变成 yellow,因为 primary shard 全都变成 active 了。但是,少了一个 replica shard,所以不是所有的 replica shard 都是 active 了。
容错第三步:重启故障的 node,new master 会将缺失的副本都 copy 一份到该 node 上,而且该 node 会使用之前已有 shard 的数据,知识同步一下宕机之后发生的修改。cluster status 变成 green,因为 primary shard 和 replica shard 都齐全了。
如果故障节点 node 在哪里跌倒就在哪里躺下,启动不起来呢?
版权声明: 本文为 InfoQ 作者【escray】的原创文章。
原文链接:【http://xie.infoq.cn/article/101fa838baa3574e0c2ce8f42】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论