ElasticSearch之系统关键配置
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.UnsatisfiedLinkerErrorfailed to map segment from shared objectfailed to allocate closure
上述报错和JNA和libffi相关,ElasticSearch使用这两个完成一些平台相关的业务逻辑。
假如临时目录所在的分区在挂载时指定了noexec选项,并且出于一些原因,不方便切换新的临时目录。
为使JNA和libffi正常工作,可以指定各自的临时目录,操作命令样例如下:
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"
]
}
}
}
}
相关资料
- Important Elasticsearch configuration
- Advanced configuration
- Important system configuration
- Nodes info API
- Ensure JNA temporary directory permits executables
- Discovery
- Bootstrapping a cluster
- Quorum-based decision making
ElasticSearch之系统关键配置的更多相关文章
- ElasticSearch第一步-环境配置
ElasticSearch第一步-环境配置 ElasticSearch第二步-CRUD之Sense ElasticSearch第三步-中文分词 ElasticSearch第四步-查询详解 Elasti ...
- win7重装系统的配置步骤
0. 关闭休眠功能,在开始菜单的运行里输入powercfg -h off 指令,关闭休眠,此文件实际大小和物理内存是一样的,大约可以为C盘释放1-3G的空间. 1. 在Win7桌面上显示“我的电脑” ...
- Linux系统安全配置基线
一:共享账号检查 配置名称:用户账号分配检查,避免共享账号存在 配置要求:1.系统需按照实际用户分配账号: 2.避免不同用户间共享账号,避免用户账号和服务器间通信使用的账号共享. 操作指南:参考配置操 ...
- Elasticsearch 学习总结 - 相关配置补充说明
一. Elasticsearch的基本概念 term索引词,在elasticsearch中索引词(term)是一个能够被索引的精确值.foo,Foo Foo几个单词是不相同的索引词.索引词(ter ...
- 用monit监控系统关键进程
原地址: https://feilong.me/2011/02/monitor-core-processes-with-monit monit是一款功能强大的系统状态.进程.文件.目录和设备的监控软件 ...
- Elasticsearch 6 重要参数配置
采用zip或tar.gz的二进制包方式安装的ES,需要配置一系列参数,其中重要参数配置如下: 一. ElasticSearch参数配置 1. data和logs路径配置 如果使用.zip或.tar.g ...
- 使用kubernetes-event-exporter将k8s的事件导出到elasticsearch日志系统中
使用kubernetes-event-exporter将k8s的事件导出到elasticsearch日志系统中 前提 版本 kubernetes v1.17.9 kubernetes-event-ex ...
- 完整的WindowsServer服务器系统初始化配置、安全策略加固和基线检查脚本等保2.0适用
转载自:https://www.bilibili.com/read/cv14326780?spm_id_from=333.999.0.0 0x00 前言简述 最近单位在做等保测评,由于本人从事安全运维 ...
- ASP.NET Core - 配置系统之配置读取
一个应用要运行起来,往往需要读取很多的预设好的配置信息,根据约定好的信息或方式执行一定的行为. 配置的本质就是软件运行的参数,在一个软件实现中需要的参数非常多,如果我们以 Hard Code(硬编码) ...
- .NET Core采用的全新配置系统[10]: 配置的同步机制是如何实现的?
配置的同步涉及到两个方面:第一,对原始的配置文件实施监控并在其发生变化之后从新加载配置:第二,配置重新加载之后及时通知应用程序进而使后者能够使用最新的配置.要了解配置同步机制的实现原理,先得从认识一个 ...
随机推荐
- iframe标签下的通信
通常在页面中嵌套iframe的情况下还需要进行消息传递的通信需求.一般分为两种情况: 1.iframe里的链接与父页面链接是非跨域 这种情况处理比较简单,直接在父级页面下就可以写脚本控制iframe里 ...
- SQL Server 使用C#窗体与数据库连接,制作数据库查看器
SQL Server 使用C#窗体与数据库连接,制作数据库查看器 本文中心:讨论C#对SQL Server 的增删改查,使用Treeview制作数据库查看器. SSMS部分:确保SQL Server ...
- IP协议的发展历程
1. IP协议 1.1为什么需要IP协议 好像ip地址就像每个人的家门号一样家喻户晓,被大家默认用来作为寻址的门牌号,起初,设计IP地址也是为了寻找某台主机,但是作为世界上家喻户晓的IPv4,大家不应 ...
- Oracle查询--增加--删除--修改主键
对Oracle表主键的操作,有四类:查询,增加,修改,删除 1.查询主键 /*查询某个表中存在的约束*/ select * from user_constraints where table_name ...
- c语言代码练习7
//输出0-100的三倍数字#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> int main() { int i = 0; int ...
- 其它——DevOps简介
文章目录 DevOps简介 DevOps的概念 历史变革 好处是什么? 为什么DevOps会兴起? 实现DevOps需要什么? DevOps的采用现状 DevOps简介 DevOps 是一个完整的面向 ...
- Python面试——基础面试题
文章目录 1.Python 和 Java.PHP.C.C#.C++等其他语言的对比? C语言既有高级语言的特点,又具有汇编语言的特点,它是结构式语言.C语言应用指针:可以直接进行靠近硬件的操作,但是C ...
- Arduino Uno 引脚 –
Arduino Uno 引脚 – Arduino Uno 板有 20 多个引脚,可用于许多不同的应用.在这篇文章中,我将为您提供 Arduino Uno 主要引脚的完整实用概述. 如果您刚开始使用 A ...
- How to start with Gradle?
How to start with Gradle? Download the latest Gradle release from http://www.gradle.org/downloads Se ...
- python~windows自动化工具 uiautomation库
微软提供了关于自动化操作PC端桌面应用程序的工具,官方描述为: Microsoft UI Automation is an accessibility framework that enables W ...