Elasticsearch节点类型

2019-09-08 22:49发布

(一)节点类型简介

每次启动Elasticsearch实例时,都会启动一个节点(node)。连接节点的集合称为 集群(cluster)。如果您正在运行Elasticsearch的单个节点,那么您将拥有单节点的集群。

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

每个节点都知道集群中的所有其他节点,并且可以将客户端请求转发到适当的节点。

默认情况下,节点可以是以下类型之一:master-eligible节点,data节点,ingest节点和机器学习machine learning (如果硬件支持)。

随着集群的增长,特别是如果您有大型机器学习作业,请考虑将专用的符合主节点的节点与专用数据节点和专用机器学习节点分开。

符合主节点的节点

node.master设置为true(默认true)的节点,使其有资格被选为控制群集主节点

数据节点

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

Ingest节点

node.ingest设置为true(默认true)的节点。Ingest节点能够将ingest pipeline 应用于文档,以便在编制索引之前转换和增强(transform and enrich)文档。由于Ingest负载很重,因此使用专用的Ingest节点并将主节点和数据节点标记为 node.ingest: false

机器学习节点

xpack.ml.enablednode.ml都设置为true的节点,Elasticsearch默认true。如果要使用机器学习功能,则群集中必须至少有一个机器学习节点。有关机器学习功能的更多信息,请参阅 弹性堆栈中的机器学习

(二)协调节点Coordinating node

诸如搜索请求或批量索引请求之类的请求可能涉及保存在不同数据节点上的数据。例如,搜索请求分两个阶段执行:

分散(scatter 阶段,协调节点将请求转发到保存数据的数据节点。每个数据节点在本地执行请求并将其结果返回给协调节点。在收集(gather  阶段,协调节点将每个数据节点的结果减少为单个全局结果集。

每个节点都隐式地是一个协调节点。将node.masternode.datanode.ingest都设置为false则该节点仅作为协调节点,协调功能不能被禁用。这样的节点需要具有足够的存储器和CPU以便处理收集gather 阶段。

(三)符合主节点的节点Master Eligible Node

主节点负责轻量级群集范围的操作,例如创建或删除索引,跟踪哪些节点是群集的一部分,以及决定将哪些分片分配给哪些节点。拥有稳定的主节点对于集群运行状况非常重要。

任何符合主节点的节点(但不包含 voting-only node 的节点)都有可能通过主选举过程被选举为成为主节点。

主节点必须能够访问data/目录(就像data节点一样 ),因为这是节点重新启动需要获取群集状态的地方。

索引和搜索数据是CPU,内存和I/O密集型工作,可能会对节点资源造成压力。为确保主节点稳定且不受压力,在较大的群集中最好把专用主节点和专用数据节点分开。

虽然主节点也可以表现为协调节点 并将搜索和索引请求从客户端路由到数据节点,但最好不要将专用主节点用于此目的。对于集群的稳定性而言,符合主节点的节点尽可能少地工作是很重要的。

(四)Master Eligible node符合主节点的节点

创建专用的符合主节点的节点,设置如下:

node.master: true       # 默认true
node.voting_only: false # 默认false 
node.data: false        # 默认true
node.ingest: false      # 默认true
node.ml: false          # 默认true
xpack.ml.enabled: true  # 默认true
cluster.remote.connect: false  # 禁用跨群集搜索 默认true 

(五)Voting-only master-eligible node仅投票符合主节点的节点

仅投票的符合主节点的节点是参与 主选举但不会充当群集的选定主节点的节点。

仅投票符合主节点条件的节点是那些参与选举并在集群状态发布期间执行某些任务的节点,但是不能成为主节点的节点。这样的节点实际上根本没有资格成为主节点。

要将符合主节点的节点配置为仅投票节点,请设置:

 node.voting_only: true   # 默认false

高可用性(HA)群集至少需要三个符合主节点的节点,其中至少有两个节点不是仅投票节点。即使其中一个节点发生故障,这样的集群也能够选出主节点。

由于仅投票节点从不充当群集的选定主节点,因此它们可能需要比真正主节点更少的堆和更低功耗的CPU。但是,所有符合条件的节点(包括仅投票节点)都需要相当快速的持久存储以及与群集其余部分的可靠且低延迟的网络连接,因为它们位于发布群集状态更新的关键路径上 。

仅投票符合主节点的节点也可以有群集中的其他角色。例如,节点可以是数据节点和仅投票的符合主节点的节点。专用仅投票符合主节点的节点是没有其他角色的节点。

创建专用的仅限投票符合主节点的节点,请设置:

node.master: true 
node.voting_only: true 
node.data: false 
node.ingest: false 
node.ml: false 
xpack.ml.enabled: true 
cluster.remote.connect: false

(六)Data nodes数据节点

数据节点包含包含已编制索引的文档的分片。数据节点处理与数据相关的操作,如CRUD,搜索和聚合。这些操作是I/O,内存和CPU密集型的。监视这些资源并在超载时添加更多数据节点非常重要。

要在默认分发中创建专用数据节点,请设置:

node.master: false 
node.voting_only: false 
node.data: true 
node.ingest: false 
node.ml: false 
cluster.remote.connect: false 

(七)Ingest nodes

Ingest 节点可以执行由一个或多个Ingest processors组成的预处理流水线。根据Ingest processors执行的操作类型和所需资源,具有专用摄取节点可能是有意义的,这些节点仅执行此特定任务。

创建专用的Ingest 节点,请设置:

node.master: false 
node.voting_only: false 
node.data: false 
node.ingest: true 
node.ml: false 
cluster.remote.connect: false 

(八)仅协调节点

协调节点,该节点只能路由请求,处理搜索减少阶段和分发批量索引。

要在默认分发中创建专用协调节点,请设置:

node.master: false 
node.voting_only: false 
node.data: false 
node.ingest: false 
node.ml: false 
cluster.remote.connect: false 

(九)机器学习节点

机器学习功能提供机器学习节点,用于运行作业和处理机器学习API请求。如果xpack.ml.enabled设置为true而node.ml设置为false,则节点可以为API请求提供服务,但无法运行作业。

node.ml

设置为true(默认)以将节点标识为机器学习节点

如果设置为false,则节点无法运行作业。如果设置为 truexpack.ml.enabled设置为false,则忽略node.ml设置,且节点无法运行作业。如果要运行作业,则群集中必须至少有一个计算机学习节点。

xpack.ml.enabled

设置为true(默认)以在节点上启用机器学习。

如果设置为false,则在节点上禁用机器学习API。因此,节点无法打开作业,启动数据馈送或接收与机器学习API相关的传输(内部)通信请求。

如果要在群集中使用机器学习功能,则必须在所有符合主节点的节点上启用机器学习(设置xpack.ml.enabledtrue)。

有关这些设置的详细信息,请参阅机器学习设置

创建专用机器学习节点,请设置:

node.master: false 
node.voting_only: false 
node.data: false 
node.ingest: false 
node.ml: true 
xpack.ml.enabled: true 
cluster.remote.connect: false 

(十)更改节点的角色

每个数据节点都在磁盘上维护以下数据:

  • 分配给该节点的每个分片的分片数据,
  • 分配给该节点的每个分片对应的索引元数据
  • 群集范围的元数据,例如设置和索引模板。

同样,每个符合主节点的节点都在磁盘上维护以下数据:

  • 集群中每个索引的索引元数据
  • 群集范围的元数据,例如设置和索引模板。

官方文档如下描述:

Each data node maintains the following data on disk:
    the shard data for every shard allocated to that node,
    the index metadata corresponding with every shard allocated to that node, and
    the cluster-wide metadata, such as settings and index templates.
    
Similarly, each master-eligible node maintains the following data on disk:    
    the index metadata for every index in the cluster, and
    the cluster-wide metadata, such as settings and index templates.

每个节点在启动时检查其数据路径的内容。如果它发现不符合的数据,那么它将拒绝启动。这是为了避免导入不需要的dangling indices,这可能导致群集健康变红色。为了更加精确,节点设置了node.data: false,如果磁盘上有任何碎片数据在启动时将拒绝启动,节设置有了node.master: falsenode.data: false如果磁盘上的有任何索引的元数据将拒绝启动。

可以通过调整其elasticsearch.yml文件并重新启动它来更改节点的角色 。为了满足上述意外数据的检查,在将其node.datanode.master角色设置为false时,必须执行一些额外的步骤来准备节点以进行重新调整:

  • 如果你想通过改变来重新调整数据节点node.datafalse,那么你应该先使用分配过滤器安全的所有碎片数据迁移到集群中的其他节点。
PUT _cluster/settings
{
  "transient" : {
    "cluster.routing.allocation.exclude._ip" : "10.0.0.1"
  }
}
  • }如果要设置node.master: false, node.data: false则最简单的方法是启动具有空数据路径和所需角色的全新节点。您可能会发现使用分配过滤器首先将分片数据迁移到群集中的其他位置是最安全的 。

如果无法执行这些额外步骤,那么您可以使用该elasticsearch-node repurpose工具删除任何阻止节点启动的多余数据。

(十一)节点数据路径设置

path.data

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

path.data:  /var/elasticsearch/data

与所有节点设置一样,它也可以在命令行中指定为:

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

使用.zip.tar.gz解压方式安装是,path.data应将该配置为在Elasticsearch主目录之外的目录,以便可以删除主目录而不删除数据!RPM和Debian发行版已经为您完成了这项工作。

(十二)其他节点设置

可以在模块中找到更多节点设置。特别值得注意的是cluster.name,在node.name网络设置



登录 后发表评论
0条评论
还没有人评论过~