【搜索引擎】2-ES的分片、扩容以及容错机制

avatar 2020年11月23日14:36:07 6 4035 views
博主分享免费Java教学视频,B站账号:Java刘哥

一、primary shard 和 replica shard 分片机制

在公司里,我们的ES通常都是集群的,比如由6台ES机器组成的集群。

创建索引index时,为了保证index数据的可靠性,会进行分片,比如创建3个shard:即shard1,shard2和shard3,每个分片存储1/3的数据。

为了防止某个机器坏了,机器上的shard数据丢失,同时需要给shard添加副本。

每个 shard 有1个 primary shard 和1个或多个 replica shard,primary shard可以用于读和写,replica shard只能用于读。

如果 primary shard 挂了,由某一个 replica shard 升级为 primary shard。

 

关于分片数量

分片数量太少,不利于后期扩展,因为索引的分片数量是一开始设置的,不能修改,集群节点最大数量为分片总数量

分片数量太多,影响性能,因为需要给副本分片同步数据

 

关于集群颜色

如果索引的所有 primary shard 和 replica shard 都是正常的,则集群是绿色的。

如果索引存在某个 replica shard 不正常,则集群是黄色的。

如果某因存在某个 primary shard 不正常,则集群是红色。

 

 

二、扩容

扩容包括垂直扩容和水平扩容

垂直扩容:直接换更强的机器,比如之前内存16GB 1TB 现在换成 32 GB 10TB

水平扩容:往集群里添加更多普通的机器来分担压力

 

一般采用的是水平扩容,索引创建时,指定了分片数量是不能修改的。比如设置了15个分片(包括5个primary shard和10个replica shard),水平扩容最多支持15个机器。如果还需要扩容更多,可以创建新的索引,设置更多的分片然后把数据导入过去。

 

 

三、容错机制

所谓容错机制,就是当集群里一台机器挂了,系统数据不丢失,能一定程度上正常使用。

这里以某个 primary shard 所在的机器挂了为例。

 

1、第一步:选举一台机器当Master

其他正常的机器会选举一台机器当Master,可以选自己

 

2、第二步:将 replica shard 提升为 primary shard

Master 把故障的 primary shard 对应的 replica shard 的其中一个提升为 primary shard

 

3、第三步:重启故障机

重启机器后,该节点充当 replica shard 角色,会把所有缺失的数据同步过来

  • 微信
  • 交流学习,有偿服务
  • weinxin
  • 博客/Java交流群
  • 资源分享,问题解决,技术交流。群号:590480292
  • weinxin
avatar

发表评论

avatar 登录者:匿名
匿名评论,评论回复后会有邮件通知

  

已通过评论:0   待审核评论数:0