ElasticSearch节点类型

文章详细介绍了Elasticsearch中的不同节点类型,包括MasterNode、DataNode、MasterEligibleNode、CoordinatingNode、IngestNode,以及它们的职责和最佳实践。此外,还阐述了主节点选举的触发条件和算法,强调了集群稳定性的重要性。
摘要由CSDN通过智能技术生成

————————————————————————

————————————————————————

N.1 MasterNode

1)职责:

(1)处理创建,删除索引等请求 / 决定分片⽚被分配到哪个节点 / 负责索引的创建与删除;

(2)维护并且更新 Cluster State,且只能由 master node 维护,否则会造成集群状态不正常。

2)最佳实践:

(1)master node非常重要,部署时需要解决单点问题;

(2)一个集群中设置多个master node,每个node只承担master的单一角色;

N.2 DataNode

1)职责:

(1)保存分片数据。在数据扩展上起到了至关重要的作用(由 Master Node 决定如何把分片分发到数据节点上);

2)最佳实践:

(1)节点启动后,默认就是数据节点。可以设置 node.data: false 禁止;

(2)通过增加数据节点,可以解决数据水平扩展和解决数据单点问题;

N.3 MasterEligibleNode

1)⼀个集群,⽀持配置多个 Master Eligible 节点。这些节点可以在必要时(如 Master 节点出现故障,网络故障时)参与选主流程,成为 Master 节点(不要认为是一个备份的主节点,它只是有资格参与竞选而已,并非一定是主节点,如果没有选上,那么就什么都不要干 一直等待主节点挂了 ,你在进行竞选);

2)参数node.master设置为true(默认)的节点,这使得它有资格被选为主节点,控制集群。

3)当集群内第⼀个 Master eligible 节点启动时候,它会将自己选举成 Master 节点;

N.4 CoordinatingNode

本质上来说,Cooridnating Node是原来的Client node的,主要功能是来分发请求和合并结果的。新版本已经取消了Client node这种节点角色,在所有节点默认就是Coordinating node,且不能关闭该属性。

1处理请求的节点,负责路由请求到正确的节点,如创建索引的请求需要路由到 Master 节点;

2)所有节点默认都是 Coordinating Node;

3)通过将其他类型(data node/master node/master eligible node)设置成 False,使其成为专门负责的协调的节点;

N.5 IngestNode

1)Ingest node专门对索引的文档做预处理,实际中不常用,除非文档在索引之前有大量的预处理工作需要做。Ingest node设置如下:

(1)node.master: false。

(2)node.data: false。

(3)node.ingest: true。

(4)search.remote.connect: false。

N.6 TribeNode

1)Tribe Node主要用于跨级群透明访问。但是官方已经不建议使用了,在5.4.0版本以后已经废弃掉了,在7.0的版本中将移除该功能。在5.5版本以后建议使用Cross-cluster search替代Tribe Node。

N.7 Master选举机制

1)如何触发一次选举

当满足如下条件是,集群内就会发生一次master选举

(1)当前master eligible节点不是master;

(2)当前master eligible节点与其它的节点通信无法发现master;

(3)集群中无法连接到master的master eligible节点数量大于或等于discovery.zen.minimum_master_nodes 所设定的值;

好多个(至于几个自定义)备份节点都没有发现master,说明集群异常,要重新选举。

2)bully选举算法

(1)启动节点ping协调器,获取当前集群状态(节点信息,集群名称等),如果协调器没有启动一直到ping通为止

(2)能ping通,都会拿到对象activeMaster现役master

(3)判断activeMaster的数量,0说明当前集群没有master,1表示当前集群已经选举完毕.

如果为1,当前节点启动Bully算法逻辑结束; 如果为0,进入第4步

(4)启动时发现没有现役master, 且候选名单中(包括自身节点)存活节点大于或等于配置中discovery.zen.minimum_master_nodes的数量,就可以进入第5步。

1-4步骤其实是一个触发选举的条件,在前面也重复讲了。

(5)先根据节点的clusterStateVersion比较,clusterStateVersion越大,优先级越高。clusterStateVersion相同时,进入compareNodes,其内部按照节点的Id比较(Id为节点第一次启动时随机生成, 节点的Id越小,优先级越高)。当clusterStateVersion越大,优先级越高。这是为了保证新Master拥有最新的clusterState(即集群的meta版本),避免已经commit的meta变更丢失。因为Master当选后,就会以这个版本的clusterState为基础进行更新。(一个例外是集群全部重启,所有节点都没有meta,需要先选出一个master,然后master再通过持久化的数据进行meta恢复,再进行meta同步)。当clusterStateVersion相同时,节点的Id越小,优先级越高。即总是倾向于选择Id小的Node,这个Id是节点第一次启动时生成的一个随机字符串。之所以这么设计,应该是为了让选举结果尽可能稳定,不要出现都想当master而选不出来的情况。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

研发咨询顾问

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值