1. 节点Node
一个Elasticsearch实例就是一个节点。默认情况下,每个节点都可以处理Http和Transport通信,其中Transport层用于节点以及Java TransportClient间的通信,Http层用于外部REST clients。节点类型:
- Mater-eligible node:默认为true,表示有被选举为master节点的资格。一个集群中只有一个Master node。功能:创建/删除索引、追踪集群节点、对节点分配分片等。
- Data node:默认为true,可以保存数据,执行CRUD、search和聚合等与数据相关的操作。
- Ingest node:默认为true,在文档被索引前执行预处理操作,如:定义一个有一系列Processors(处理器)组成的pipeline,在文档被索引前对文档执行该pipeline。
在集群比较小时一个节点可以扮演Mater-eligible node、Data node、Ingest node三种角色,但是随着集群规模的增长,将Mater-eligible node和Data node从同一个节点分离就变很重要了。
Coordinating node(协调节点):当node.master、node.data和node.ingest都为false时,则当前节点为协调节点。一个search请求分两个阶段:scatter阶段(协调节点将请求转发到data nodes,每一个data node在本地执行搜索请求并将结果返回给协调节点)和gather阶段(协调节点基于搜索条件将每一个data node的结果聚集到一个全局结果集中)。
为了避免split brain应该设置discovery.zen.minimum_master_nodes=(master_eligible_nodes / 2) + 1
2. Local Gateway
存储整个集群重新启动时的集群状态和分片数据。
Elasticsearch的恢复过程是一个初始化所有分片和副本,从事务日志读取所有数据,并将其应用到分片的过程。
- gateway.expected_nodes:当集群中节点个数与该属性值相等时立即启动恢复过程。
- gateway.expected_master_nodes:当集群中Mater-eligible节点个数与该属性值相等时立即启动恢复过程。
- gateway.expected_data_nodes:当集群中data节点个数与该属性值相等时立即启动恢复过程。
- gateway.recover_after_nodes:当集群中节点个数等于该值后,开始恢复过程。
- gateway.recover_after_master_nodes:当集群中Mater-eligible节点个数等于该值后,开始恢复过程。
- gateway.recover_after_data_nodes:当集群中data节点个数等于该值后,开始恢复过程。
- gateway.recover_after_time:当集群中有gateway.recover_after_nodes指定个数的节点后,再等待多长时间开始回复。
3. 节点探索(Zen discovery)
在启动Elasticsearch节点时,寻找对其可见的拥有相同集群名称的主节点;如果找到了主节点则加入到已经创建好的集群中;如果没有找到则该节点自己会被选为主节点。这一创建一个集群并寻找节点的过程称为探索。两个目的:
- 选择一个主节点
- 发现集群中的新节点
Elasticsearch内置zen探索,提供了多播和单播两种探索方法。
3.1 节点ping设置
ping是在两个节点之间发送的信号,以检查节点是否在运行以及是否能够相应。主要配置如下:
- discovery.zen.fd.ping_interval:指定了节点之间相互ping的间隔,默认为1s。
- discovery.zen.fd.ping_timeout:指定了在ping消息发出后等待的时间长度,超过这个时间就认为对方没有响应,默认为30s。
- discovery.zen.fd.ping_retries:指定了在认为一个节点停止工作之前,需要重试的ping操作次数,默认为3。
3.2 种子节点(Seed nodes)
由集群中的master-eligible节点组成。在启动或者选举了一个新master节点时,尝试与种子节点列表中的每个节点连接,并与他们保持一个类似gossip的回话以便找到其他节点和建立一个集群的完整图。有两种方法配置种子节点:
-
unicast:配置了一个由主机名或IP组成的静态列表作为种子节点。由
discovery.zen.ping.unicast.hosts
属性配置。 -
file-based:通过外部文件提供种子节点。当种子节点列表发生变化时不需要重启每个elasticsearch节点就可以被重载。由
discovery.zen.hosts_provider: file
属性配置。该文件应放置在elasticsearch根目录下的config目录中。格式如下:# unicast_hosts.txt 10.10.10.5 10.10.10.6:9305 10.10.10.5:10005 # an IPv6 address [2001:0db8:85a3:0000:0000:8a2e:0370:7334]:9301
4. 插件(Plugins)
安装插件,默认安装在plugins目录中
bin/elasticsearch-plugin install [plugin_name]
列出已安装插件
bin/elasticsearch-plugin list
移除插件
bin/elasticsearch-plugin remove [pluginname]