美文网首页ELK
11.Elasticsearch的重要配置

11.Elasticsearch的重要配置

作者: 大勇任卷舒 | 来源:发表于2022-03-24 17:31 被阅读0次
    • 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备份

    11.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
    

    11.2 cluster名称

    • 当node与cluster中的所有其他node共享 cluster.name 时,该node就能加入cluster
    • 默认名称是 elasticsearch,但可将其更改为描述cluster用途的适当名称
    cluster.name: logging-prod
    
    • 确保不要在不同的环境中重复使用相同的cluster名称,否则最终可能会导致node加入错
      误的cluster

    11.3 node名称

    • Elasticsearch 使用 node.name 作为 Elasticsearch 特定 instance 的可读标识符,因此它被包含在许多 API 的响应中
    • 它默认机器在 Elasticsearch 启动时的主机名,但可以在 elasticsearch.yml 中更改配置,如下所示:
    node.name: prod-data-2
    

    11.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

    11.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
    

    11.6 Heap size设置

    • 默认情况下,Elasticsearch 会告诉 JVM 使用最大和最小 1 GB 的堆
      • Elasticsearch 将通过 [jvm.options]中指定整个堆
        • Xms(最小堆大小) 和 Xmx(最大堆大小) 设置,应该让这 2 个参数相等
    • Xmx 和 Xms 设置不应该超过宿主机内存的 50%
      • Xmx 和 Xms 设置不超过 JVM 用于压缩对象指针(压缩 oops ), 确切的值会有有所不同,但是接近 32G,可以通过在日志中查找验证是否在阈值之下:
    [1.9gb], compressed ordinary object pointers [true]
    
    • 下面是通过 jvm.options 文件设置堆大小的示例:
    1. -Xms2g 
    2. -Xmx2g
    
    • 也可以通过环境变量设置堆大小
      • 这可以通过在 jvm.options 文件,并通过 ES_JAVA_OPTS 设置以下值:
        • 将最小和最大堆大小设置为 2 GB
        • 将最小和最大堆大小设置为 4000 MB
    ES_JAVA_OPTS="-Xms2g -Xmx2g" ./bin/elasticsearch 
    ES_JAVA_OPTS="-Xms4000m -Xmx4000m" ./bin/elasticsearch
    

    11.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 将会生成失败

    11.8 GC logging设置

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

    11.9 临时文件

    • 默认情况下,Elasticsearch 启动脚本在系统临时目录下立即创建私有临时目录
    • 在某些 Linux 发行版上,如果最近未访问过文件和目录,则系统程序将从 / tmp 中清除文件和目录
      • 如果长时间不使用需要临时目录的功能,这可能会导致在运行时, Elasticsearch 删除私有临时目录
      • 如果随后使用需要临时目录的功能,则将导致问题
    • 如果使用.deb 或.rpm 软件包安装 Elasticsearch 并在 systemd 下运行它,则定期清理计划将排除 Elasticsearch 使用的私有临时目录
    • 但如果打算长时间在 Linux 上运行.tar.gz 发行版,则应考虑为 Elasticsearch 创建专用的临时目录,该临时目录不在将清除旧文件和目录的路径下
      • 该目录应该设置权限,以便只有运行 Elasticsearch 的用户才能访问它
      • 然后在启动 Elasticsearch 之前将 $ ES_TMPDIR 环境变量指向它

    11.10 JVM 致命错误日志

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

    11.11 cluster备份

    • 在灾难中,快照可以防止永久性数据丢失
    • 快照生命周期管理是对cluster进行定期备份的最简单方法

    大数据视频推荐:
    腾讯课堂
    CSDN
    ELK入门精讲
    AIOps智能运维实战
    ELK7 stack开发运维
    大数据语音推荐:
    ELK7 stack开发运维
    企业级大数据技术应用
    大数据机器学习案例之推荐系统
    自然语言处理
    大数据基础
    人工智能:深度学习入门到精通

    相关文章

      网友评论

        本文标题:11.Elasticsearch的重要配置

        本文链接:https://www.haomeiwen.com/subject/wpbzdrtx.html