ElasticSearch之系统关键配置

集群名称

在配置文件$ES_HOME/config/elasticsearch.yml中指定,样例如下:

cluster:
name: logging-prod

或者

cluster.name: logging-prod

节点的名称

在配置文件$ES_HOME/config/elasticsearch.yml中指定,样例如下:

node:
name: prod-data-2

或者

node.name: prod-data-2

监听IP地址

在配置文件$ES_HOME/config/elasticsearch.yml中指定,样例如下:

network:
host: 192.168.1.10

或者

network.host: 192.168.1.10

集群发现的配置

在配置文件$ES_HOME/config/elasticsearch.yml中指定,样例如下:

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

支持IPv4、IPv6、域名、主机名,允许同时指定端口。

路径

路径相关的关键配置,包括:

  • 数据的保存路径
  • 日志文件的保存路径

数据的保存路径,在配置文件$ES_HOME/config/elasticsearch.yml中使用配置项path.data指定。

日志文件的保存路径,在配置文件$ES_HOME/config/elasticsearch.yml中使用配置项path.logs指定。

配置样例如下:

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

或者

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

临时目录

默认情况下,ElasticSearch使用/tmp作为临时目录。

可以使用环境变量ES_TMPDIR来指定其它路径,命令样例如下:

export ES_TMPDIR=/path/to/tmp
./bin/elasticsearch

启动elasticsearch时假如遇到了如下报错,需要确认临时目录在挂载时是否指定了noexec选项。

  • java.lang.UnsatisfiedLinkerError
  • failed to map segment from shared object
  • failed to allocate closure

上述报错和JNAlibffi相关,ElasticSearch使用这两个完成一些平台相关的业务逻辑。

假如临时目录所在的分区在挂载时指定了noexec选项,并且出于一些原因,不方便切换新的临时目录。

为使JNAlibffi正常工作,可以指定各自的临时目录,操作命令样例如下:

export LIBFFI_TMPDIR=/path/to/tmp
export ES_JAVA_OPTS="-Djava.io.tmpdir=/path/to/temp/dir"
./bin/elasticsearch

JVM的配置

通过环境变量ES_JAVA_OPTS,可以指定JVM参数,如下是命令样例:

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

另外一个例子,如下:

ES_JAVA_OPTS="-Xms2g -Xmx2g -Djava.io.tmpdir=/path/to/temp/dir" ./bin/elasticsearch

另外可以通过修改配置文件$ES_HOME/config/jvm.options,增加JVM相关的参数。

当前$ES_HOME/config/jvm.options中默认提供了如下参数。

-XX:+UseG1GC

## JVM temporary directory
-Djava.io.tmpdir=${ES_TMPDIR} # Leverages accelerated vector hardware instructions; removing this may
# result in less optimal vector performance
20-:--add-modules=jdk.incubator.vector ## heap dumps # generate a heap dump when an allocation from the Java heap fails; heap dumps
# are created in the working directory of the JVM unless an alternative path is
# specified
-XX:+HeapDumpOnOutOfMemoryError # exit right after heap dump on out of memory error
-XX:+ExitOnOutOfMemoryError # specify an alternative path for heap dumps; ensure the directory exists and
# has sufficient space
-XX:HeapDumpPath=data # specify an alternative path for JVM fatal error logs
-XX:ErrorFile=logs/hs_err_pid%p.log ## GC logging
-Xlog:gc*,gc+age=trace,safepoint:file=logs/gc.log:utctime,level,pid,tags:filecount=32,filesize=64m

增加堆的参数,样例如下:

-Xms4g
-Xmx4g
-XX:MaxDirectMemorySize=2g

修改参数之后,可以通过日志,观察JVM的参数。

[2023-11-22T00:21:47,743][INFO ][o.a.l.i.v.PanamaVectorizationProvider] [jackie-ubuntu] Java vector incubator API enabled; uses preferredBitSize=256
[2023-11-22T00:21:48,670][INFO ][o.e.n.Node ] [jackie-ubuntu] version[8.11.1], pid[19483], build[tar/6f9ff581fbcde658e6f69d6ce03050f060d1fd0c/2023-11-11T10:05:59.421038163Z], OS[Linux/5.4.0-166-generic/amd64], JVM[Oracle Corporation/OpenJDK 64-Bit Server VM/21.0.1/21.0.1+12-29]
[2023-11-22T00:21:48,672][INFO ][o.e.n.Node ] [jackie-ubuntu] JVM home [/home/jackie/software/elasticsearch-8.11.1/jdk], using bundled JDK [true]
[2023-11-22T00:21:48,672][INFO ][o.e.n.Node ] [jackie-ubuntu] JVM arguments [-Des.networkaddress.cache.ttl=60, -Des.networkaddress.cache.negative.ttl=10, -Djava.security.manager=allow, -XX:+AlwaysPreTouch, -Xss1m, -Djava.awt.headless=true, -Dfile.encoding=UTF-8, -Djna.nosys=true, -XX:-OmitStackTraceInFastThrow, -Dio.netty.noUnsafe=true, -Dio.netty.noKeySetOptimization=true, -Dio.netty.recycler.maxCapacityPerThread=0, -Dlog4j.shutdownHookEnabled=false, -Dlog4j2.disable.jmx=true, -Dlog4j2.formatMsgNoLookups=true, -Djava.locale.providers=SPI,COMPAT, --add-opens=java.base/java.io=org.elasticsearch.preallocate, -XX:+UseG1GC, -Djava.io.tmpdir=/tmp/elasticsearch-18105487545703078353, --add-modules=jdk.incubator.vector, -XX:+HeapDumpOnOutOfMemoryError, -XX:+ExitOnOutOfMemoryError, -XX:HeapDumpPath=data, -XX:ErrorFile=logs/hs_err_pid%p.log, -Xlog:gc*,gc+age=trace,safepoint:file=logs/gc.log:utctime,level,pid,tags:filecount=32,filesize=64m, -Xms1926m, -Xmx1926m, -XX:MaxDirectMemorySize=1009778688, -XX:G1HeapRegionSize=4m, -XX:InitiatingHeapOccupancyPercent=30, -XX:G1ReservePercent=15, -Des.distribution.type=tar, --module-path=/home/jackie/software/elasticsearch-8.11.1/lib, --add-modules=jdk.net, --add-modules=ALL-MODULE-PATH, -Djdk.module.main=org.elasticsearch.server] [2023-11-22T00:22:09,195][INFO ][o.e.e.NodeEnvironment ] [jackie-ubuntu] heap size [1.8gb], compressed ordinary object pointers [true]

也可以通过API,查看JVM的配置。

curl -X GET "https://localhost:9200/_nodes/jvm?pretty" --cacert $ES_HOME/config/certs/http_ca.crt -u "elastic:ohCxPH=QBE+s5=*lo7F9"

执行结果如下:

{
"_nodes" : {
"total" : 1,
"successful" : 1,
"failed" : 0
},
"cluster_name" : "elasticsearch",
"nodes" : {
"aKgBu7LgS9a6iPYH8n2JPw" : {
"name" : "jackie-ubuntu",
"transport_address" : "127.0.0.1:9300",
"host" : "127.0.0.1",
"ip" : "127.0.0.1",
"version" : "8.11.1",
"transport_version" : 8512001,
"index_version" : 8500003,
"component_versions" : {
"transform_config_version" : 10000099,
"ml_config_version" : 11000099
},
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "6f9ff581fbcde658e6f69d6ce03050f060d1fd0c",
"roles" : [
"data",
"data_cold",
"data_content",
"data_frozen",
"data_hot",
"data_warm",
"ingest",
"master",
"ml",
"remote_cluster_client",
"transform"
],
"attributes" : {
"ml.machine_memory" : "4040327168",
"ml.allocated_processors" : "4",
"ml.allocated_processors_double" : "4.0",
"ml.max_jvm_size" : "2021654528",
"ml.config_version" : "11.0.0",
"xpack.installed" : "true",
"transform.config_version" : "10.0.0"
},
"jvm" : {
"pid" : 19483,
"version" : "21.0.1",
"vm_name" : "OpenJDK 64-Bit Server VM",
"vm_version" : "21.0.1+12-29",
"vm_vendor" : "Oracle Corporation",
"using_bundled_jdk" : true,
"start_time_in_millis" : 1700583699298,
"mem" : {
"heap_init_in_bytes" : 2021654528,
"heap_max_in_bytes" : 2021654528,
"non_heap_init_in_bytes" : 7667712,
"non_heap_max_in_bytes" : 0,
"direct_max_in_bytes" : 0
},
"gc_collectors" : [
"G1 Young Generation",
"G1 Concurrent GC",
"G1 Old Generation"
],
"memory_pools" : [
"CodeHeap 'non-nmethods'",
"Metaspace",
"CodeHeap 'profiled nmethods'",
"Compressed Class Space",
"G1 Eden Space",
"G1 Old Gen",
"G1 Survivor Space",
"CodeHeap 'non-profiled nmethods'"
],
"using_compressed_ordinary_object_pointers" : "true",
"input_arguments" : [
"-Des.networkaddress.cache.ttl=60",
"-Des.networkaddress.cache.negative.ttl=10",
"-Djava.security.manager=allow",
"-XX:+AlwaysPreTouch",
"-Xss1m",
"-Djava.awt.headless=true",
"-Dfile.encoding=UTF-8",
"-Djna.nosys=true",
"-XX:-OmitStackTraceInFastThrow",
"-Dio.netty.noUnsafe=true",
"-Dio.netty.noKeySetOptimization=true",
"-Dio.netty.recycler.maxCapacityPerThread=0",
"-Dlog4j.shutdownHookEnabled=false",
"-Dlog4j2.disable.jmx=true",
"-Dlog4j2.formatMsgNoLookups=true",
"-Djava.locale.providers=SPI,COMPAT",
"--add-opens=java.base/java.io=org.elasticsearch.preallocate",
"-XX:+UseG1GC",
"-Djava.io.tmpdir=/tmp/elasticsearch-18105487545703078353",
"--add-modules=jdk.incubator.vector",
"-XX:+HeapDumpOnOutOfMemoryError",
"-XX:+ExitOnOutOfMemoryError",
"-XX:HeapDumpPath=data",
"-XX:ErrorFile=logs/hs_err_pid%p.log",
"-Xlog:gc*,gc+age=trace,safepoint:file=logs/gc.log:utctime,level,pid,tags:filecount=32,filesize=64m",
"-Xms1926m",
"-Xmx1926m",
"-XX:MaxDirectMemorySize=1009778688",
"-XX:G1HeapRegionSize=4m",
"-XX:InitiatingHeapOccupancyPercent=30",
"-XX:G1ReservePercent=15",
"-Des.distribution.type=tar",
"--module-path=/home/jackie/software/elasticsearch-8.11.1/lib",
"--add-modules=jdk.net",
"--add-modules=ALL-MODULE-PATH",
"-Djdk.module.main=org.elasticsearch.server"
]
}
}
}
}

相关资料

ElasticSearch之系统关键配置的更多相关文章

  1. ElasticSearch第一步-环境配置

    ElasticSearch第一步-环境配置 ElasticSearch第二步-CRUD之Sense ElasticSearch第三步-中文分词 ElasticSearch第四步-查询详解 Elasti ...

  2. win7重装系统的配置步骤

    0. 关闭休眠功能,在开始菜单的运行里输入powercfg -h off 指令,关闭休眠,此文件实际大小和物理内存是一样的,大约可以为C盘释放1-3G的空间. 1. 在Win7桌面上显示“我的电脑” ...

  3. Linux系统安全配置基线

    一:共享账号检查 配置名称:用户账号分配检查,避免共享账号存在 配置要求:1.系统需按照实际用户分配账号: 2.避免不同用户间共享账号,避免用户账号和服务器间通信使用的账号共享. 操作指南:参考配置操 ...

  4. Elasticsearch 学习总结 - 相关配置补充说明

    一.   Elasticsearch的基本概念 term索引词,在elasticsearch中索引词(term)是一个能够被索引的精确值.foo,Foo Foo几个单词是不相同的索引词.索引词(ter ...

  5. 用monit监控系统关键进程

    原地址: https://feilong.me/2011/02/monitor-core-processes-with-monit monit是一款功能强大的系统状态.进程.文件.目录和设备的监控软件 ...

  6. Elasticsearch 6 重要参数配置

    采用zip或tar.gz的二进制包方式安装的ES,需要配置一系列参数,其中重要参数配置如下: 一. ElasticSearch参数配置 1. data和logs路径配置 如果使用.zip或.tar.g ...

  7. 使用kubernetes-event-exporter将k8s的事件导出到elasticsearch日志系统中

    使用kubernetes-event-exporter将k8s的事件导出到elasticsearch日志系统中 前提 版本 kubernetes v1.17.9 kubernetes-event-ex ...

  8. 完整的WindowsServer服务器系统初始化配置、安全策略加固和基线检查脚本等保2.0适用

    转载自:https://www.bilibili.com/read/cv14326780?spm_id_from=333.999.0.0 0x00 前言简述 最近单位在做等保测评,由于本人从事安全运维 ...

  9. ASP.NET Core - 配置系统之配置读取

    一个应用要运行起来,往往需要读取很多的预设好的配置信息,根据约定好的信息或方式执行一定的行为. 配置的本质就是软件运行的参数,在一个软件实现中需要的参数非常多,如果我们以 Hard Code(硬编码) ...

  10. .NET Core采用的全新配置系统[10]: 配置的同步机制是如何实现的?

    配置的同步涉及到两个方面:第一,对原始的配置文件实施监控并在其发生变化之后从新加载配置:第二,配置重新加载之后及时通知应用程序进而使后者能够使用最新的配置.要了解配置同步机制的实现原理,先得从认识一个 ...

随机推荐

  1. Solution -「HNOI 2016」最小公倍数(lacks of code)

    Description Link. 给出一个带权无向图,边权为 \(2^{a}\cdot3^{b}\) 形式. 给出 \(q\) 组形如 \(u,v,a,b\) 的询问,问 \(u,v\) 中是否存在 ...

  2. c语言代码练习13

    //打印九九乘法表#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> int main() { int x = 0; int y = ...

  3. Ubuntu更新软件的命令

    更新软件源 apt-get update 更新升级所有软件 apt-get upgrade 更新某个软件 apt-get upgrade 名 列出可更新的软件 apt list --upgradabl ...

  4. [NOI2014] 字符串(题解)

    字符串(题解) 题目描述 近日,园长发现动物园中好吃懒做的动物越来越多了.例如企鹅,只会卖萌向游客要吃的.为了整治动物园的不良风气,让动物们凭自己的真才实学向游客要吃的,园长决定开设算法班,让动物们学 ...

  5. 麒麟系统开发笔记(十三):在国产麒麟系统上编译OSG库、搭建基础开发环境和移植测试Demo

    前言   在国产麒麟系统上实现C++三维仿真,使用OSG技术,其他基于web的技术也是可以但是交互上鼠标拽托等交互相对差一些,所以这块需要斟酌选择到底是何种技术来取舍.  本篇在厂家指定的麒麟系统上编 ...

  6. javascript 如何开启调试功能

    目录 javascript 如何开启调试功能 方式一: 打开浏览器,点击源码,直接点击一个,就加上断点了 (基于浏览器) 方式二: 打开代码,在 js 中加入 debugger 关键字,就加上断点了( ...

  7. 虹科案例 | Redis企业版数据库帮助金融机构满足客户需求

    如今,传统银行与新兴银行正在进行激烈的竞争.随着苹果.亚马逊.谷歌等科技巨头正凭借其数字化.移动应用程序和云体验打入金融服务行业.为了进行公平竞争,传统银行也需要通过个性化的全渠道客户体验来实现交互式 ...

  8. 定时重启Nginx、MySql等服务

    利用 Linux Crontab,每天定时重启 Nginx.MySQL等服务. 命令行格式说明 f1 f2 f3 f4 f5 program 其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份 ...

  9. Python 中多态性的示例和类的继承多态性

    单词 "多态" 意味着 "多种形式",在编程中,它指的是具有相同名称的方法/函数/操作符,可以在许多不同的对象或类上执行. 函数多态性 一个示例是 Python ...

  10. .Net Core 3.1升级 .Net 5后出现代码错误 rzc generate exited with code 1.

    安装.Net 5后出现错误,错误定位到了CodeGeneration相关的文件,找了半天也不知道哪里的问题. 升级类库,清理解决方案,删除obj.bin文件夹什么的卵用没有. 最后发现升级.Net 5 ...