Elasticsearch节点的启动和关闭流程

本文详细介绍了Elasticsearch节点的启动和关闭流程,包括解析配置、环境检查、内部模块启动和关闭步骤。启动时涉及JVM参数、安全配置、环境变量检查,如堆大小、文件描述符、内存锁定等。关闭流程中,节点先停止服务,关闭网络,再依次关闭各个模块,确保数据安全。
摘要由CSDN通过智能技术生成

节点启动流程

启动脚本bin/elasticsearch通过exec加载Java程序(如果启动时添加了-d参数,则启动脚本会在exec中添加<&- &<&-的作用是关闭标准输入,&的作用是让进程在后台运行。):

exec \ # 执行命令
	"$JAVA" \ # JAVA程序路径
	$ES_JAVA_OPTS \ % JVM选项
	-Des.path.home="$ES_HOME" \ # 设置path.home路径
	-Des.path.conf="$ES_PATH_CONF" \ # 设置path.conf路径
	-cp "$ES_CLASSPATH" \ # 设置 java classpath
	org.elasticsearch.bootstrap.Elasticsearch \ # 指定main函数所在类
	"$@" # 传递给main函数命令行参数

节点启动流程中主要做了以下几类工作:

  • 解析配置,包括配置文件和命令行参数。
  • 检查外部环境和内部环境,例如,JVM版本、操作系统内核参数等。
  • 初始化内部资源,创建内部模块,初始化探测器。
  • 启动各个子模块和keepalive线程。

解析命令行参数和配置文件

解析的配置文件有下面两个(jvm.options是在启动脚本中解析的),也可通过-E从命令行中配置参数,命令行参数优化级高于配置文件。

elasticsearch.yml # 主要配置文件
log4j2.properties # 日志配置文件

加载安全配置

有些敏感的信息不适合放到配置文件中(因为配置文件是明文保存的),因此ES把这些敏感配置信息加密,单独放到一个文件中:config/elasticsearch.keystore,并提供一些命令来查看、添加和删除配置。

检查内部环境

内部环境指ES软件包本身的完整性和正确性。包括:

  • 检查Lucene版本,ES各版本对使用的Lucene版本是有要求的,在这里检查Lucene版本以防止有人替换不兼容的jar包。
  • 检测jar冲突(JarHell),发现冲突则退出进程。

检测外部环境

外部环境指运行时的JVM、操作系统相关参数。节点的环境检测代码都封装在BootstrapChecks类中,通过责任链模式对十几

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值