分布式搜索引擎—浅谈ElasticSearch节点

前言

节点在ES中任何时刻都存在,是一个ElasticSearch的程序实例。多个节点连接在一起的集合被称之为集群。在本地开发时,我们使用了单个ElasticSearch节点,这个节点也可以看作是一个集群,只不过这个集群中只有一个节点,集群中所有的功能都需要这个节点完成,包括搜索、建索引、聚合、分配分片等。虽然单个也能实现基本的功能,但由于搜索和索引对CPU,内存和IO的消耗都特别大,为了保证系统稳定性,其中最重要的就是将主节点数据节点分离

主节点

在一个节点启动后,ES的自动发现机制会去集群中寻找其它节点,集群会从候选主节点中选出一个节点作为主节点。主节点主要负责集群中的轻量级操作,负责创建索引、删除索引、分配分片、追踪集群中的节点状态等工作,相当于扮演团队大脑的角色,所以它对集群的来说稳定性非常重要。
如果集群只有单个节点或者和数据节点混在一起,主节点就需要处理各种各样的任务,建立索引和搜索又都是对CPU、内存、I/O消耗很大的任务,会对主节点的资源造成很大压力,严重时导致主节点宕机。为了确保主节点的稳定性,不受到大的压力,在集群中最好有专用的主节点和多个专用的数据节点。尽量降低主节点的负载,对整个集群稳定性来讲非常重要。
创建一个专用的候选主节点可以使用以下配置:

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

数据节点

数据节点是除了主节点外,最重要的节点,数据节点存储了所有的分片,文档,索引数据。数据节点顾名思义,主要用来处理数据相关的操作,CRUD、搜索和聚合,它也是对机器配置要求最高的节点,首先需要大量的磁盘的空间来存储数据,再者索引和搜索等数据操作对CPU、内存、IO密集型的消耗都非常大,很吃系统资源。对数据节点的监控非常重要,在检测到数据节点的性能超载时,应该及时在集群中添加数据节点。把数据节点独立出来最大好处是,可以使数据处理和主节点分开,会大大减少主节点的压力,对提升集群的稳定性很有意义。
创建一个专用的数据节点可以使用以下配置:

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

协调节点

协调节点的作用就把客户端的请求转分配给最合适的节点来处理,简单来讲就是负载均衡的作用。集群中每个节点的负载情况和健康状况都不一样,有些节点可能已经超负荷了,有一部分甚至已经不健康了,这些不健康的节点就不该再接收请求,否则会导致失败的响应,协调节点知道集群中各个节点的状态。
大多数情况下不需要专用的协调节点,协调节点的功能可以由主节点或数据节点来完成,中小型集群中,专门的协调节点的并没有专用的数据节点必要。
创建专用的协调节点可以使用以下配置:

node.master: false 
node.data: false 
node.ingest: false 
search.remote.connect: false

相关推荐