stone

elasticsearch-角色篇
在Elasticsearch中,节点的角色分为三种,分别为master node,data node,ingest...
扫描右侧二维码阅读全文
22
2017/03

elasticsearch-角色篇

在Elasticsearch中,节点的角色分为三种,分别为master node,data node,ingest node,不同的角色负责不同的工作,合理的配置这些节点,可以最大限度发挥集群的性能。

角色介绍

在一个ES节点中,每一个节点都可以充当一个或者多个角色,但是在较大的集群中,一般会将每一个角色都分开,这样可以保证集群的稳定性。

可以通过下面的配置进行设置:

node.master: true
node.data: true
node.ingest: true
http.enabled: true

之所以要将http这个配置也放到角色配置当中,是因为当一个节点开启http选项之后,就有能力充当client的角色,即官方文档中提到的coordinating only node

下面介绍一下每一种角色的功能和职责:

  • master node: 负责更新和同步集群信息,如集群配置,集群健康情况,index的信息等等,对集群的稳定性十分重要。这里由一个想吐槽的地方,ES的命名很特别坑人,node.master被设为true,
    并不表示这个节点为被设置为master,而是有资格被选为master,实际上当前活动的master只有一个,如果没有被选上的,只会执行其他角色的任务,如client(接受请求),

一般建议将master和data分离开,在较大的集群中,一般设置三个master节点,以提高稳定性。

  • data node: 就是字面意思,data node是储存数据的节点
  • ingest node: 是专门对文档进行预处理的,有点像logstash的功能,是es 5.x新推出的功能,没有作深入了解
  • client node: 指开启了http端口的节点,这类节点可以接收用户的请求,如搜索,索引等,然后将请求分发到不同的数据节点,接收到数据节点的结果后进行汇总,然后返回给用户,这类节点对内存比较敏感,
    特别是大量请求的时候

ES集群的工作流程

ES的常用端口有两个,分别为9200和9300,当然,也可以自行进行设置,9200用于响应restful请求,用于处理用户请求,而9300端口作为rpc端口,用于内部通信,内部的通信的节点和节点之间直接通信的

任意一个节点都会从master节点上得到一份完整的集群信息,这个信息包含了分片所在位置,各节点基本信息等等,利用这个信息,每一个节点都有能力独立完成索引和搜索的任务,无需经过master节点。

当一个节点收到用户的一个请求的时候,这个节点就会作为client,解析用户的请求,任务分发给储存相应分片的节点后,将收到的结果进行汇总,然后返回给用户,完成一次完整的请求过程。

具体细节可以参考前面的一遍文章,虽然写得也是一般般

Last modification:September 7th, 2018 at 08:20 pm
If you think my article is useful to you, please feel free to appreciate

Leave a Comment