ElasticSearch 设置-配置(三)重要的ElasticSearch配置

配置ElasticSearch

重要的ElasticSearch配置

Elasticsearch 只需很少的配置即可开始使用,但在生产中使用集群之前必须考虑许多事项:

  • 路径设置
  • 集群名称设置
  • 节点名称设置
  • 网络主机设置
  • 发现设置
  • 堆大小设置
  • JVM 堆转储路径设置
  • GC 日志设置
  • 临时目录设置
  • JVM致命错误日志设置
  • 集群备份

路径设置

Elasticsearch 将您索引的数据写入索引并将数据流写入数据目录。 Elasticsearch 将自己的应用程序日志写入日志目录,其中包含有关集群运行状况和操作信息。

对于 macOS .tar.gz、Linux .tar.gzWindows .zip 安装,数据和日志默认是 $ES_HOME 的子目录。但是,$ES_HOME 中的文件在升级过程中有被删除的风险。

在生产中,我们强烈建议您将 elasticsearch.yml 中的 path.datapath.logs 设置为 $ES_HOME 之外的位置。默认情况下,Docker、Debian、RPM、macOS HomebrewWindows .msi 安装将数据和日志写入 $ES_HOME 之外的位置。

支持的 path.datapath.logs 值因平台而异:

LinuxmacOS 安装支持 Unix 风格的路径:

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

集群名字设置

只有当一个节点与集群中的所有其他节点共享cluster.name时,它才能加入集群。默认名称是elasticsearch,但是您应该将其更改为描述集群用途的适当名称。

cluster.name: logging-prod

节点设置

Elasticsearch使用node.name作为Elasticsearch特定实例的可读标识符。此名称包含在许多API的响应中。节点名称默认为Elasticsearch启动时机器的主机名,但可以在elasticsearch.yml中显式配置:

node.name: prod-data-2

网络设置

默认情况下,Elasticsearch只绑定到127.0.0.1和[::1]等环回地址。对于在单个服务器上运行一个或多个节点的集群进行开发和测试来说,这已经足够了,但是一个有弹性的生产集群必须涉及其他服务器上的节点。有许多网络设置,但通常你需要配置的是network.host:

network.host: 192.168.1.10

发现和集群形成设置

在进入生产之前配置两个重要的发现和集群形成设置,以便集群中的节点可以相互发现并选举一个主节点。

discovery.seed_hosts

开箱即用,无需任何网络配置,Elasticsearch 将绑定到可用的环回地址并扫描本地端口 93009305 以连接运行在同一服务器上的其他节点。这种行为提供了一种自动集群体验,而无需进行任何配置。

当需要与其他主机上的节点组成集群时,可以使用静态发现。seed_hosts设置。此设置提供集群中符合主节点条件的、可能是活动的和可联系的其他节点的列表,以便为发现过程提供依据。此设置接受集群中所有符合主条件的节点的地址的YAML序列或数组。每个地址可以是一个IP地址,也可以是通过DNS解析为一个或多个IP地址的主机名。

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.initial_master_nodes 选项来设置此列表。

注意:第一次成功形成集群后,从每个节点的配置中删除 cluster.initial_master_nodes 设置。重新启动集群或向现有集群添加新节点时,请勿使用此设置。

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: 
   - master-node-a
   - master-node-b
   - master-node-c

通过node.name(默认为主机名)标识初始主节点。确保initial_master_nodes节点中的值与node.name完全匹配。如果节点名称使用完全限定域名,如master-node-a.example.com,则必须使用此列表中的完全限定域。相反,如果node.name是没有任何尾随限定符的裸主机名,则还必须省略initial_master_nodes节点中的尾随限定符。

堆大小设置

默认情况下,Elasticsearch 会根据节点的角色和总内存自动设置 JVM 堆大小。我们建议为大多数生产环境使用默认大小。

如果需要,您可以通过手动设置 JVM 堆大小来覆盖默认大小。具体设置请参阅setting the JVM heap size

JVM堆转储路径设置

默认情况下,Elasticsearch 将 JVM 配置为将内存不足异常时的堆转储到默认数据目录。在RPMDebian包中,data目录为/var/lib/elasticsearch。在Linux、MacOSWindows发行版中,数据目录位于Elasticsearch安装的root目录下。

如果此路径不适合接收堆转储,请修改 jvm.options 中的 -XX:HeapDumpPath=... 选项:

  • 如果指定目录,JVM 将根据正在运行的实例的 PID 为堆转储生成文件名。
  • 如果指定固定文件名而不是目录,则当 JVM 需要对内存不足异常执行堆转储时,该文件不允许存在。否则,堆转储将失败。

GC 日志设置

默认情况下,Elasticsearch启用垃圾收集(GC)日志。这些在jvm.options中配置,并输出到与Elasticsearch日志相同的默认位置。默认配置每64MB滚动一次日志,最多可消耗2GB的磁盘空间。

你可以根据JEP 158: Unified JVM Logging中的描述使用命令行重新配置JVM日志。除非你直接更改默认的 jvm.options 文件,否则除了你自己的设置之外,还会应用 Elasticsearch 默认配置。要禁用默认配置,首先通过提供 -Xlog:disable 选项禁用日志记录,然后提供您自己的命令行选项。这将禁用所有 JVM 日志记录,因此请务必查看可用选项并启用您需要的所有内容。

例子:

通过使用一些示例选项创建 $ES_HOME/config/jvm.options.d/gc.options 将GC默认的日志输出路径更改为/opt/my-app/gc.log

# Turn off all previous logging configuratons
-Xlog:disable

# Default settings from JEP 158, but with `utctime` instead of `uptime` to match the next line
-Xlog:all=warning:stderr:utctime,level,tags

# Enable GC logging to a custom location with a variety of options
-Xlog:gc*,gc+age=trace,safepoint:file=/opt/my-app/gc.log:utctime,pid,tags:filecount=32,filesize=64m

临时目录设置

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

在一些Linux发行版中,如果文件和目录最近没有被访问过,系统实用程序将清理/tmp中的文件和目录。如果长时间不使用需要临时目录的特性,这种行为会导致在Elasticsearch运行时删除私有临时目录。如果随后使用了需要此目录的特性,那么删除私有临时目录会导致问题。

如果您使用.deb.rpm包安装Elasticsearch,并在systemd下运行它,那么Elasticsearch使用的私有临时目录将被排除在定期清理之外。

如果您打算在LinuxMacOS上长时间运行.tar.gz发行版,请考虑为Elasticsearch创建一个专用的临时目录,而不是在将旧文件和目录放在/tmp下。这个目录应该设置权限,以便只有Elasticsearch运行的用户可以访问它。然后,在启动Elasticsearch之前,设置$ES_TMPDIR环境变量指向该目录。

JVM 致命错误日志设置

默认情况下,Elasticsearch将JVM配置为将致命错误日志写入默认日志目录。在RPM和Debian包中,这个目录是/var/log/elasticsearch。在Linux、MacOSWindows发行版中,logs目录位于Elasticsearch安装的根目录下。这些日志是JVM遇到致命错误(例如分段错误)时产生的日志。如果此路径不适合接收日志,则修改jvm.options文件中的-XX:ErrorFile=…选项。

集群备份

在灾难中,快照可以防止数据永久丢失。快照生命周期管理是对集群进行定期备份的最简单方法。有关详细信息,请参见备份集群。

备份群集的唯一可靠且受支持的方法是拍摄快照。无法通过复制Elasticsearch群集节点的数据目录来备份该群集。不支持文件系统级备份还原任何数据。如果您尝试从这样的备份中恢复群集,它可能会失败,并报告损坏或丢失文件或其他数据不一致,或者可能丢失了一些数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值