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)。这足以在服务器上运行单个开发节点。

  • tip: 实际上,可以从$ES_HOME 单个节点上的相同位置启动多个节点。这对于测试Elasticsearch形成集群的能力非常有用,但它不是推荐用于生产的配置。

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

network.host: 192.168.1.10

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

  • tip:只要您提供自定义设置network.host,Elasticsearch就会假定您正在从开发模式转移到生产模式,并将许多系统启动检查从警告升级到异常。有关更多信息,请参阅开发模式与生产模式

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
  • cluster.initial_master_nodes: 初始主节点应由其标识 node.name,默认为其主机名。确保值cluster.initial_master_nodes与node.name 确切匹配。如果使用完全限定的域名(例如 master-node-a.example.com节点名称),则必须在此列表中使用完全限定名称; 相反,如果node.name是一个没有任何尾随限定符的裸主机名,那么你还必须省略尾随限定符cluster.initial_master_nodes。

设置堆大小

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

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

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

  • 设置Xmx并且Xms不超过物理RAM的50%。Elasticsearch需要内存用于JVM堆以外的其他目的,为此留出空间很重要。例如,Elasticsearch使用堆外缓冲区进行有效的网络通信,依赖操作系统的文件系统缓存来有效访问文件,而JVM本身也需要一些内存。使用比使用该Xmx设置配置的限制更多的内存来观察Elasticsearch进程是正常的。

  • 设置Xmx并且Xms不超过JVM用于压缩对象指针的阈值(压缩oops); 确切的阈值变化但接近32 GB。您可以通过在日志中查找如下所示的行来验证您是否低于阈值:

    heap size [1.9gb], compressed ordinary object pointers [true]
  • 理想情况下设置Xmx并且Xms不超过基于零的压缩oops的阈值; 确切的阈值会有所不同,但大多数系统上26 GB是安全的,但在某些系统上可能高达30 GB。您可以通过使用JVM选项启动Elasticsearch -XX:+UnlockDiagnosticVMOptions -XX:+PrintCompressedOopsMode并查找如下所示的行来验证您是否低于此阈值 :

    heap address: 0x000000011be00000, size: 27648 MB, zero based Compressed Oops

    显示已启用从零开始的压缩oops。如果未启用从零开始的压缩oops,则会看到如下所示的行:

    heap address: 0x0000000118400000, size: 28672 MB, Compressed Oops with base: 0x00000001183ff000

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到备用路径。

ES重要配置解析的更多相关文章

  1. Apache入门 篇(二)之apache 2.2.x常用配置解析

    一.httpd 2.2.x目录结构 Cnetos 6.10 YUM安装httpd 2.2.x # yum install -y httpd 程序环境 主配置文件: /etc/httpd/conf/ht ...

  2. NGINX(四)配置解析

    前言 nginx配置解析是在初始化ngx_cycle_t数据结构时,首先解析core模块,然后core模块依次解析自己的子模块. 配置解析过程 nginx调用ngx_conf_parse函数进行配置文 ...

  3. nsq源码阅读笔记之nsqd(一)——nsqd的配置解析和初始化

    配置解析 nsqd的主函数位于apps/nsqd.go中的main函数 首先main函数调用nsqFlagset和Parse进行命令行参数集初始化, 然后判断version参数是否存在,若存在,则打印 ...

  4. configparser_配置解析器

    configparser:配置解析器 import configparser config = configparser.ConfigParser() #配置文件 config[', 'Compres ...

  5. spring+mybaits xml配置解析----转

    一.项目中spring+mybaits xml配置解析 一般我们会在datasource.xml中进行如下配置,但是其中每个配置项原理和用途是什么,并不是那么清楚,如果不清楚的话,在使用时候就很有可能 ...

  6. ES 自动恢复分片的时候不恢复了是磁盘超过了85%,然后不恢复了 ES可以配置多个数据目录

    ES 自动恢复分片的时候不恢复了是磁盘超过了85%,然后不恢复了   ES可以配置多个数据目录

  7. DNS Bind服务配置解析

    DNS域名解析服务(Domain Name System)是用于解析域名与IP地址对应关系的服务,功能上可以实现正向解析与反向解析: 一.DNS服务器工作模式分类: 1.主服务器:在特定区域内具有唯一 ...

  8. 初识nginx——配置解析篇

    一.nginx的介绍 nginx是由俄罗斯人开发的一款高性能的http和反向代理服务器,也可以用来作为邮件代理.相比较于其他的服务器,具有占用内存少,稳定性高等优势 二.nginx的配置 nginx的 ...

  9. OK335xS 系统启动配置解析

    OK335xS 系统启动配置解析 一.参考文档: AM335x ARM® Cortex™-A8 Microprocessors (MPUs) Technical Reference Manual 二. ...

随机推荐

  1. .NET GC工作流程

    前言 在上文[如何获取GC的STW时间]一文中,我们聊到了如何通过监听GC发出的诊断事件来计算STW时间.里面只简单的介绍了几种GC事件和它的流程. 群里就有小伙伴在问,那么GC事件是什么时候产生的? ...

  2. .net webapi 实现 接口版本控制并打通swagger支持

    我们在开发 webapi 项目时如果遇到 api 接口需要同时支持多个版本的时候,比如接口修改了入参之后但是又希望支持老版本的前端(这里的前端可能是网页,可能是app,小程序 等等)进行调用,这种情况 ...

  3. SpringCloud微服务实战——搭建企业级开发框架(四十四):【微服务监控告警实现方式一】使用Actuator + Spring Boot Admin实现简单的微服务监控告警系统

      业务系统正常运行的稳定性十分重要,作为SpringBoot的四大核心之一,Actuator让你时刻探知SpringBoot服务运行状态信息,是保障系统正常运行必不可少的组件.   spring-b ...

  4. ABC251 题解

    典中典比赛 . 目录 A - Six Characters B - At Most 3 (Judge ver.) C - Poem Online Judge D - At Most 3 (Contes ...

  5. 丽泽普及2022交流赛day16 社论

    这场比较平凡吧 . 省流: http://zhengruioi.com/contest/1087 目录 目录 A. Gene 题面 题解 算法一(正解) 算法二 B. Fight 题面 题解 算法一( ...

  6. 移动web开发02

    虽然视口很多,但是我们只用一个.就是理想视口. 单标签. 原本是高宽都300的.后来变成移动端后没有变成300/750,也不是300/1334.而是占据了一大半(300/375).甚至375就满屏了. ...

  7. Javaweb06-JDBC

    1.jdbc.properties配置文件 jdbc.properties driverClass=com.mysql.jdbc.Driver jdbcUrl=jdbc:mysql://localho ...

  8. php YII2空数组插入报错问题处理 Array to string conversion

    问题描述 前端传空数组 [],php接收后处理不当插入数据库时报错Array to string conversion 参数示例 { "id": 0, //ID整型 "t ...

  9. vue自定义switch开关,使用less支持换肤

    实际项目用到了,记录一下,也方便以后使用,这样也可以避免为了使用一个switch,引入整个外部web框架: 也可以方便更好的理解是和使用less. 基础代码使用的是网上的,然后自己添加了less换肤, ...

  10. Luogu1099 树网的核 (暴力?,floyd?)(还未想正解,暴力就A了)

    阅读理解两小时,手敲暴力思考5分钟.然后\(n^3\)就A了 暴力代码 #include <iostream> #include <cstdio> #include <c ...