ElasticSearch7.6学习日记之设置ElasticSearch:配置ElasticSearch

1.配置ElasticSearch

配置文件位置

Elasticsearch具有三个配置文件:

  • elasticsearch.yml 用于配置Elasticsearch
  • jvm.options 用于配置Elasticsearch JVM设置
  • log4j2.properties 用于配置Elasticsearch日志记录

这些文件位于config目录中,其默认位置取决于安装是来自压缩包发行版(tar.gz或 zip)还是软件包发行版(Debian或RPM软件包)。

对于tar.gz或者zip,配置目录位置默认为 $ES_HOME/config。可以通过ES_PATH_CONF环境变量来更改config目录的位置, 如下所示:

ES_PATH_CONF=/path/to/my/config ./bin/elasticsearch

或者,您可以通过Shell命令export来配置ES_PATH_CONF环境变量。

对于软件包分发,config目录位置默认为 /etc/elasticsearch。config目录的位置也可以通过ES_PATH_CONF环境变量来更改,但是请注意,在您的shell中进行设置是不够的。而是,此变量来自 /etc/default/elasticsearch(对于Debian软件包)和 /etc/sysconfig/elasticsearch(对于RPM软件包)。您将需要相应地ES_PATH_CONF=/etc/elasticsearch在这些文件之一中编辑 条目,以更改配置目录位置。

配置文件格式

配置格式为YAML。这是更改数据和日志目录的路径的示例:

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

也可以按照以下方式设置:

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

环境变量替换

在配置文件中用${...}符号引用的环境变量将替换为环境变量的值,例如:

node.name:    ${HOSTNAME}
network.host: ${ES_NETWORK_HOST}

2.设置JVM选项

您几乎不需要更改JVM选项。如果这样做,最有可能是更改堆大小。本文档的其余部分详细说明了如何设置JVM选项。您可以使用jvm.options文件或ES_JAVA_OPTS环境变量来设置选项。

设置JVM选项(包括系统属性和JVM标志)的首选方法是通过jvm.options配置文件。该文件的默认位置是config/jvm.options(从tar或zip发行版/etc/elasticsearch/jvm.options安装时)和(从Debian或RPM软件包安装时)。

该文件包含遵循特殊语法的以行分隔的JVM参数列表:

  • 仅由空格组成的行将被忽略
  • 以开头的行#被视为注释,并被忽略

  • 以一个-开头的被视为独立于JVM版本而应用的JVM选项

    - Xmx2g

     

  • 以数字开头,:后接一个-被视为仅在JVM版本与该数字匹配时才适用的JVM选项

    8:-Xmx2g

     

  • 以数字开头,-后接:-被视为JVM选项,仅在JVM版本大于或等于该数字时才适用

    8-:-Xmx2g

     

  • 以数字开头,-后接数字,后跟一个:-被视为JVM选项,仅当JVM版本在两个数字范围内时才适用

    8-9:-Xmx2g

     

  • 其他所有形式均被拒绝

您可以将自定义JVM标志添加到此文件,然后将此配置签入版本控制系统。

设置Java虚拟机选项的另一种机制是通过 ES_JAVA_OPTS环境变量。例如:

export ES_JAVA_OPTS="$ES_JAVA_OPTS -Djava.io.tmpdir=/path/to/temp/dir"
./bin/elasticsearch

使用RPM或Debian软件包时,ES_JAVA_OPTS可以在系统配置文件中指定 。

JVM具有用于观察JAVA_TOOL_OPTIONS 环境变量的内置机制。我们有意在打包脚本中忽略此环境变量。这样做的主要原因是,在某些操作系统(例如Ubuntu)上,默认情况下通过此环境变量安装了代理,我们不希望它们干扰Elasticsearch。

此外,其他一些Java程序也支持JAVA_OPTS环境变量。这不是 JVM内置的机制,而是生态系统中的约定。但是,我们不支持此环境变量,而是通过上述jvm.options文件或环境变量来支持设置JVM选项ES_JAVA_OPTS

3.安全设置

某些设置是敏感的,仅依靠文件系统权限来保护其值是不够的。对于此用例,Elasticsearch提供了密钥库和用于管理密钥库中设置的elasticsearch-keystore工具

仅在重新启动Elasticsearch之后,对密钥库的所有修改才会生效。

这些设置与elasticsearch.yml配置文件中的常规设置一样,需要在集群的每个节点上指定。当前,所有安全设置都是特定于节点的设置,在每个节点上必须具有相同的值。

可重新加载的安全设置

就像设置elasticsearch.yml一样,对密钥库内容的更改不会自动应用于正在运行的Elasticsearch节点。修改完成之后需要重新启动节点。但是,某些安全设置被标记为 可重载。可以重新读取此类设置并将其应用到正在运行的节点上。

所有安全设置(可重新加载或不可重新加载)的值在所有群集节点上必须相同。进行所需的安全设置更改后,使用以下bin/elasticsearch-keystore add命令,调用:

POST _nodes/reload_secure_settings

该API在每个群集节点上解密并重新读取整个密钥库,但仅应用于可重载的安全设置。直到下一次重新启动,对其他设置的更改才会生效。调用返回后,重新加载已完成,这意味着依赖于这些设置的所有内部数据结构均已更改。从头开始,所有设置看起来都应该具有新值。

更改多个可重新加载的安全设置时,请在每个群集节点上修改所有这些设置,然后发出reload_secure_settings呼叫,而不是在每次修改后重新加载。

4.记录配置

Elasticsearch使用Log4j 2进行日志记录。可以使用log4j2.properties文件配置Log4j 2。Elasticsearch公开三个属性${sys:es.logs.base_path}, ${sys:es.logs.cluster_name}以及${sys:es.logs.node_name}可以在配置文件中引用,以确定日志文件的位置。该属性${sys:es.logs.base_path}将解析为日志目录, ${sys:es.logs.cluster_name}将解析为群集名称(在默认配置中用作日志文件名的前缀), ${sys:es.logs.node_name}并将解析为节点名称(如果显式设置了节点名称)。

例如,如果你的日志目录(path.logs)是/var/log/elasticsearch和您的群集名为production然后${sys:es.logs.base_path}将解析/var/log/elasticsearch和 ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}.log 将解析/var/log/elasticsearch/production.log

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章