前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Elasticsearch 6.x 配置详解

Elasticsearch 6.x 配置详解

作者头像
create17
发布2019-12-02 21:35:45
1.3K0
发布2019-12-02 21:35:45
举报

欲先利其事,必先利其器,学 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 节点:普通服务器即可(如果要进行分组聚合操作的话,建议这个节点内存也分配多一点)。
代码语言:javascript
复制
# 配置文件中给出了三种配置高性能集群拓扑结构的模式,如下: 
# 1. 如果你想让节点从不选举为主节点,只用来存储数据,可作为负载器。在集群中,需要单独设置几个这样的节点只负责存储、查询、聚合数据。
# node.master: false 
# node.data: true 
# node.ingest: false

# 2. 如果想让节点成为主节点,且不存储任何数据,并保有空闲资源,可作为协调器 
# node.master: true 
# node.data: false
# node.ingest: false 

# 3. 如果想让节点既不称为主节点,又不成为数据节点,那么可将他作为搜索器,从节点中获取数据,生成搜索结果等 
# node.master: false 
# node.data: false 
# node.ingest: true (可不指定,默认为开启)

# 4. 仅作为协调器 
# node.master: false 
# node.data: false
# node.ingest: false

# 5. 既有成为主节点的资格,又可以存储数据,还可以作为预处理节点(不建议这样,节点压力太大)
# node.master: true
# node.data: true
# node.ingest: true

建议集群中设置 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。
  • discovery.zen.ping.unicast.hosts:提供其他 Elasticsearch 服务节点的单点广播发现功能。配置集群中基于主机 TCP 端口的其他 Elasticsearch 服务的逗号分隔列表。比如: ["node205.data:9300","node205.data:9301","node205.data:9302"]。如不指定端口号,则默认为 9300 。

6、Index

代码语言:javascript
复制
# 设置索引的分片数,默认为 5 
index.number_of_shards: 5 

# 设置索引的副本数,默认为 1: 
index.number_of_replicas: 1

7、Discovery

# --------------------------------- Discovery ----------------------------------

  • 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 制表符。
  • 属性和值之间的 “:” 后面需要有一个空格。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-11-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据实战演练 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、Cluster
  • 二、Path
  • 三、Node
  • 4、Memory
  • 5、Network
  • 6、Index
  • 7、Discovery
  • 8、Gateway
  • 9、Various
  • 10、总结
相关产品与服务
Elasticsearch Service
腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档