Elasticsearch 6.x 配置详解
预先利其事,必先利其器,学 Elasticsearch 也同样遵循这个道理。上一篇文章,我们介绍了 Elasticsearch 的基本概念及特点,今天再介绍一下 Elasticsearch 的配置。本文将对 Elasticsearch 已有的一些配置分类地做详细描述。一起来学习复习吧!
一、Cluster
# ———————————- Cluster ———————————–
- cluster.name:设置 Elasticsearch 集群名称,默认为 elasticsearch 。
二、Path
# ———————————– Paths ————————————
- path.data:数据存储路径,可用逗号分隔多个位置。此目录需要先设置好,并设置好目录所有者。
- path.logs:日志存储路径。日志文件的前缀为集群名。
三、Node
参考自:https://www.elastic.co/guide/en/elasticsearch/reference/6.4/modules-node.html
# ———————————— Node ————————————
- node.name:设置 elasticsearch 节点名称。可以使用 ${HOSTNAME} 来获取当前机器主机名为 node 名称。
- node.master:使其有资格被选作控制整个集群的主节点(主资格节点)。负责集群范围内的轻量级操作,例如创建或删除索引,更改集群状态,跟踪哪些节点是集群的一部分以及确定将哪些碎片分配给哪些节点。默认为 true 。
- node.data:数据节点保存数据并执行与数据相关的操作,例如 CRUD,搜索和聚合。默认为 true 。
- node.ingest:客户端节点。处理路由请求,处理搜索,分发索引操作。默认为 true 。注意:添加太多的客户端节点对集群是一种负担,因为主节点必须等待每一个节点集群状态的更新确认!客户节点的作用不应被夸大,数据节点也可以起到类似的作用。
以下为对节点角色的介绍:
- master 节点:普通服务器即可 ( CPU 内存 消耗一般 )。
- data 节点:主要消耗磁盘,内存,cpu 。
- ingest 节点:普通服务器即可(如果要进行分组聚合操作的话,建议这个节点内存也分配多一点)。
1 | 配置文件中给出了三种配置高性能集群拓扑结构的模式,如下: |
建议集群中设置 3台 以上的节点作为 master 节点【node.master: true,node.data: false,node.ingest:false】,这些节点只负责成为主节点,维护整个集群的状态。
再根据数据量设置一批 data节点【node.master: false,node.data: true,node.ingest:false】,这些节点只负责存储数据,后期提供建立索引和查询索引的服务。如果用户请求比较频繁,这些节点的压力也会比较大。
所以在集群中建议再设置一批 ingest 节点也称之为 client 节点【node.master: false,node.data: false,node.ingest:true】,这些节点只负责处理用户请求,实现请求转发,负载均衡等功能。
4、Memory
# ———————————– Memory ———————————–
- bootstrap.memory_lock:在启动时锁定内存,避免交换(swapped)带来的性能损失。当 jvm 开始 swapping 时,系统交换内存时,Elasticsearch 的性能较差。所以要保证它不 swap,这对节点健康极其重要。
5、Network
参考链接:https://www.elastic.co/guide/en/elasticsearch/reference/6.4/modules-network.html
# ———————————- Network ———————————–
- network.host:绑定所在机器的ip或主机名。
- http.port:http 请求的端口号,默认为 9200 。
- transport.tcp.port:es 节点之间通信的端口,默认为 9300。
6、Index
1 | 设置索引的分片数,默认为 5 |
7、Discovery
# ——————————— Discovery ———————————-
- discovery.zen.ping.unicast.hosts:提供其他 Elasticsearch 服务节点的单点广播发现功能。配置集群中基于主机 TCP 端口的其他 Elasticsearch 服务的逗号分隔列表。比如:[“node205.data:9300”,”node205.data:9301”,”node205.data:9302”]。如不指定端口号,则默认为 9300 。
- discovery.zen.minimum_master_nodes:主资格节点参与选主的最小数量,该配置能有效地防止其发生脑裂现象。缺省配置是 1 。一个基本的原则是这里需要设置成 N / 2 + 1 , N 是 node.master=true 的节点个数,也就是 主资格节点 个数。例如在一个三节点的集群中, minimum_master_nodes 应该被设为 3 / 2 + 1 = 2 (四舍五入) 。
- discovery.zen.ping.timeout:各 Elasticsearch 节点通信响应时间。
8、Gateway
参考自:https://www.elastic.co/guide/en/elasticsearch/reference/6.4/modules-gateway.html#modules-gateway
# ———————————- Gateway ———————————–
# 整个集群重新启动时,集群恢复的设置(避免前期执行大量不必要的重新均衡):
- gateway.recover_after_nodes:只要集群中有该数量的节点(包括master主资格节点和data数据节点),Elasticsearch 就可以执行重新均衡操作。
- gateway.expected_nodes:预期在集群中的节点(data或master)数。预期数量的节点加入集群后,将开始恢复本地分片。默认为 0 。
- gateway.recover_after_time:如果未达到预期的节点数,则恢复过程将等待配置的时间,然后再尝试恢复。如果配置了expected_(xxx_)nodes,则默认为 5m 。
假如某配置文件有上述三配置,则上述设置的组合意味着 Elasticsearch 等待至 gateway.recover_after_nodes 所表示的节点数量存在后,在 gateway.recover_after_time 所表示的分钟数 或者 在 gateway.expected_nodes 所表示的节点数连接到集群(以先满足任一条件为准)后再开始恢复。
9、Various
# ———————————- Various ———————————–
- action.destructive_requires_name: true 这个设置使删除只限于特定名称指向的数据, 而不允许通过指定 _all 或 通配符 来删除指定索引。
10、总结
Elasticsearch 已经为大多数参数设置合理的默认值,该文档对配置文件已有的一些配置做了详细描述。请注意,配置文件为 yml 格式的文件,书写请参考以下标准:
- 属性顶格写,不能有空格。
- 缩进一定不能使用 tab 制表符。
- 属性和值之间的 “:” 后面需要有一个空格。
点关注,不迷路
好了各位,以上就是这篇文章的全部内容了,能看到这里的人呀,都是人才。
白嫖不好,创作不易。各位的支持和认可,就是我创作的最大动力,我们下篇文章见!
如果本篇博客有任何错误,请批评指教,不胜感激 !
原文作者: create17
版权声明: 转载请注明出处(码字不易,请保留作者署名及链接,谢谢配合!)