写点什么

Elasticsearch 横向扩容

用户头像
escray
关注
发布于: 2021 年 01 月 19 日
Elasticsearch 横向扩容

文字内容整理自 B 站中华石杉的 Elasticsearch 顶尖高手系列课程核心知识篇,图片来自于网络,其实我觉的图片比文字好看

Elasticsearch 横向扩容


  1. 在扩容过程中,primary shard 和 replica shard 会自动负载均衡,6 个 shard,3 primary,3 replica

  2. 扩容之后,每个节点 node 有更少的 shard,IO/CPU/Memory 资源给每个 shard 分配更多,每个 shard 性能更好

  3. 扩容的极限,6 个 shard(3 primary,3 replica),最多扩容到 6 台机器,每个 shard 可以占用单台服务器的所有资源,性能最好

  4. 超出扩容极限,可以动态修改 replica 数量,9 个 shard(3primary,6 replica),扩容到 9 台机器,比 3 台机器时,拥有 3 倍的读吞吐量

  5. 3 台机器下,9 个 shard(3 primary,6 replica),资源更少,但是容错性更好,最多容纳 2 台机器宕机

  6. 一方面扩容可以提升系统整体吞吐量;另一方面考虑容错性,在部分服务器宕机的情况下,保证数据不丢失



从这张图可以看出 Elasticsearch 的扩容过程,来自于 2014 年的官方博客 Sizing Elasticsearch


3 台机器,6 个 shard,3 primary,3 replica,可以容错一台机器故障;

3 台机器,9 个 shard,3 primary,3 replica,可以容错两台机器故障。

Elasticsearch 容错机制


  1. 假设 Elasticsearch 集群为 9 shard,3 node

  2. master node 宕机,自动 master 选举,此时集群状态是 red

  3. replica 容错:新 master 节点将 replica 提升为 primary shard,此时集群状态为 yellow

  4. 重启宕机 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 在哪里跌倒就在哪里躺下,启动不起来呢?

发布于: 2021 年 01 月 19 日阅读数: 39
用户头像

escray

关注

Let's Go 2017.11.19 加入

在学 Elasticsearch 的项目经理

评论

发布
暂无评论
Elasticsearch 横向扩容