Table of Contents

  1. 概述
  2. 主合格节点
  3. 数据节点
  4. 摄取节点
  5. 只协调节点
  6. 节点的数据路径设置

概述

章节:Moudles>>Node

任何时候你启动Elasticsearch的实例时,你启动一个 节点。连接的节点的集合被称为一个 集群。如果您正在运行Elasticsearch的一个节点,那么你有一个包含一个节点的集群。

集群中的每个节点都默认的可以处理HTTP和 Transport 流量。传输层专门用于节点们和JavaTransportClient的的通信 ; HTTP层仅由外部REST客户端使用。

所有节点都了解所有集群中的其他节点,而且可以转发客户端请求到相应的节点。除此之外,每个节点提供一个或多个目的:

  • 主合格的节点
    具有节点node.master设置为true(默认值),这使得它有资格被选为主节点,主节点可以控制该集群。

  • 数据节点
    具有节点node.data设置为true(默认)。数据节点保存数据并进行数据相关的操作,如CRUD,搜索和聚合。

  • 摄取节点
    具有节点node.ingest设置为true(默认)。摄取节点都能够运用摄取管道,以便建立索引之前转换和丰富文档。如果想拥有一个重摄取负载,可以使用专用摄取节点然后设置主数据和节点的 node.ingest: false

  • 部落节点
    一个部落节点,通过tribe.*设置,是一种特殊类型的协调,可以连接到多个集群并在所有连接的集群执行搜索和其他操作。

默认情况下,一个节点是主合格的节点和数据节点,再加上它可以通过摄取管道预处理文件。这对小集群非常方便,但是,随着集群的增长,考虑从专用数据节点分离出专用主节点资格就变得很重要。

注意:协调节点
如搜索请求或批量索引请求可能涉及到不同的数据节点上保存的数据。例如搜索请求,分两个阶段,这是由接收客户机请求的节点协调执行的,这个节点就叫做协调节点。

在分散阶段,协调节点将请求转发到该保存数据的数据节点。每个数据节点本地执行的请求,其结果返回到协调节点。在收集 阶段,协同节点汇集每个数据节点的结果转换成一个单一的全球结果集。

每个节点是隐含协调节点。这意味着,节点有下面三个设置node.master,node.data,node.ingest设置为false,则只充当一个协调节点,它不能被禁用。其结果是,这样一个节点需要有足够的内存和CPU以处理收集阶段。

主合格节点

主节点负责轻量的集群范围的操作,如创建或删除的索引,跟踪哪些节点是群集的一部分,并且决定哪些分片分配给哪些节点,有一个稳定的主节点对集群的健康是很重要的。

任何主合格的节点(默认情况下所有节点)可能当选成为由主节点通过主选举进程。

重要
主节点必须能够访问该data/目录(就像 data节点),这样集群状态会在节点重新启动后在节点之间被保持。

索引和搜索您的数据是CPU,内存 和I / O密集型的工作,这样会把压榨一个节点的资源。为了确保您的主节点是稳定的,而不是在压力下,在一个大的集群里分出专用主合格节点和专用数据节点是个好主意。

当然主节点也可以表现为协调节点 和路由搜索和索引请求从客户端到数据节点,最好不使用专用的主节点做这个。让主资格的节点做尽可能少的工作,对集群的稳定性很重要。

要创建一个专用的主合格的节点,设置:

1
2
3
node.master: true
node.data: false
node.ingest: false

避免脑裂与minimum_master_nodes设置

为了防止数据丢失,配置 discovery.zen.minimum_master_nodes (缺省为1)是重要的。为了形成一个集群。 使得每个主资格节点都知道 主资格的节点的最小数量 。

为了解释,假设您有由两个主合格节点的集群。网络故障打破了这两个节点之间的通信。每个节点可以看到一个主合格的节点. 也就是他们.本身。随着minimum_master_nodes设置为默认1,这样足以形成一个集群。每个节点选择自己作为新的主(认为其他主合格的节点已经挂掉),结果形成了两个集群,或脑裂。这两个节点永远不会重新加入到一个节点被重新启动。已经写入到重新启动的节点的任何数据都将丢失。

现在,假设你有一个集群有三个主节点的资格,并 minimum_master_nodes设置为2。如果网络故障分开三个节点中的一个,一个节点这边不够的主节点的资格,并意识到它不能选择自己为master。具有两个节点的边将选举新的master(如果需要),并继续正常工作。一旦网络拆分得到解决,单个节点将重新加入集群,并重新开始服务请求。

此设置应遵循一个公式:

1
(master_eligible_nodes / 2)+ 1

换句话说,如果有三个主资格节点,则最小主节点应设置为(3 / 2) + 1或2:
即:

1
discovery.zen.minimum_master_nodes:2

此设置还可以动态地改变

1
2
3
4
5
6
PUT _cluster/settings
{
"transient": {
"discovery.zen.minimum_master_nodes": 2
}
}

小提示
分开专用master节点和数据角色的一个优点是,如果你可以有只有三个主节点资格,并设置minimum_master_nodes到2。你不用再更改此设置,无论你有多少个专用的数据节点添加到集群。

数据节点

数据节点保留着包含已索引文档的分片。数据节点处理相关操作,比如CRUD,搜索和汇总数据。这些操作是I / O-,内存 - 和CPU密集型。监视这些资源,以及当他们超载
时添加更多的数据节点是很重要的。

具有专用数据节点的主要优点是master和数据节点角色的分离。
要创建一个专用的数据节点,设置:

1
2
3
node.master: false
node.data: true
node.ingest: false

摄取节点

摄取节点可以执行预处理管道,由一个或多个摄取处理器组成。根据摄取处理器和所需的资源执行的操作的类型决定,有专门的摄取节点是有意义的,只会执行这个特定的任务。
要创建一个专用的采集节点,设置:

1
2
3
4
node.master: false
node.data: false
node.ingest: true
search.remote.connect: false

只协调节点

如果你去掉 到能master责任,去掉保持数据的能力,去掉预处理文件,那么你就留下了一个协调节点,它只能路由请求,处理搜索收集阶段,并分发批量索引。从本质上讲,只协调节点表现为智能负载均衡。

只协调节点对大集群有益,他们加入集群,收到完整的群集状态,像其他的节点,它们使用群集状态直接路由请求到适当位置。

警告
加入过多的协调会提高整个集群的负担,因为master节点,必须从每个节点等待集群状态更新!只协调节点的好处不应该被夸大 - 数据节点可以达到同样的目的。
要创建一个专门的协调节点,设置:

1
2
3
4
node.master: false
node.data: false
node.ingest: false
search.remote.connect: false

节点的数据路径设置

  • path.data

每个数据和主合格的节点需要访问其中分片和索引和集群的元数据将被存储在这个数据目录。path.data默认是$ES_HOME/data,但可以在被配置elasticsearch.yml的配置文件的绝对路径或相对于一路径$ES_HOME如下:

1
path.data: /var/elasticsearch/data

像所有的节点设置,也可以在命令行上指定的:

1
./bin/elasticsearch -Epath.data=/var/elasticsearch/data

小提示
当使用.zip或.tar.gz分发版,path.data设置应配置为定位Elasticsearch主目录之外的数据目录,从而使主目录可以删除,但不删除您的数据!rpm和Debian发行版为你已经这样做了。

  • node.max_local_storage_nodes

path.data可以由多个节点共享,即使是不同的集群的节点。这对你在开发机器上测试故障转移和不同的配置是非常有用的。在生产环境中,建议每个服务器上运行一个节点Elasticsearch的。

默认情况下,Elasticsearch被构造成防止多于一个的节点共享同一数据路径。要允许多个节点(例如,在开发计算机上),使用设置 node.max_local_storage_nodes和将其设置为一个正整数大于一。

警告
不要运行来自相同数据目录的不同的节点类型(例如master和data节点)。这会导致意外的数据丢失。

其他节点设置与X-包节点设置 略
(本文完)