暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Elasticsearch的重要配置

碧茂大数据 2022-03-23
344

更多精彩,请点击上方蓝字关注我们!

  • Elasticsearch在生产中使用cluster之前必须考虑许多事项:

      • Path设置

      • Cluster name设置

      • Node name设置

      • Network host设置

      • Discovery设置

      • Heap size设置

      • JVM heap dump path设置

      • GC logging设置

      • Temporary directory设置

      • JVM fatal error log设置

      • Cluster备份

1 路径设置

  • 如果正在使用 .zip 或 .tar.gz 归档, data 和 logs 目录在都在 $ES_HOME 下

    • 如果这些比较重要的文件夹保留在默认位置,则 Elasticsearch 升级到新版本时,很有可能被删除

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

复制
  • RPM 和 Debian 发行版已经为 data 和 logs 使用了自定义路径。

  • path.data 可以设置为多个路径,在这种情况下,所有路径将用于存储数据

    • 属于单个shard的文件将全部存储在同一数据路径上:

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

复制

2 cluster名称

  • 当node与cluster中的所有其他node共享 cluster.name 时,该node就能加入cluster

  • 默认名称是 elasticsearch,但可将其更改为描述cluster用途的适当名称

cluster.name: logging-prod

复制
  • 确保不要在不同的环境中重复使用相同的cluster名称,否则最终可能会导致node加入错
    误的cluster

3 node名称

  • Elasticsearch 使用 node.name 作为 Elasticsearch 特定 instance 的可读标识符,因此它被包含在许多 API 的响应中

  • 它默认机器在 Elasticsearch 启动时的主机名,但可以在 elasticsearch.yml 中更改配置,如下所示:

node.name: prod-data-2

复制

4 Network host设置

  • 默认情况下, Elasticsearch 仅绑定回送地址

    • 例如 127.0.0.1 和 [::1]

    • 这样足以在服务器上运行单nodecluster

  • 实际上,可以从单node上相同的 $ ES_HOME 位置启动多个node

    • 这对于测试 Elasticsearch 形成cluster的能力很有用,但不建议在生产中使用此配置

  • 为了与其他服务器上的node形成cluster,node将需要绑定到非回送地址

    • 尽管有许多网络设置方式,但通常需要配置的只是 network.host:

network.host: 192.168.1.10

复制
  • network.host 还可以设置一些特殊值

    • 例如local,site,global 以及诸如 :ip4 和 :ip6

5 重要的discovery和cluster初始化设置

  • 在投入生产之前,应配置如下2个参数,以便cluster中的node可以彼此发现并选举一个主node:

    • discovery.seed_hosts

    • cluster.initial_master_nodes

  • discovery.seed_hosts

    • 开箱即用,无需任何网络配置,Elasticsearch 将绑定到可用的回送地址,并将扫描 Local 端口9300 至 9305

    • 如果要与其他主机上的node组成cluster,则必须设置 discovery.seed_hosts

discovery.seed_hosts:
- 192.168.1.10:9300
- 192.168.1.11
- seeds.mydomain.com
- [0:0:0:0:0:ffff:c0a8:10c]:9301

复制
  • cluster.initial_master_nodes

    • 重新启动cluster或者有新node加入cluster时,不应使用此设置

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

复制

6 Heap size设置

  • 默认情况下,Elasticsearch 会告诉 JVM 使用最大和最小 1 GB 的堆

    • Xms(最小堆大小) 和 Xmx(最大堆大小) 设置,应该让这 2 个参数相等

    • Elasticsearch 将通过 [jvm.options]中指定整个堆

  • Xmx 和 Xms 设置不应该超过宿主机内存的 50%

    • Xmx 和 Xms 设置不超过 JVM 用于压缩对象指针(压缩 oops ), 确切的值会有有所不同,但是接近 32G,可以通过在日志中查找验证是否在阈值之下:

[1.9gb], compressed ordinary object pointers [true]

复制
  • 下面是通过 jvm.options 文件设置堆大小的示例:

1. -Xms2g 
2. -Xmx2g

复制
  • 也可以通过环境变量设置堆大小

    • 将最小和最大堆大小设置为 2 GB

    • 将最小和最大堆大小设置为 4000 MB

    • 这可以通过在 jvm.options 文件,并通过 ES_JAVA_OPTS 设置以下值:

ES_JAVA_OPTS="-Xms2g -Xmx2g" ./bin/elasticsearch 
ES_JAVA_OPTS="-Xms4000m -Xmx4000m" ./bin/elasticsearch

复制

7 VM heap dump 文件路径

  • Elasticsearch 配置 JVM 的默认配置,将内存不足异常时生成的 heap dump 文件保存到data 目录

    • 当以 RPM 和 Debian 的方式安装时,在 var/lib/elasticsearch 目录下

    • 当以 tar 和 zip 压缩包的方式安装时,data 目录在 Elasticsearch 的根目录下

  • 如果此路径不适合存储 heap dump 文件,应该修改 jvm.options 的配置项 -
    XX:HeapDumpPath=...

    • 当指定的是一个目录,那么 JVM 将以正在运行 instance 的 PID 作为 heap dump 的文件名

    • 如果指定的是一个文件而不是一个目录,当出现内存不足异常时,必须确保这个文件不存在,否则 heap dump 将会生成失败

8 GC logging设置

  • 默认情况下,Elasticsearch 启用 GC 日志

  • 这些是在 jvm.options 中配置的,默认为与 Elasticsearch 日志相同的默认位置

  • 默认配置每 64 MB 轮换一次日志,最多可消耗 2 GB 磁盘空间

9 临时文件

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

  • 在某些 Linux 发行版上,如果最近未访问过文件和目录,则系统程序将从 / tmp 中清除文件和目录

    • 如果长时间不使用需要临时目录的功能,这可能会导致在运行时, Elasticsearch 删除私有临时目录

    • 如果随后使用需要临时目录的功能,则将导致问题

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

  • 但如果打算长时间在 Linux 上运行.tar.gz 发行版,则应考虑为 Elasticsearch 创建专用的临时目录,该临时目录不在将清除旧文件和目录的路径下

    • 该目录应该设置权限,以便只有运行 Elasticsearch 的用户才能访问它

    • 然后在启动 Elasticsearch 之前将 $ ES_TMPDIR 环境变量指向它

10 JVM 致命错误日志

  • 默认情况下,Elasticsearch 将 JVM 配置为将致命错误日志写入默认日志目录

    • 在RPM和Debian软件包上,这个目录是/var/log/elasticsearch.

    • 在Linux 和 MacOS以及Windows发行版上,该logs 目录位于 Elasticsearch 安装的根目录下

  • 这些是 JVM 在遇到致命错误(例如分段错误)时生成的日志

    • 如果此路径不适合接收日志,则应将参数修改成备用路径 -XX:ErrorFile=... 在 jvm.options

11 cluster备份

  • 在灾难中,快照可以防止永久性数据丢失

  • 快照生命周期管理是对cluster进行定期备份的最简单方法

关注公众号:领取精彩视频课程&海量免费语音课程




文章转载自碧茂大数据,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论