Elasticsearch启动及问题解决

1、 Elasticsearch下载及启动

1.1、yum方式下载安装java

yum install java-java-1.8.0-openjdk.x86_64

配置JDK环境变量

vi /etc/profile

在文件最后添加:

#set java environment
JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk.x86_64
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME CLASSPATH PATH

写好后按esc进入底部命令模式,输入:wq保存并退出
使配置文件生效

. /etc/profile (注意 . 之后应有一个空格)

1.2、安装es

命令:

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.4.2-linux-x86_64.tar.gz
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.4.2-linux-x86_64.tar.gz.sha512
shasum -a 512 -c elasticsearch-7.4.2-linux-x86_64.tar.gz.sha512 
tar -xzf elasticsearch-7.4.2-linux-x86_64.tar.gz
mv elasticsearch-7.4.2 elasticsearch
cd elasticsearch/ 

如果提示shasum命令找不到就试试yum install perl-Digest-SHA 我运行后就好使了
中途提示 选y就好

1.3、启动es

启动命令:

进入es安装目录
bin/elasticsearch

访问浏览器loalhost:9200

2、Elasticsearch启动报错及问题解决

按照上面的步骤安装、访问浏览器9200端口,很多时候是访问不了,这时候需要查看es的日志。

进入es安装目录
tail  -f -n 100 logs/elasticsearch.log

2.1、不能以root用户运行

[2020-01-12T10:36:17,766][ERROR][o.e.b.Bootstrap          ] [hyan.com] Exception
java.lang.RuntimeException: can not run elasticsearch as root
    at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:105) ~[elasticsearch-7.4.2.jar:7.4.2]
    at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:172) ~[elasticsearch-7.4.2.jar:7.4.2]
    at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:349) [elasticsearch-7.4.2.jar:7.4.2]
    at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:159) [elasticsearch-7.4.2.jar:7.4.2]
    at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:150) [elasticsearch-7.4.2.jar:7.4.2]
    at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) [elasticsearch-7.4.2.jar:7.4.2]
    at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:125) [elasticsearch-cli-7.4.2.jar:7.4.2]
    at org.elasticsearch.cli.Command.main(Command.java:90) [elasticsearch-cli-7.4.2.jar:7.4.2]
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:115) [elasticsearch-7.4.2.jar:7.4.2]
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92) [elasticsearch-7.4.2.jar:7.4.2]

注:出于安全考虑,elasticsearch默认不允许以root账号运行。故需要创建一个用户
解决办法:
创建用户,切换到创建的用户,再运行。

[root@hyan elasticsearch]# su hyan
[hyan@hyan elasticsearch]# bin/elasticsearch

注:系统没有创建过普通用户,需要使用adduser命令先创建普通用户,再切换到普通用户,在重启es前需要使用kill把启动的进程杀掉。

2.2、文件权限不够

[4] bootstrap checks failed
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]

这是切换自己创建的用户后运行时,因为不是root,所以文件权限不够。
解决办法:
先切换到root用户登录,然后修改配置文件:

[root@localhost bin]# vim /etc/security/limits.conf

配置文件中添加以下内容: (注意带*)

*   soft nofile 65536
*   hard nofile 131072
*   soft nproc 4096
*   hard nproc 4096

记得修改完,先切换到自己创建的用户,再运行elasticsearch

2.3、用户拥有的内存权限太小,至少least [262144]

[4] bootstrap checks failed
[3]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

解决办法:
先切换到root用户下,然后执行修改配置文件
( 没有这个文件的话:root用户下vim会自动创建一个新的;自己创建的用户下,不额外配置的话,vim没有权限创建 )
所以说,先切换到root用户下

[root@localhost bin]$ su root
[root@localhost bin]$ vim /etc/sysctl.conf

文件中添加以下内容:

 vm.max_map_count=262144

然后执行命令:

sysctl ‐p

记得修改完,先切换到自己创建的用户,再运行elasticsearch

2.4、线程数不够

[4] bootstrap checks failed
[2]: max number of threads [1024] for user [leyou] is too low, increase to at least [4096]

先切换到root用户下,然后执行修改配置文件

[root@localhost bin]$ vim /etc/security/limits.d/20‐nproc.conf

修改文件中内容:

* soft nproc 1024

改为:

* soft nproc 4096

2.5、写入日志权限不足

2019-08-22 03:16:26,465 main ERROR RollingFileManager (/home/leyou/elasticsearch/logs/elasticsearch.log) java.io.FileNotFoundException: /home/leyou/elasticsearch/logs/elasticsearch.log (权限不够) java.io.FileNotFoundException: /home/leyou/elasticsearch/logs/elasticsearch.log (权限不够)

解决办法:

切换到root用户下,再cd 到 elasticsearch安装目录下,进行用户授权

命令:chown -R hyan:hyan elasticsearch
命令说明:chown [选项]… [所有者][:[组]] 文件…
[hyan@hyan elasticsearch]$ ll
total 282012
drwxr-xr-x. 10 hyan hyan      4096 Jan 11 22:18 elasticsearch
-rw-r--r--.  1 root root 288775500 Jan 11 22:07 elasticsearch-7.4.2-linux-x86_64.tar.gz

2.6、端口未开放

2.6.1、本地 curl localhost:9200 成功访问
其它机器通过ip无法访问
解决办法:

vim config/elasticsearch.yml 
network.host: 0.0.0.0 表示所有用户可访问 

开放防火墙9200端口

systemctl status firewalld
firewall-cmd --zone=public --add-port=9200/tcp --permanent 
firewall -cmd --reload
firewall-cmd --list-ports

2.6.2、bootstrap启动 报错,关键字 secComp
secComp,而elasticsearch5.2.0以上的版本默认bootstrap。system_call_filter为true进行检测,所以导致检测失败,失败后会导致es不能启动。

vim config/elasticsearch.yml 

文件中添加以下内容

bootstrap.memory_lock: false 
bootstrap.system_call_filter: false 

3、 重启es

第一步:通过命令:ps -ef|grep elasticsearch

[hyan@hyan elasticsearch]$ ps -ef|grep elasticsearch
hyan       2912   2853  0 11:33 pts/0    00:00:44 /usr/elasticsearch/elasticsearch/jdk/bin/java -Xms1g -Xmx1g -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -Des.networkaddress.cache.ttl=60 -Des.networkaddress.cache.negative.ttl=10 -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 -Dio.netty.allocator.numDirectArenas=0 -Dlog4j.shutdownHookEnabled=false -Dlog4j2.disable.jmx=true -Djava.io.tmpdir=/tmp/elasticsearch-4599923952265615373 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=data -XX:ErrorFile=logs/hs_err_pid%p.log -Xlog:gc*,gc+age=trace,safepoint:file=logs/gc.log:utctime,pid,tags:filecount=32,filesize=64m -Djava.locale.providers=COMPAT -Dio.netty.allocator.type=unpooled -XX:MaxDirectMemorySize=536870912 -Des.path.home=/usr/elasticsearch/elasticsearch -Des.path.conf=/usr/elasticsearch/elasticsearch/config -Des.distribution.flavor=default -Des.distribution.type=tar -Des.bundled_jdk=true -cp /usr/elasticsearch/elasticsearch/lib/* org.elasticsearch.bootstrap.Elasticsearch
hyan       2998   2912  0 11:34 pts/0    00:00:00 /usr/elasticsearch/elasticsearch/modules/x-pack-ml/platform/linux-x86_64/bin/controller
hyan       4380   4347  0 13:20 pts/1    00:00:00 grep --color=auto elasticsearch

第二步:通过命令: kill -9 进程号 关闭此进程。我的进程号为2912
第三步:重新启动es。命令:./elasticsearch -d


参考文档:https://blog.csdn.net/FansUnion/article/details/95963914;
参考文档:https://blog.csdn.net/qq_41357211/article/details/100011139

你可能感兴趣的:(Elasticsearch启动及问题解决)