[这是我参与11月更文挑战的第14天,活动详情查看:2021最后一次更文挑战]
一、配置方式
Elasticsearch 提供了很好的默认值,并且只需要很少的配置。配置文件应包含特定节点的设置以及集群配置
- 节点设置:
node.name
、paths
- 集群配置:
cluster.name
、network.host
Elasticsearch 有三个配置文件:
elasticsearch.yml
用于配置 Elasticsearchjvm.options
用于配置 Elasticsearch JVM 设置log4j2.properties
用于配置 Elasticsearch 日志记录
配置文件位于 config
目录中,其默认位置取决于安装方法。例如,通过docker安装的es配置文件位于/usr/share/elasticsearch/config
中。配置文件还支持环境变量替换
,如下所示。
1 | bash复制代码node.name: ${HOSTNAME} |
环境变量的值必须是简单的字符串,使用逗号分隔的字符串提供 Elasticsearch 将解析为列表的值。
集群节点分为动态
和静态
两种,动态节点可以在运行时更新且支持临时、持久设置;而静态设置只能在未启动或关闭的节点上使用 elasticsearch.yml
。
Elasticsearch 会按以下优先顺序应用设置:
- 临时设置(Transient):临时设置会在第一次全集群重启后被移除
- 持久化设置(Persistent):可以全集群重启时存活下来
elasticsearch.yml
文件- 默认配置
临时或持久化设置是通过API实现的,具体类型是由字段决定的。例如:
1 | bash复制代码PUT /_cluster/settings |
二、重要的配置
- 路径设置
Elasticsearch 将您索引的数据写入索引并将数据流写入data
目录。Elasticsearch 将自己的应用程序日志写入一个logs
目录,其中包含有关集群运行状况和操作的信息。例如:
1 | javascript复制代码path: |
warn:不要修改数据目录中的任何内容或运行可能干扰其内容的进程。如果 Elasticsearch 以外的其他东西修改了数据目录的内容,那么 Elasticsearch 可能会失败,报告损坏或其他数据不一致,或者可能会在默默丢失一些数据的情况下正常工作。不要尝试对数据目录进行文件系统备份;没有支持的方法来恢复这样的备份。相反,使用 snapshot-restore安全地进行备份。不要在数据目录上运行病毒扫描程序。病毒扫描程序可能会阻止 Elasticsearch 正常工作,并且可能会修改数据目录的内容。数据目录不包含可执行文件,因此病毒扫描只会发现误报。
- 集群名称设置
当节点的cluster.name
配置与集群中的所有其他节点相同时,才能加入集群。默认名称是elasticsearch
,不应当在不同的环境中设置相同的集群名称,避免操作失误。
1 | arduino复制代码cluster.name: "docker-cluster" |
- 节点名称设置
节点名称用于描述节点,该名称会返回在许多响应中。
1 | arduino复制代码node.name: "es02" |
- 网络主机设置
默认情况下,Elasticsearch 只绑定到环回地址
,例如127.0.0.1
和 [::1]
;如果设置为环回地址,es为开发模式,不会进行引导检查
。非环回地址设置:
1 | makefile复制代码network.host: 192.168.1.10 |
- 集群发现设置
Elasticsearch将结合到现有的环回地址和扫描本地端口9300
到9305
,与同一台服务器上运行的其他节点连接。此行为提供了一种自动连接集群,而无需进行任何配置。
如果需要连接其它服务器的节点,需要通过discovery.seed_hosts
设置其它可发现的节点,地址可以是 ipv4、ipv6以及域名。例如
1 | ruby复制代码discovery.seed_hosts: |
当 Elasticsearch 集群初次启动时, 集群引导会在第一次选举中通过计票选择主节点;可以通过可以使用cluster.initial_master_nodes
设置来设置此选举列表。在开发模式下,如果没有配置seed_hosts
,这一步由节点自己自动执行。
1 | makefile复制代码cluster.initial_master_nodes: es01,es02 |
- 堆大小设置
默认情况下,ES 会根据节点的角色和总内存自动设置 JVM 堆大小,大多数生产环境可以使用默认大小。
要覆盖默认堆大小,请使用Xms
设置最小堆和使用Xmx
设置最大堆,最小值和最大值必须相同;
设置Xms
和Xmx
不超过总内存的 50%;
设置堆大小可以配置jvm.options
文件。
docker-compose下修改配置:
1 | makefile复制代码es01: |
- JVM 堆转储路径设置
默认情况下,Elasticsearch 将 JVM 配置为将内存不足异常时的堆转储到默认数据目录;可以修改jvm.options
文件,设置参数-XX:HeapDumpPath
。
- GC 日志设置
默认情况下,ES 会启用垃圾收集 (GC) 日志。ES 日志在jvm.options
文件中配置并输出到默认位置。默认配置每 64 MB 轮换一次日志,最多可消耗 2 GB 的磁盘空间。例如:
1 | ruby复制代码# 禁用日志 |
- 临时目录设置
默认情况下,ES 使用启动脚本在系统临时目录正下方创建的私有临时目录。在某些 Linux 发行版上,系统实用程序会清除/tmp
最近未访问过的文件和目录。如果长时间不需要使用临时目录的功能,此行为会导致在 ES 运行时删除私有临时目录。如果随后使用需要此目录的功能,则删除私有临时目录会导致问题。
为了避免异常,需要设置临时目录权限,以便只有运行 Elasticsearch 的用户才能访问它。
- JVM致命错误日志设置
默认情况下,Elasticsearch 将 JVM 配置为将致命错误日志写入默认日志目录。可以修改jvm.options
文件,设置-XX:ErrorFile
修改文件路径。
- 集群备份
在灾难中,快照可以防止永久性数据丢失;备份集群的唯一可靠且受支持的方法是拍摄快照,不能通过复制其节点的数据目录来备份 Elasticsearch 集群。
三、参考文章
本文转载自: 掘金