linux es后台启动命令,小白学ES 02-Linux中部署Elasticsearch单机服务

这篇博客介绍了如何在Linux上部署Elasticsearch 5.6.10,包括安装JDK、下载并解压安装包、创建Elasticsearch用户、后台启动服务及验证服务状态。特别强调了Elasticsearch必须以非root用户启动,并给出了错误处理和权限设置的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

@

此部署过程以Elasticsearch-5.6.10版本为例, 后续的学习和演示也用此版本.

1 前提: 安装JDK

学习使用ES的前提是成功安装JDK —— 很基础的一项步骤, 这里省略.

此处学习演示所用的JDK版本为:

[root@host-10-0-20-50 ~]# java -version

java version "1.8.0_151"

Java(TM) SE Runtime Environment (build 1.8.0_151-b12)

Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)

2 准备安装包

根据自己的系统版本下载相应的安装包, 链接如下:

https://www.elastic.co/downloads/elasticsearch

这里下载MacOS/Linux系统下的版本 elasticsearch-5.6.10.tar.gz.

上传并解压:

# 工作路径

mkdir /data/elk

# 上传安装包后解压

tar -zxf elasticsearch-5.6.10.tar.gz

# 修改安装包文件名

mv elasticsearch-5.6.10.tar.gz es-node1

3 创建ES专用用户

# 创建用户

useradd elastic -s /bin/bash

# 为该用户赋予相关操作权限

chown -R elastic:elastic /data/elk

4 启动ES服务

# 切换用户

su elastic

# 启动服务, -d是指在后台启动, 若不用, 则Elasticsearch将

cd /data/elk/master

./bin/elasticsearch -d

注意事项:

Elasticsearch必须以 非root用户启动, 否则将抛出如下错误:

[2018-11-05T04:24:50,035][ERROR][o.e.b.Bootstrap ] Exception

java.lang.RuntimeException: can not run elasticsearch as root

at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:106) ~[elasticsearch-5.6.10.jar:5.6.10]

at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:195) ~[elasticsearch-5.6.10.jar:5.6.10]

at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:342) [elasticsearch-5.6.10.jar:5.6.10]

at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:132) [elasticsearch-5.6.10.jar:5.6.10]

at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:123) [elasticsearch-5.6.10.jar:5.6.10]

at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:70) [elasticsearch-5.6.10.jar:5.6.10]

at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:134) [elasticsearch-5.6.10.jar:5.6.10]

at org.elasticsearch.cli.Command.main(Command.java:90) [elasticsearch-5.6.10.jar:5.6.10]

at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:91) [elasticsearch-5.6.10.jar:5.6.10]

at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:84) [elasticsearch-5.6.10.jar:5.6.10]

5 验证ES服务是否可用

通过 jps 命令查看当前系统中运行的所有Java进程, 前提是JDK的环境变量设置OK:

[elastic@host-10-0-20-50 bin]$ jps

25810 Elasticsearch # Elasticsearch的进程号

25926 Jps

通过 ps -ef 或 ps aux 命令查看

[elastic@host-10-0-20-50 bin]$ ps aux | grep elasticsearch

elastic 25810 23.0 28.6 5753680 2310200 pts/0 Sl 04:31 0:19 /server/jdk1.8.0_151/bin/java -Xms2g -Xmx2g

-XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+AlwaysPreTouch

-server -Xss1m -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djna.nosys=true -Djdk.io.permissionsUseCanonicalPath=true

-Dio.netty.noUnsafe=true -Dio.netty.noKeySetOptimization=true -Dio.netty.recycler.maxCapacityPerThread=0

-Dlog4j.shutdownHookEnabled=false -Dlog4j2.disable.jmx=true -Dlog4j.skipJansi=true -XX:+HeapDumpOnOutOfMemoryError

-Des.path.home=/data/elk/es-node1 -cp /data/elk/es-node1/lib/* org.elasticsearch.bootstrap.Elasticsearch -d

elastic 27403 0.0 0.0 103260 852 pts/0 R+ 04:33 0:00 grep elasticsearch

在MacOS/Linux的终端(或Windows的命令行)下运行命令:

# MacOS/Linux下:

curl http://localhost:9200/

# Windows下:

Invoke-RestMethod http://localhost:9200

77af7ee153bbb31e607badd79ec36de1.png

或在浏览器中访问 "http://localhost:9200/", 若能出现类似上述终端中的信息, 说明ES服务启动成功.

运行界面参数解释:

{

"name" : "Xa0PFJM", # 当前Node的名称

"cluster_name" : "elasticsearch", # 当前节点所属的集群名称(默认是elasticsearch)

"cluster_uuid" : "Bk9p7xDhR8WM9HRx3pFEEA",

"version" : {

"number" : "5.6.10", # 当前运行的ES的版本号

"build_hash" : "b727a60",

"build_date" : "2018-06-06T15:48:34.860Z",

"build_snapshot" : false, # 当前运行版本是否是从源代码构建而来

"lucene_version" : "6.6.1"

},

"tagline" : "You Know, for Search" # ES的第一个tabline

}

6 关闭ES服务

Elasticsearch没有直接关闭或重启服务的命令, 关闭只能通过kill命令杀掉进程的方式, 如下:

[elastic@host-10-0-20-50 bin]$ ps aux | grep elasticsearch # 查看ES进程的id

[elastic@host-10-0-20-50 bin]$ kill -8 25810 # 通过进程id来杀掉服务

7 重启ES服务

[elastic@host-10-0-20-50 bin]$ sh elasticsearch -d

当然可以编写一个服务脚本, 来方便快捷地启动或关闭Elasticsearch服务.

8 常见问题的解决

问题说明: 使用ES专属用户启动ES服务时, 终端抛出如下错误:

[elastic@host-10-0-20-50 bin]$ 2018-11-05 04:26:38,466 main ERROR Could not register mbeans java.security.AccessControlException: access denied ("javax.management.MBeanTrustPermission" "register")

at java.security.AccessControlContext.checkPermission(AccessControlContext.java:472)

at java.lang.SecurityManager.checkPermission(SecurityManager.java:585)

......

SettingsException[Failed to load settings from /data/elk/es-node1/config/elasticsearch.yml]; nested: AccessDeniedException[/data/elk/es-node1/config/elasticsearch.yml];

......

Caused by: java.nio.file.AccessDeniedException: /data/elk/es-node1/config/elasticsearch.yml

......

问题分析: 错误信息说明: 当前用户无的访问被拒绝, 可知ES专属用户无法执行当前应用.

解决方法: 为ES创建专属用户后, 对其赋予相应的读写权限.

# 为该用户赋予相关操作权限

chown -R elastic:elastic /data/elk

版权声明

作者: ma_shoufeng(马瘦风)

出处: 博客园 马瘦风的博客

您的支持是对博主的极大鼓励, 感谢您的阅读.

本文版权归博主所有, 欢迎转载, 但未经博主同意必须保留此段声明, 且在文章页面明显位置给出原文链接, 否则博主保留追究法律责任的权利.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值