ES单节点安装及踩坑图文详解

此文记录了一下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,惊喜就会发生!

恭喜你成功了!

以上均为个人安装过程中发生的问题以及解决方法,欢迎讨论共同学习!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章