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,驚喜就會發生!

恭喜你成功了!

以上均爲個人安裝過程中發生的問題以及解決方法,歡迎討論共同學習!

 

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