Elasticsearch 7 生产环境配置说明

配置文件及目录说明

/etc/elasticsearch/log4j2.properties
/etc/elasticsearch/elasticsearch.yml
/etc/elasticsearch/jvm.options
/etc/default/elasticsearch
/usr/lib/sysctl.d/elasticsearch.conf

/usr/lib/systemd/system/elasticsearch.service

/var/log/elasticsearch
/var/lib/elasticsearch
/usr/share/elasticsearch/plugins

重要的系统配置

systemd配置

# mkdir -p /etc/systemd/system/elasticsearch.service.d

# vim /etc/systemd/system/elasticsearch.service.d/override.conf
...
[Service]
LimitMEMLOCK=infinity
...

# systemctl daemon-reload

禁用swapping

# swapoff -a

# vim /etc/fstab
...
#/swapfile                                 none            swap    sw              0       0
...

# vim /etc/sysctl.conf
...
vm.swappiness=0
...

文件描述符

官方RPM和Debian包已经配置默认文件描述符的最大数量为65535,不需要进一步配置。

vm.max_map_count

官方RPM和Debian包将自动配置此设置。无需进行其他配置。

# cat /usr/lib/sysctl.d/elasticsearch.conf
vm.max_map_count=262144

线程数

当在systemd下作为服务运行时,包分发将自动配置Elasticsearch进程的线程数。不需要额外的配置。

重要的elasticsearch配置

配置文件:/etc/elasticsearch/elasticsearch.yml

path.data和path.logs

path.data: /var/lib/elasticsearch  ## 数据存储目录路径(多个路径使用逗号分隔)
path.logs: /var/log/elasticsearch

注意:可以将path.data设置为多个路径,在这种情况下,所有路径都将用于存储数据(属于单个分片的文件将全部存储在同一数据路径上)。

path.data: /mnt/elasticsearch_1,/mnt/elasticsearch_2,/mnt/elasticsearch_3

cluster.name

cluster.name: logging-prod

node.name

node.name: prod-data-2

network.host

network.host: 192.168.1.10

发现和集群配置

discovery.seed_hosts:
   - 192.168.1.10:9300
   - 192.168.1.11 
   - seeds.mydomain.com 
cluster.initial_master_nodes: 
   - master-node-a
   - master-node-b
   - master-node-c

JVM堆大小配置

## /etc/elasticsearch/jvm.options
-Xms1g
-Xmx1g
或:
## /etc/default/elasticsearch
ES_JAVA_OPTS="-Xms2g -Xmx2g"
或:
ES_JAVA_OPTS="-Xms4000m -Xmx4000m"

好的经验法则是:
将最小堆大小(Xms)和最大堆大小(Xmx)设置为彼此相等。
Elasticsearch可用的堆越多,它可用于缓存的内存就越多。但请注意,过多的堆可能会使您陷入长时间的垃圾收集暂停。
将Xmx设置为不超过物理RAM的50%,以确保有足够的物理RAM留给内核文件系统缓存。
不要将Xmx设置为JVM用于压缩对象指针(压缩oops)的截止值以上;确切的截止值变化但接近32GB。

JVM堆转储路径

默认情况下,Elasticsearch将JVM配置为将[内存不足异常中的堆]转储到默认数据目录(对于RPM和Debian软件包分发版,此目录为/var/lib/elasticsearch;对于tar和zip存档发行版,该目录位于Elasticsearch安装目录的根目录下)。

如果此路径不适合接收堆转储,则应修改jvm.options中的条目-XX:HeapDumpPath=...。如果指定目录,那么JVM将基于正在运行的实例的PID为堆转储生成文件名。

如果指定固定文件名而不是目录,则当JVM需要在内存不足异常时执行堆转储时,该文件必须不存在,否则堆转储将失败。

GC日志

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

临时目录

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

在某些Linux发行版中,如果最近没有访问过,则系统实用程序将从/tmp中清除文件和目录。如果长时间不使用需要使用临时目录的功能,这可能会导致在运行Elasticsearch时删除私有临时目录。如果随后使用需要临时目录的功能,则将导致问题。

如果使用.deb或.rpm软件包安装Elasticsearch并在systemd下运行,则定期清理中将排除Elasticsearch使用的私有临时目录。

JVM致命错误日志

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

posted @ 2021-08-20 08:47  Varden  阅读(523)  评论(0编辑  收藏  举报