ES扩容、容灾理解

扩容

副本分片可以动态的增加副本分片的数目,但是主分片不可以。

扩容本质上就是迁移分片至新的节点以达到扩容的目的。

如果有6个分片(3主3从),那么就可以扩容至6个节点。每个节点存放一个分片,并且每个分片拥有该节点的全部资源。

如果想要扩容超过6个节点怎么办?

主分片的数目在创建索引的时候就已经确定。这个数目定义了这个索引能够存储的最大数据量。但是读操作可以被主分片和副本分片同时处理,所以增大副本分片的数量可以提高吞吐量,集群搜索性能将大幅度提升。

如果只是在一个集群同数量的节点上增加副本数量并不会增加性能,因为每个分片从节点上分到的资源会变少,需要增加硬件资源来提升吞吐量。

副本分片数量增加数据冗余性。

扩容的两种方法

方式一:垂直扩容

例如当前的服务器能够容纳1T的数量,现在数据量达到了10T,直接购买一台10T的服务器进行替换。

方式二:水平扩容

增加多台拥有类似性能的服务器构成集群。

es一般采用方式二水平扩容的方式进行扩容。从成本上来说,内存容量小,并且性能相对较低的服务器相比较与内存容量大,性能好的服务器,在价格上的差距不是一个量级的。从另一方面来说,elasticSearch是一套分布式的系统,分布式的存在也是为存放大量的数据。讲到elasticSearch的扩容,自然就会想到shard和replica shard。

elasticSearch拥有cluster discovery(集群发现机制),当我们启动一个新的节点,该节点会发现集群并且自动加入到集群中。并且es集群会自动进行各个shard之间的数据均衡处理。并且当节减少时,es集群也会自动将减少的节点中的数据移到其他正在运行的节点中。所以elasticSearch一般选择水平扩容的方式

 

容灾

ES有很完善的容灾机制,候选master一般有多个,data节点也有多个,因此节点异常的时候通过访问切换到其他节点来容灾。

1.故障发现

master会定时去ping其他节点(包括其他master节点),datanode也会去ping master节点。

Discovery.zen.fd.ping_interval=1s  默认每隔1秒探测1次

Discovery.zen.fd.ping_timeout=30s 默认ping探测的超时时间为30秒

Discovery.zen.fd.ping_retry=3  默认重试3次

2.节点切换

master节点切换

当其他节点探测到master异常且超过重试次数后,候选master节点会进行竞争,规则:

1.每次选举每个节点会把自己所知道的候选master节点根据nodeid进行一次排序,然后选出第一个节点,暂且认为它是master节点

2.如果对某个几点的投票数达到 候选master数/2+1 个(防止脑裂的发生)并且该节点也选举自己为master,那么这个节点即为master,否则重新选举。

data节点切换

当master节点检测到某个data节点有异常的时候:

1.master剔除该data节点,如果有副本,此时数据不丢失,集群状态为yellow;如果没有副本,则数据丢失,集群状态为red。

2.master找出该异常data节点的所有分片,如果该节点上有主分片,则将其他节点上的副本分片提升为主分片;该节点的所有主分片恢复后,该异常data节点所涉及的数据读写都恢复正常。

3.集群状态恢复为green

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值