總體過程概述
1. 設置普通用戶,ElasticSearch默認只能使用普通用戶啓動。
2. 配置環境,須要依賴JDK環境
3. 安裝ElasticSearch,解決kernal版本低的問題
4. 配置外網訪問,解決沒法啓動的三個錯誤問題
5. 讓ElasticSearch在後臺運行
6. 如何關閉ElasticSearch的後臺進程
7. 配置過程遇到的報錯處理
java
若是已是普通用戶登陸可跳過此步驟。linux
ElasticSearch默認是不能使用root用戶進行啓動的,因此須要先添加一個普通用戶,並使用普通用戶身份安裝ElasticSearch。bootstrap
1.添加一個用戶,無任何提示則表示成功添加。vim
[root@localhost soft]# adduser elk
2.設置用戶密碼,須要輸入兩次。其中提示無效的密碼能夠不用管,是由於密碼太簡單,不符合安全要求。 瀏覽器
[root@localhost soft]# passwd elk 更改用戶 elk 的密碼 。 新的 密碼: 無效的密碼: 過於簡單化/系統化 無效的密碼: 過於簡單 從新輸入新的 密碼: passwd: 全部的身份驗證令牌已經成功更新。
2、安裝jdk1.8安全
若是已經安裝jdk1.8可跳過此步驟服務器
ElasticSearch是基於Java開發的,因此要先安裝jdk環境。curl
1.使用編譯安裝jdk1.8jvm
[root@server02 elasticsearch-6.2.4]$ tar -zxvf jdk-8u161-linux-x64.tar.gz [root@server02 elasticsearch-6.2.4]$ cat /etc/profile ... export JAVA_HOME=/usr/local/java1.8/ export JRE_HOME=/usr/local/java1.8/jre/ export PATH=$PATH:/usr/local/java1.8/bin/ export CLASSPATH=./:/usr/local/java1.8/lib/:/usr/local/java1.8/jre/lib/ [root@server02 elasticsearch-6.2.4]$ mv /usr/bin/java /usr/bin/javabak [root@server02 elasticsearch-6.2.4]$ ln -s /usr/local/java/jdk1.7.0_67/jre/bin/java /usr/bin/java [root@server02 elasticsearch-6.2.4]$ java -version java version "1.8.0_161" Java(TM) SE Runtime Environment (build 1.8.0_161-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)
1.首先到官網下載最新版本的ElasticSearch的zip壓縮包,也能夠複製下載地址在終端中使用wget命令直接下載到CentOS中。:elasticsearch
2.下載完成後,解壓elasticsearch-6.2.4.tar.gz
tar -zxvf elasticsearch-6.2.4.tar.gz
解壓完成後內容以下
[elk@localhost soft]$ ls elasticsearch-6.2.4 elasticsearch-6.2.4.tar.gz
3.進入elasticsearch-6.2.4,並啓動elasticsearch
[elk@localhost soft]$ cd elasticsearch-6.2.4 [elk@localhost elasticsearch-6.2.4]$ 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
,若是有如下輸出則說明啓動成功。
[elk@localhost ~]$ curl localhost:9200 { "name" : "Dr0IyIr", "cluster_name" : "elasticsearch", "cluster_uuid" : "OX_SToLIQSKfLOpUTDWZ9g", "version" : { "number" : "6.2.4", "build_hash" : "ccec39f", "build_date" : "2018-04-12T20:37:28.497551Z", "build_snapshot" : false, "lucene_version" : "7.2.1", "minimum_wire_compatibility_version" : "5.6.0", "minimum_index_compatibility_version" : "5.0.0" }, "tagline" : "You Know, for Search" }
這個時候只有服務器自己能訪問ElasticSearch的服務,接下來配置外網服務。
1.在config/elasticsearch.yml添加以下內容:
network.host: 0.0.0.0
5、錯誤處理
從新啓動會報以下三個錯誤(個人翻譯可能有誤,大概這個意思)
ERROR: [3] bootstrap checks failed #文件句柄太少,至少要65536 [1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536] #最大線程數太少,至少2048個(經典的2048遊戲) [2]: max number of threads [1024] for user [king] is too low, increase to at least [4096] #虛擬內存太少,至少262144 [3]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
那麼接下來分別解決上面三個問題:
首先切換回root用戶進行這些系統操做,使用以下命令
[elk@localhost elasticsearch-6.2.4]$ su - 密碼: [root@localhost ~]#
1.更改文件句柄數
[root@localhost ~]# vi /etc/security/limits.conf
在文件中加入以下內容(*表示任何用戶)
* soft nofile 65536 * hard nofile 131072 * soft nproc 4096 * hard nproc 4096
2.增長線程數
[root@localhost ~]# vi /etc/security/limits.d/90-nproc.conf
將其中的
* soft nproc 1024
修改成
* soft nproc 4096
3.增長虛擬內存
[root@localhost ~]# vim /etc/sysctl.conf
在其中添加
vm.max_map_count=655360
4.這些修改完成後,並無生效,須要使用如下命令使其生效。
sysctl -p
6、從新啓動ElasticSearch
2.進入elastic目錄,並啓動,這時一切正常啦
[king@localhost soft]$ cd elasticsearch-6.2.4 [king@localhost elasticsearch-6.2.4]$ bin/elasticsearch
輸出信息以下:
OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, then you #中間信息省略,出現下面這個started就成功了。 [2017-09-03T03:26:07,843][INFO ][o.e.n.Node ] [ZGws7ZX] started
這裏打開本地瀏覽器,輸入服務器地址就可心成功訪問了,顯示以下
3.若是項目啓動成功了,可是本地訪問不到,那麼多是防火牆沒有配置。此處就直接把防火牆關閉了。命令以下:
service iptables stop 或者添加9200端口: -A INPUT -m state --state NEW -m tcp -p tcp --dport 9200 -j ACCEPT
在啓動時加上 -d 參數,以下
[elk@localhost elasticsearch-6.2.4]$ bin/elasticsearch -d
先查看後臺的信息
[elk@localhost elasticsearch-6.2.4]$ ps -ef|grep elastic king 41496 41309 2 03:53 pts/0 00:00:11 /usr/bin/java -Xms2g -Xmx2g -XX:+UseConcMarkSweepGC - .............
根據PID關閉進程,從新查看,有一個退出任務已經在執行了
[king@localhost elasticsearch-6.2.4]$ kill 41496 [king@localhost elasticsearch-6.2.4]$ ps -ef|grep elastic king 41642 41309 0 04:02 pts/0 00:00:00 grep elastic [1]+ Exit 143 nohup bin/elasticsearch > /dev/null 2>&1
問題:
max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
解決方法:
#切換到root用戶修改 vim /etc/security/limits.conf # 在最後面追加下面內容 * hard nofile 65536 * soft nofile 65536
修改後從新登陸elk用戶,使用以下命令查看是否修改爲功
ulimit -Hn 65536
問題:
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
解決方法 提升vm.max_map_count 的大小
# 切換到root用戶 vim /etc/sysctl.conf # 在最後面追加下面內容 vm.max_map_count=262144 # 使用 sysctl -p 查看修改後的結果 sysctl -p
問題:
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000085330000, 2060255232, 0) failed; error='Cannot allocate memory' (errno=12)
解決方法:
# 因爲elasticsearch5.0默認分配jvm空間大小爲2g,修改jvm空間分配 # 若是使用虛擬機安裝,內存最好不小於2G # vim config/jvm.options -Xms512m -Xmx512m
在阿里雲上可能出現的問題:
system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk
解決方法:在es配置中加入下面命令便可
bootstrap.system_call_filter: false
若是沒法生效能夠重啓服務器後,使調整的參數生效!