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