Elasticsearch在centos6中的安裝


一安裝,

在你可以從 elasticsearch.org\/download 下載最新版本的Elasticsearch。tar文件。

一、用戶設置

如果已經是普通用戶登錄可跳過此步驟。

ElasticSearch默認是不能使用root用戶進行啟動的,所以需要先添加一個普通用戶,並使用普通用戶身份安裝ElasticSearch。

1.添加一個用戶,無任何提示則表示成功添加。

[root@localhost soft]# adduser king

2.設置用戶密碼,需要輸入兩次。其中提示無效的密碼可以不用管,是因為密碼太簡單,不符合安全要求。

[root@localhost soft]# passwd king 更改用戶 king 的密碼 。 新的 密碼: 無效的密碼: 過於簡單化/系統化 無效的密碼: 過於簡單 重新輸入新的 密碼: passwd: 所有的身份驗證令牌已經成功更新。

3.在根目錄下創建一個文件夾soft,並將擁有者更改為king,使用ls -al /soft命令查看此時/soft文件夾的擁有者。

[root@localhost /]# mkdir /soft [root@localhost /]# chown king /soft [root@localhost /]# ls -al /soft drwxr-xr-x. 2 king root 4096 9月 3 01:58 . dr-xr-xr-x. 26 root root 4096 9月 3 01:58 ..

一個點代表當前目錄,兩個點代表上級目錄,可以看到當前目錄的擁有者已經是king了。

二、安裝jdk1.8

如果已經安裝jdk1.8可跳過此步驟

ElasticSearch是基於Java開發的,所以要先安裝jdk環境。

1.使用yum安裝openjdk1.8,使用yum search jdk1.8搜索安裝包

[root@localhost elasticsearch-5.5.2]$ yum search jdk java-1.8.0-openjdk.x86_64 : OpenJDK Runtime Environment # 會有很多版本的jdk,只展示我們要安裝的這個版本

2.安裝openjdk1.8

[root@localhost ~]# yum install java-1.8.0-openjdk.x86_64

安裝完成后輸入java命令,有相應輸出就說明安裝成功了。

3.至此之前,我們都是使用root身份來操作的,下面使用如下命令切換到king用戶。

[root@localhost /]# su king [king@localhost /]$ cd /soft [king@localhost soft]$ 

 

這時就以king用戶身份登錄了,我們使用cd命令進入/soft目錄,然后進行接下來的操作。

三、下載ElasticSearch並安裝

1.首先到官網下載最新版本的ElasticSearch的zip壓縮包,也可以復制下載地址在終端中使用wget命令直接下載到CentOS中。例如在終端中執行以下命令:

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.0.0.tar.gz

下載過程可能比較慢,可以使用自己電腦下載后使用ftp工具上傳到/soft目錄。

2.下載完成后,解壓elasticsearch-6.0.0.tar.gz

tar -vxf elasticsearch-6.0.0.tar.gz

解壓完成后內容如下

[king@localhost soft]$ ls 
elasticsearch-6.0.0  elasticsearch-6.0.0.tar.gz

3.進入elasticsearch-5.5.2,並啟動elasticsearch

[king@localhost soft]$ cd elasticsearch-6.0.0 [king@localhost elasticsearch-6.0.0]$ sh ./bin/elasticsearch ## 會有一堆日志輸出,還報了一個異常java.lang.UnsupportedOperationException: seccomp unavailable: requires kernel 3.5+ ...不過這個異常不影響啟動,是因為我們的內核版本太低了,新版本系統應該沒這個問題。

4.讓啟動不提示這個異常可以在config/elasticsearch.yml添加如下兩行內容,其中:號后面要加上一個空格,因為這是yaml文件的格式要求,yaml是一種新的屬性文件的寫法,更簡潔,不懂的可以自行查查。

bootstrap.memory_lock: false bootstrap.system_call_filter: false

5..這時重新啟動,不會提示任何錯誤了。新打開一個窗口,輸入curl localhost:9200,如果有以下輸出則說明啟動成功。

[king@localhost ~]$ curl localhost:9200 { "name" : "ZGws7ZX", "cluster_name" : "elasticsearch", "cluster_uuid" : "yeYDTLbNQ--rmDXMi2xO-g", "version" : { "number" : "5.5.2", "build_hash" : "b2f0c09", "build_date" : "2017-08-14T12:33:14.154Z", "build_snapshot" : false, "lucene_version" : "6.6.0" }, "tagline" : "You Know, for Search" }

 

6.在centos6下面啟動Elasticsearch的時候提示如下錯誤:

unable to load JNA native support library, native methods will be disabled.
java.lang.UnsatisfiedLinkError: Native library (com/sun/jna/linux-x86/libjnidispatch.so) not found

詳細錯誤:

flying-bird@flyingbird:~/elk$ ./elasticsearch-5.5.2/bin/elasticsearch -p my_cluster/node1_pid -Epath.conf=./my_cluster/node1/config
[2017-08-28T20:39:04,823][WARN ][o.e.b.Natives            ] unable to load JNA native support library, native methods will be disabled.
java.lang.UnsatisfiedLinkError: Native library (com/sun/jna/linux-x86/libjnidispatch.so) not found in resource path (...)
    at com.sun.jna.Native.loadNativeDispatchLibraryFromClasspath(Native.java:962) ~[jna-4.4.0.jar:4.4.0 (b0)]
    at com.sun.jna.Native.loadNativeDispatchLibrary(Native.java:922) ~[jna-4.4.0.jar:4.4.0 (b0)]
    at com.sun.jna.Native.<clinit>(Native.java:190) ~[jna-4.4.0.jar:4.4.0 (b0)]
    at java.lang.Class.forName0(Native Method) ~[?:1.8.0_05]
    at java.lang.Class.forName(Class.java:259) ~[?:1.8.0_05]
    at org.elasticsearch.bootstrap.Natives.<clinit>(Natives.java:45) [elasticsearch-5.5.2.jar:5.5.2]
    ...
[2017-08-28T20:39:04,829][WARN ][o.e.b.Natives            ] cannot check if running as root because JNA is not available
[2017-08-28T20:39:04,829][WARN ][o.e.b.Natives            ] cannot install system call filter because JNA is not available
[2017-08-28T20:39:04,830][WARN ][o.e.b.Natives            ] cannot register console handler because JNA is not available
[2017-08-28T20:39:04,832][WARN ][o.e.b.Natives            ] cannot getrlimit RLIMIT_NPROC because JNA is not available
[2017-08-28T20:39:04,832][WARN ][o.e.b.Natives            ] cannot getrlimit RLIMIT_AS beacuse JNA is not available
[2017-08-28T20:39:04,992][INFO ][o.e.n.Node               ] [node1] initializing ...

centos6環境

解決辦法

附 其他嘗試

https://github.com/java-native-access/jna下載jna-jna-5.0.0.zip,使用jna-jna-5.0.0/dist/linux-x86.jar 
和jna-jna-5.0.0/lib/native/linux-x86.jar,均不可用。

最后比較前面wget的文件,和jna-jna-5.0.0中所有的jar,發現這個文件和dist/jna.jar完全一樣。

 

四、CentOS下RPM安裝ElasticSearch

二、下載ElasticSearch

cd /data/software/
wget https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/rpm/elasticsearch/2.3.2/elasticsearch-2.3.2.rpm

三、安裝ElasticSearch

rpm -ivh elasticsearch-2.3.2.rpm

四、設置開機自啟動

service elasticsearch start
chkconfig elasticsearch on

 五、注意:

rpm安裝后,執行錯誤會放在log文件中,屏幕不輸出,一般在/var/log/elasticsearch

五、外網訪問設置

  細心的同學也許發現第一章驗證是用的“localhost:9200”,如果換成“IP:9200”,則瀏覽器與curl都無法進行訪問,那么如何讓外網訪問呢?網上查了一下,需要修改config目錄下elasticsearch.yml文件,修改network.host為“0.0.0.0”,然后進行啟動成功,外網就可以訪問啦。但是很遺憾,在我的機器還出現了其他錯誤,具體如下所示:

 

通過上面的錯誤信息,想到需要修改config目錄下elasticsearch.yml文件,修改discovery.zen.ping.unicast.hosts為“[“0.0.0.0”]”,然后再次啟動,發現沒有報錯信息(注意防火牆對於端口的限制),同時遠程瀏覽器訪問也正常,如下圖所示:

 

1、錯誤

linux下啟動報錯BindTransportException[Failed to bind to [9300-9400]解決辦法

Exception in thread "main" BindTransportException[Failed to bind to [9300-9400]]; nested: ChannelException[Failed to bind to: /192.168.0.1:9400]; nested: BindException[Cannot assign requested address]; Likely root cause: java.net.BindException: Cannot assign requested address at sun.nio.ch.Net.bind0(Native Method) at sun.nio.ch.Net.bind(Net.java:433) at sun.nio.ch.Net.bind(Net.java:425) at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223) at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74) at org.jboss.netty.channel.socket.nio.NioServerBoss$RegisterTask.run(NioServerBoss.java:193) at org.jboss.netty.channel.socket.nio.AbstractNioSelector.processTaskQueue(AbstractNioSelector.java:391) at org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:315) at org.jboss.netty.channel.socket.nio.NioServerBoss.run(NioServerBoss.java:42) at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108) at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

打開配置文件elasticsearch.yml 將 network.host: 192.168.0.1 修改為本機IP 0.0.0.0

通過root用戶啟動elasticsearch並且在后台運行

./elasticsearch -Des.insecure.allow.root=true -d

 

啟動elasticsearch 報如下錯誤:

[2017-05-10T10:04:50,648][WARN ][o.e.b.JNANatives         ] unable to install syscall filter: 

java.lang.UnsupportedOperationException: seccomp unavailable: CONFIG_SECCOMP not compiled into kernel, CONFIG_SECCOMP and CONFIG_SECCOMP_FILTER are needed

at org.elasticsearch.bootstrap.SystemCallFilter.linuxImpl(SystemCallFilter.java:363) ~[elasticsearch-5.3.2.jar:5.3.2]

at org.elasticsearch.bootstrap.SystemCallFilter.init(SystemCallFilter.java:638) ~[elasticsearch-5.3.2.jar:5.3.2]

at org.elasticsearch.bootstrap.JNANatives.tryInstallSystemCallFilter(JNANatives.java:215) [elasticsearch-5.3.2.jar:5.3.2]

at org.elasticsearch.bootstrap.Natives.tryInstallSystemCallFilter(Natives.java:99) [elasticsearch-5.3.2.jar:5.3.2]

at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:111) [elasticsearch-5.3.2.jar:5.3.2]

at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:204) [elasticsearch-5.3.2.jar:5.3.2]

at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:360) [elasticsearch-5.3.2.jar:5.3.2]

at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:123) [elasticsearch-5.3.2.jar:5.3.2]

at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:114) [elasticsearch-5.3.2.jar:5.3.2]

at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:58) [elasticsearch-5.3.2.jar:5.3.2]

at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:122) [elasticsearch-5.3.2.jar:5.3.2]

at org.elasticsearch.cli.Command.main(Command.java:88) [elasticsearch-5.3.2.jar:5.3.2]

at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:91) [elasticsearch-5.3.2.jar:5.3.2]

at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:84) [elasticsearch-5.3.2.jar:5.3.2]

 

解決方法:

修改elasticsearch.yml 添加一下內容

bootstrap.memory_lock: false
bootstrap.system_call_filter: false

 

 

問題一:警告提示

[2016-11-06T16:27:21,712][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]

報了一大串錯誤,其實只是一個警告。

解決:使用心得linux版本,就不會出現此類問題了。

 

問題二:ERROR: 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 [lishang] likely too low, increase to at least [2048]

解決:切換到root用戶,編輯limits.conf 添加類似如下內容

vi /etc/security/limits.conf 

添加如下內容:

* soft nofile 65536

* hard nofile 131072

* soft nproc 2048

* hard nproc 4096

 

問題三:max number of threads [1024] for user [lish] likely too low, increase to at least [2048]

解決:切換到root用戶,進入limits.d目錄下修改配置文件。

vi /etc/security/limits.d/90-nproc.conf 

修改如下內容:

* soft nproc 1024

#修改為

* soft nproc 2048

 

問題四:max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]

解決:切換到root用戶修改配置sysctl.conf

vi /etc/sysctl.conf 

添加下面配置:

vm.max_map_count=655360

並執行命令:

sysctl -p

 

問題五:max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]

解決:修改切換到root用戶修改配置limits.conf 添加下面兩行

命令:vi /etc/security/limits.conf

*        hard    nofile           65536
*        soft    nofile           65536
切換到es的用戶。

 

然后,重新啟動elasticsearch,即可啟動成功。

六、后台運行

最后還有一個小問題,如果你在服務器上安裝Elasticsearch,而你想在本地機器上進行開發,這時候,你很可能需要在關閉終端的時候,讓Elasticsearch繼續保持運行。最簡單的方法就是使用nohup。先按Ctrl + C,停止當前運行的Elasticsearch,改用下面的命令運行Elasticsearch

nohup./bin/elasticsearch&

這樣,你就可以放心地關閉服務器終端,而不用擔心Elasticsearch也跟着關閉了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM