此文记录了一下es安装以及问题解决过程,版本使用6.6.1
1.下载
可以直接从官网下载,解压tar zxvf elasticsearch-6.6.1-linux-x86_64.tar.gz
使用命令 wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.6.1-linux-x86_64.tar.gz 直接下载,解压tar zxvf elasticsearch-6.6.1-linux-x86_64.tar.gz
解压后进入config目录,修改yml文件 network.host: 192.168.196.129,此ip为centos本机ip
多说一嘴,这里的ip可以使用ip addr查看如下图
如果查找不到ip,需要修改一下配置,可执行命令
cd /etc/sysconfig/network-scripts/
vi ifcfg-eth0
将文件中的NOROOT=no 修改为NOROOT=yes 保存 一定要执行service network restart 使配置生效,再次查看ens33就有了ip
解释:ONBOOT是指明在系统启动时是否激活网卡,只有在激活状态的网卡才能去连接网络,进行网络通讯,说白了执行了这一步 你也就可以上网了。
2.启动
第一次启动不要使用守护线程启动,这样如果异常也看不到
在bin目录下执行 ./elasticsearch,接下就好戏开场了,一个接一个的问题,我们就一个挨一个的解决
3.解决问题
- 执行完启动命令 看到了异常信息,如下
[WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [unknown] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:163) ~[elasticsearch-6.6.1.jar:6.6.1]
at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:150) ~[elasticsearch-6.6.1.jar:6.6.1]
at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-6.6.1.jar:6.6.1]
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) ~[elasticsearch-cli-6.6.1.jar:6.6.1]
at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-cli-6.6.1.jar:6.6.1]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:116) ~[elasticsearch-6.6.1.jar:6.6.1]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:93) ~[elasticsearch-6.6.1.jar:6.6.1]
Caused by: java.lang.RuntimeException: can not run elasticsearch as root
at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:103) ~[elasticsearch-6.6.1.jar:6.6.1]
at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:170) ~[elasticsearch-6.6.1.jar:6.6.1]
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:333) ~[elasticsearch-6.6.1.jar:6.6.1]
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:159) ~[elasticsearch-6.6.1.jar:6.6.1]
解释:由于 es 可以接收用户输入的脚本并且执行,为了系统安全考虑,es5 之后的都不能使用添加启动参数或者修改配置文件等方法启动了,不允许使用 root 用户启动 es,建议创建一个单独的用户用来运行。
解决:创建新用户,切换到新用户启动es
addusr 用户名
passwd 密码
- 再次使用新用户启动的时候依然有异常信息,如下
[el@bogon bin]$ ./elasticsearch
Exception in thread "main" java.nio.file.AccessDeniedException: /usr/local/elasticsearch-6.6.1/config/jvm.options
at sun.nio.fs.UnixException.translateToIOException(UnixException.java:84)
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
at sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:214)
at java.nio.file.Files.newByteChannel(Files.java:361)
at java.nio.file.Files.newByteChannel(Files.java:407)
at java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:384)
at java.nio.file.Files.newInputStream(Files.java:152)
at org.elasticsearch.tools.launchers.JvmOptionsParser.main(JvmOptionsParser.java:60)
解释:没有jvm.options访问权限
解决:切换到root用户 执行命令
[el@bogon bin]$ su root
密码:
[root@bogon bin]# chown el /usr/local/elasticsearch-6.6.1 –R
- 使用新用户启动再次报错,是不是要崩溃了
ERROR: [2] bootstrap checks failed
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
[2020-04-08T21:15:27,896][INFO ][o.e.n.Node ] [LOzrLbS] stopping ...
[2020-04-08T21:15:27,971][INFO ][o.e.n.Node ] [LOzrLbS] stopped
[2020-04-08T21:15:27,971][INFO ][o.e.n.Node ] [LOzrLbS] closing ...
[2020-04-08T21:15:28,001][INFO ][o.e.n.Node ] [LOzrLbS] closed
[2020-04-08T21:15:28,003][INFO ][o.e.x.m.p.NativeController] [LOzrLbS] Native controller process has stopped - no new native processes can be started
解释:每个进程最大同时打开文件数太小
解决:执行命令看看当前系统同时打开进程数的默认值:
ulimit -Hn
ulimit -Sn
切换到root用户
[el@bogon bin]$ su root
密码:
[root@bogon bin]# vi /etc/security/limits.conf
最后增加
el hard nofile 65536
el soft nofile 65536
* soft nproc 4096
* hard nproc 4096
- 使用新用户启动,额,疯掉了,简直使连锁反应啊,如下:
ERROR: [1] bootstrap checks failed
[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
解释:用户拥有的内存权限太小,至少需要262144
解决:切换到root,在/etc/sysctl.conf文件最后添加一行vm.max_map_count=655360,添加完毕之后,执行命令:sysctl –p
坚持就是胜利,胜利就在眼前使用命令 ./elasticsearch –d 守护线程启动,然后切换root 执行命令/sbin/iptables -I INPUT -p tcp --dport 9200 -j ACCEPT 使9200端口可以远程访问
在浏览器里输入ip:9200,惊喜就会发生!
恭喜你成功了!
以上均为个人安装过程中发生的问题以及解决方法,欢迎讨论共同学习!