高效码农

Elasticsearch7.2中文教程翻译(七): 重要配置解析

path.data和path.logs

如果您使用.zip或.tar.gz存档,则data和logs 目录是子文件夹$ES_HOME。如果这些重要文件夹保留在其默认位置,则在将Elasticsearch升级到新版本时,存在删除它们的高风险。

在生产使用中,您肯定会想要更改数据和日志文件夹的位置:

path:
  logs: /var/log/elasticsearch
  data: /var/data/elasticsearch

该RPM和Debian发行版已经使用自定义路径,data和logs。

该path.data设置可以被设置为多条路径,在这种情况下,所有的路径将被用于存储数据(虽然属于单个碎片文件将全部存储相同的数据路径上):

path:
  data:
    - /mnt/elasticsearch_1
    - /mnt/elasticsearch_2
    - /mnt/elasticsearch_3

cluster.name

一个节点只有在与集群中的所有其他节点有相同的cluster.name时才能加入集群。默认名称是elasticsearch,但是您应该将其更改为描述集群用途的适当名称。

cluster.name: logging-prod

确保不要在不同的环境中重用相同的群集名称,否则最终会导致节点加入错误的群集。

node.name

Elasticsearch使用node.name作为Elasticsearch特定实例的可读标识符,因此它包含在许多api的响应中。它默认为在Elasticsearch启动时计算机所具有的主机名,但可以在Elasticsearch中显式配置如下:

node.name: prod-data-2

network.host

默认情况下,Elasticsearch只绑定到环回地址,例如。127.0.0.1 (::1)。这足以在服务器上运行单个开发节点。

为了在其他服务器上形成包含节点的集群,您的节点将需要绑定到非环回地址。虽然有许多 网络设置,但通常您需要配置的是 network.host:

network.host: 192.168.1.10

该network.host设置也了解一些特殊的值,比如 _local_,_site_,_global_和喜欢修饰:ip4和:ip6,其中的细节中可以找到的特殊值network.host

discovery和集群功能设置

在开始生产之前,应该配置两个重要的发现和群集形成设置,以便群集中的节点可以相互发现并选择主节点。
discovery.seed_hosts
开箱即用,没有任何网络配置,Elasticsearch将绑定到可用的环回地址,并将扫描本地端口9300到9305以尝试连接到在同一服务器上运行的其他节点。这提供了自动集群体验,无需进行任何配置。

如果要在其他主机上形成包含节点的群集,则必须使用该 discovery.seed_hosts设置提供群集中其他节点的列表,这些节点符合主要条件且可能是实时且可联系的,以便为发现过程设定种子。此设置通常应包含群集中所有符合主节点的节点的地址。此设置包含主机数组或逗号分隔的字符串。每个值应采用host:port或的形式host(如果未设置,则port 默认为设置transport.profiles.default.port回落 transport.port)。请注意,必须将IPv6主机置于括号内。此设置的默认值为127.0.0.1, [::1]。

cluster.initial_master_nodes
当您第一次启动全新的Elasticsearch集群时,会出现一个集群引导步骤,该步骤确定在第一次轮训中统计的合格节点集。在开发模式下,如果未配置发现设置,则此步骤由节点本身自动执行。由于此自动引导本质上是不安全的,因此当您在生产模式下启动全新集群时,必须明确列出符合主要条件的节点。使用该cluster.initial_master_nodes设置设置此列表 。

discovery.seed_hosts:
   -  192.168.1.10:9300
   -  192.168.1.11  # 如果未指定,端口将默认为transport.profiles.default.port和回退 transport.port。
   -  seeds.mydomain.com #如果主机名解析为多个IP地址,则该节点将尝试发现所有已解析地址的其他节点。
cluster.initial_master_nodes: 
   -  master-node-a
   -  master-node-b
   -  master-node-c

设置堆大小

默认情况下,Elasticsearch告诉JVM使用最小和最大大小为1 GB的堆。迁移到生产环境时,配置堆大小以确保Elasticsearch有足够的可用堆是很重要的。

Elasticsearch将通过(minimum heap size)和(最大堆大小)设置分配jvm.options中指定的整个堆 。您应该将这两个设置设置为彼此相等Xms Xmx

这些设置的值取决于服务器上可用的RAM量:

Elasticsearch可用的堆越多,它可用于其内部缓存的内存就越多,但它为操作系统用于文件系统缓存的内存就越少。此外,较大的堆可能导致更长的垃圾收集暂停。

以下是如何通过jvm.options文件设置堆大小的示例:

-Xms2g  # 将最小堆大小设置为2g。
-Xmx2g  # 将最大堆大小设置为2g。

也可以通过环境变量设置堆大小。这可以通过注释掉来完成Xms,并Xmx设置在 jvm.options文件中,并通过设置这些值ES_JAVA_OPTS:

ES_JAVA_OPTS="-Xms2g -Xmx2g" ./bin/elasticsearch  # 将最小和最大堆大小设置为2 GB。
ES_JAVA_OPTS="-Xms4000m -Xmx4000m" ./bin/elasticsearch # 将最小和最大堆大小设置为4000 MB。

为Windows服务配置堆不同于上面的堆。最初为Windows服务填充的值可以如上配置,但在安装服务后不同。有关其他详细信息,请参阅[Windows服务文档][3]。

JVM堆转储路径

默认情况下,Elasticsearch将JVM配置为将内存异常转储到默认数据目录(这 /var/lib/elasticsearch适用于RPM和Debian软件包发行版,以及data用于tar和zip归档文件分发的Elasticsearch安装根目录下的目录) 。如果这个路径是不适合接受堆转储,您应该修改的条目-XX:HeapDumpPath=...在 jvm.options。如果指定目录,JVM将根据正在运行的实例的PID为堆转储生成文件名。如果指定固定文件名而不是目录,则当JVM需要在内存不足异常上执行堆转储时,该文件不能存在,否则堆转储将失败。

GC日志
默认情况下,Elasticsearch启用GC日志。这些配置在 jvm.options默认位置和默认位置与Elasticsearch日志相同。默认配置每64MB轮换一次日志,最多可占用2GB的磁盘空间。

临时目录

默认情况下,Elasticsearch使用启动脚本在系统临时目录下创建的专用临时目录。

在某些Linux发行版上,系统实用程序将清除文件和目录(/tmp如果它们最近未被访问过)。如果长时间不使用需要临时目录的功能,则可能导致在Elasticsearch运行时删除专用临时目录。如果随后使用需要临时目录的功能,则会导致问题。

如果使用.deb或.rpm包安装Elasticsearch 并在其下运行,systemd那么Elasticsearch使用的专用临时目录将从定期清理中排除。

但是,如果您打算.tar.gz在Linux 上运行分发一段时间,那么您应该考虑为Elasticsearch创建一个专用的临时目录,该目录不在将从中清除旧文件和目录的路径下。此目录应具有权限集,以便只有运行Elasticsearch的用户才能访问它。然后$ES_TMPDIR在启动Elasticsearch之前将环境变量设置 为指向它。

JVM致命错误日志

默认情况下,Elasticsearch将JVM配置为将致命错误日志写入默认日志记录目录(这/var/log/elasticsearch适用于RPM和Debian软件包发行版,以及logs 针对tar和zip归档文件分发的Elasticsearch安装根目录下的目录 )。这些是JVM在遇到致命错误(例如,分段错误)时生成的日志。如果该路径不适合于接收的日志,则应修改条目-XX:ErrorFile=...中 jvm.options到备用路径。

当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »