ElasticSearch学习记录-es的分布式架构
一,阅读目标
- es的分布式架构是怎样的?
- es的master节点是什么?
- es的master选举策略是什么?
- es的master选举发生情况?
- 如果在选举过程中,旧master恢复会怎样?
- 选举过程中,还能写入数据吗?读取呢?会有数据丢失吗?
二,内容介绍
1.es简介
ElasticSearch 设计的理念就是分布式搜索引擎,底层其实还是基于 lucene 的。核心思想就是在多台机器上启动多个 ES 进程实例,组成了一个 ES 集群。ES 中存储数据的基本单位是索引index,其次还包含一些其他的概念mapping、document、field。
————————————————
版权声明:本文为CSDN博主「蒋楠鑫」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43111776/article/details/124952148
2.es分布式架构
es集群的几个重要角色:
角色名称 | 英文名称 | 备注 |
---|---|---|
主节点 | master | 1.active master主节点,每个集群只有1个,2.候选节点,既能参加投票,也能被选举,3.投票节点,角色为master但设置了voting_only,只能投票,不能被选举。 |
数据节点 | data node | 存放数据 |
预处理节点 | Ingest Node | 默认情况下在所有的节点上启用 ingest |
es集群架构示意图:
图片出自:https://m.elecfans.com/article/2016549.html 查看
下面总结一下上面链接内的描述,如果想看明细的可以点击上面的链接查看。
- 节点发现
es服务启动后,首先通过节点发现功能加入集群。利用es自己实现的ZenDiscovery功能,配置为:
discovery.seed_host:["ip:9300","ip"]
#不写端口,则默认为9300
配置信息讲解地址:https://blog.csdn.net/l1228xh/article/details/123526463
- master选举
集群可能有多个候选的master,但只会选择1个master。目的避免脑裂。es确定master的思路:少数服从多数,通过quorum配置确定。
discovery.zen.minimum_master__nodes:2
#2该参数必须设置为集群中master候选节点的quorum数量
#quorum数量计算公式:master候选节点数量/2+1
#举例:
#1、如果有10个节点,都是data node,也是master的候选节点。则quorum=10/2+1=6
#2、如果有3个master候选节点,100个数据节点。则quorum=3/2+1=2
#3、如果有2个节点,都是data node,也是master的候选节点。则quorum=2/2+1=2(有问题)
#如果其中一个节点挂了,那么master的候选节点只有一个,无法满足quorum数量。即无法选举出master。此时只能将quorum设置成1,但是设置为1有可能出现脑裂。
#总结:一般es集群的节点至少要有3个,quorum设置为2
配置信息讲解地址:https://blog.csdn.net/zuodaoyong/article/details/104719508/
- 何时发起master选举
在ES中有两个和选举相关的工作进程专门用于检查节点的存活状态,分别为:
NodesFaultDetection:即NodesFD,用于定期检查集群中的节点是否存活
MasterFaultDetection:即MasterFD,作用是定期检查Master节点是否存活
因此如果是如下情况则发起选举:
1.当master-eligible节点数量小于法定票数:当主节点侦测到候选节点数量小于法定票数的时候,会主动放弃主节点身份。
2.当主节点宕机。
- 如何选举master
触发选举机制后,先选出临时master,再选出真正的master并发布消息。
文章:
ES选举:Elasticsearch中Master选举完全解读
-如果在选举过程中,旧master恢复会怎样?
应该是加入新的master,具体信息,还待补充…
- 选举过程中,还能写入数据吗?读取呢?会有数据丢失吗?
master功能:
master节点控制整个集群的元数据。只有Master Node节点可以修改节点状态信息及元数据(metadata)的处理,比如索引的新增、删除、分片路由分配、所有索引和相关 Mapping 、Setting 配置等等。
因此:
将ES的master节点关闭后,设置的是60s后进行master的选举,这60s内索引操作会受到影响吗?查询操作会受到影响吗?
背景:ES版本5.6, 具备master选举资格的节点为3个,有专门提供请求的client节点。
自己测试的结果:当把master节点停掉后,向索引中插入文档出现等待的情况(一直没有返回值)。也并没有出现500的返回值。
出处:
master宕机后验证
es如何选择协调节点:
https://link.csdn.net/?target=https%3A%2F%2Fwww.jianshu.com%2Fp%2Fae4f0e53795c