Elasticsearch 协调节点如何工作?

new*_*T_T 0 elasticsearch

我正在使用Elsaticsearch Cluster(7.7 OSS版本)。

我总共运行 5 个节点,其中 2 个用于协调节点,3 个用于主节点和数据节点。

我阅读了 Elasticsearch 节点角色指南(https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-node.html#coordinating-node),它告诉我们“每个节点都是隐式的协调节点”

我很困惑,该指南意味着我的主节点和数据节点也可以是协调节点,并且协调节点与主节点和数据节点的分离变得毫无用处。

如果协调节点角色为空,那么协调节点会获得更高的优先级来处理搜索请求或批量索引?

我的协调节点的 yml 文件是这样的

node.master: false
node.data: false
node.ingest: false
Run Code Online (Sandbox Code Playgroud)

当我调用 _cat/nodes api 时,我的协调节点实际上具有“remote_client_cluster”角色 我的协调节点实际上充当协调节点吗?或者作为remote_client_cluster节点工作?

在此输入图像描述

Val*_*Val 5

确实,所有节点本质上都是协调节点,这意味着它们如果收到用户请求就可以处理用户请求。您的两个协调节点实际上是仅协调节点,这意味着它们所能做的就是充当负载均衡器节点,将用户请求分派到数据节点并收集节点响应,然后将其发送回客户端。

当您引入仅协调节点时,其想法是将所有用户流量定向到这些节点,无论流量来自您的客户端、Logstash、Kibana 还是需要与 Elasticsearch 交互的任何其他应用程序。这些仅协调的节点将了解集群状态,从而了解将搜索和索引流量路由到何处。它们的作用就像智能负载平衡器。

您的仅协调节点要真正仅进行协调,必须具有以下配置:

node.data: false 
node.ingest: false 
node.master: false 
node.ml: false 
node.remote_cluster_client: false 
node.transform: false 
node.voting_only: false 
Run Code Online (Sandbox Code Playgroud)

总结一下:

  • 您的两个协调节点将像集群前面的负载均衡器一样处理和管理用户流量
  • 您的主节点将完成其主控工作
  • 您的数据节点将完成其数据工作