Linux(CentOS)下安裝Elasticsearch5.0.0

一.ES5.0解壓安裝到Windows之後(可能)需要進行的設置:

1.如果不設置,直接運行elasticsearch.bat 文件 ,會報錯:

2.解決方式 調節 conf/jvm.options 配置文件

這裏採取調小ES佔用的內存:    默認配置如下圖,初始化和最大內存大小爲2G

調節爲1g

之後再運行bin/elasticsearch.bat文件就可以正常啓動了.

二.ES5.0 解壓安裝到Linux之後需要進行一些設置才能正常使用.

之前一直是在Linux上使用的ES的1.4版本,在Linux上解壓就能用,今天嘗試使用ES的5.0.0版本.

1.遇到第一個問題:java.lang.RuntimeException: can not run elasticsearch as root  以及解決方式

如果使用Linux的root用戶 對ES5.0 解壓運行 會報如下錯誤:java.lang.RuntimeException: can not run elasticsearch as root      錯誤是說運行ES不能以root用戶的身份

ES5之後就不允許用root用戶啓動了,如果是ES5.0以下的版本可以參考此解決方式:http://blog.csdn.net/u010317005/article/details/52205825

[2017-11-16T23:06:39,263][ERROR][o.e.b.Bootstrap          ] Exception
java.lang.RuntimeException: can not run elasticsearch as root
        at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:96) ~[elasticsearch-5.0.0.jar:5.0.0]
        at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:155) ~[elasticsearch-5.0.0.jar:5.0.0]
        at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:286) [elasticsearch-5.0.0.jar:5.0.0]
        at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:112) [elasticsearch-5.0.0.jar:5.0.0]
        at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:103) [elasticsearch-5.0.0.jar:5.0.0]
        at org.elasticsearch.cli.SettingCommand.execute(SettingCommand.java:54) [elasticsearch-5.0.0.jar:5.0.0]
        at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:96) [elasticsearch-5.0.0.jar:5.0.0]
        at org.elasticsearch.cli.Command.main(Command.java:62) [elasticsearch-5.0.0.jar:5.0.0]
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:80) [elasticsearch-5.0.0.jar:5.0.0]
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:73) [elasticsearch-5.0.0.jar:5.0.0]
[2017-11-16T23:06:39,328][WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [] 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:116) ~[elasticsearch-5.0.0.jar:5.0.0]
        at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:103) ~[elasticsearch-5.0.0.jar:5.0.0]

這是出於系統安全考慮設置的條件。由於ElasticSearch可以接收用戶輸入的腳本並且執行,爲了系統安全考慮,建議創建一個單獨的用戶用來運行ElasticSearch.

創建elsearch用戶組及elsearch用戶

groupadd elsearch
useradd elsearch -g elsearch -p elasticsearch

 更改elasticsearch文件夾及內部文件的所屬用戶及組爲elsearch:elsearch

chown -R elsearch:elsearch  elasticsearch-5.0.0

 

 切換到elsearch用戶再啓動(有可能還是會報錯,可能的報錯以及解決方式見下文)

su elsearch #切換賬戶
cd elasticsearch/bin #進入你的elasticsearch目錄下的bin目錄
./elasticsearch

2.遇到的第二個問題:unable to install syscall filter

[2017-11-16T23:17:07,043][WARN ][o.e.b.JNANatives         ] unable to install syscall filter:
java.lang.UnsupportedOperationException: seccomp unavailable: requires kernel 3.5+ with CONFIG_SECCOMP and CONFIG_SECCOMP_FILTER compiled in
        at org.elasticsearch.bootstrap.Seccomp.linuxImpl(Seccomp.java:349) ~[elasticsearch-5.0.0.jar:5.0.0]
        at org.elasticsearch.bootstrap.Seccomp.init(Seccomp.java:630) ~[elasticsearch-5.0.0.jar:5.0.0]
        at org.elasticsearch.bootstrap.JNANatives.trySeccomp(JNANatives.java:215) [elasticsearch-5.0.0.jar:5.0.0]

 報了一大串錯誤,其實就是一個警告信息.   使用新的Linux版本就不會出現此問題了.  不用理會....

3.遇到的第三個問題: node validation exception     bootstrap checks failed

[2017-11-16T23:20:30,812][ERROR][o.e.b.Bootstrap          ] [m2M7ykG] node validation exception
bootstrap checks failed
max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]
max number of threads [1024] for user [elsearch] likely too low, increase to at least [2048]
max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]
[2017-11-16T23:20:30,815][INFO ][o.e.n.Node               ] [m2M7ykG] stopping ...
[2017-11-16T23:20:30,852][INFO ][o.e.n.Node               ] [m2M7ykG] stopped
[2017-11-16T23:20:30,852][INFO ][o.e.n.Node               ] [m2M7ykG] closing ...
[2017-11-16T23:20:30,886][INFO ][o.e.n.Node               ] [m2M7ykG] closed

解決方式:

第一步: 切換到root用戶,編輯limits.conf 添加類似如下內容  vi /etc/security/limits.conf 

添加如下內容: (soft nproc和hard nproc也可以設置成65536)

* soft nofile 65536

* hard nofile 131072

* soft nproc 2048

* hard nproc 4096

以上幾個參數的解釋

① soft nproc:可打開的文件描述符的最大數(軟限制)

② hard nproc:可打開的文件描述符的最大數(硬限制)

③ soft nofile:單個用戶可用的最大進程數量(軟限制)

④ hard nofile:單個用戶可用的最大進程數量(硬限制)

第二步:   使用命令 vim /etc/security/limits.d/90-nproc.conf 將下圖中紅框所示位置的值從 1024 改成 2048 

第三步    使用命令 vim /etc/sysctl.conf 在最後添加一行數據如下: vm.max_map_count=262144

 

第四步: 修改完後,執行如下命令 sysctl -p

這個命令也必須使用root用戶,

 

使用非root用戶報錯:

4.做了以上修改之後在Linux啓動應該可以正常啓動.但是如果在通過別的機器來訪問啓動機器所在的ES的Web頁面,會發現訪問不到.需要做如下配置:

我們需要編輯其中的 elasticsearch.yml 這一文件,使用命令 vim elasticsearch.yml

修改network.host和discovery.zen.ping.unicast.hosts的IP,改成當前ip地址(通過 ifconfig 命令查看)。如果不修改,則只能本地訪問(localhost或127.0.0.1)

 

 以上修改就可以遠程訪問該ES的Web服務.

5.ES的後臺啓動命令  和 檢查ES的啓動進程

ElasticSearch後臺啓動命令

./elasticsearch -d

查看後臺命令是否啓動成功

ps aux|grep elasticsearch
elsearch  3119  4.6  3.2 3535488 250876 pts/1  Sl   16:50   0:09 /opt/java/jdk1.7.0_75/bin/java -Xms256m -Xmx1g -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -XX:+DisableExplicitGC -Dfile.encoding=UTF-8 -Djna.nosys=true -Des.path.home=/home/py-project/elasticsearc-2.4.0 -cp /home/py-project/elasticsearch-2.4.0/lib/elasticsearch-2.4.0.jar:/home/py-project/elasticsearch-2.4.0/lib/* org.elasticsearch.bootstrap.Elasticsearch start -d
elsearch  3254  0.0  0.0 110224   916 pts/1    S+   16:54   0:00 grep --color=auto elasticsearch

 

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