- 安裝啟動過程
- 啟動過程中可能遇見的問題
- 1JVM記憶體問題
- 2根權限執行問題
- 3Es使用者權限不足
- 4記憶體問題
工作需要,學習了一下ElasticSearch的搭建,過程中碰到很多問題,查了不少資料,在此做個彙總,也希望給後人鋪個路~
- Es版本:5.6.3
安裝啟動過程
1.首先安裝java(jdk1.7或1.8都可以),并配置環境變量。(原來有安裝配置過的略過此步)
2.使用curl指令下載下傳es:
$ curl -L -O https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch/elasticsearch-5.6.3.tar.gz
然後使用 $tar xzf elasticsearch-5.6.3.tar.gz解壓es。
3.修改通路es的ip及端口
# vim /usr/local/elasticsearch/elasticsearch-5.6.3/config/elasticsearch.yml
如圖将host與port參數配置的注釋取消,并配置host為本機ip即可:
4.進入解壓出來的es目錄的bin下,啟動es節點和單叢集:
$ ./elasticsearch
5.啟動成功後,在web浏覽器中輸入192.168.179.129:9200,如果傳回以下頁面,則說明成功。
或者在shell中直接curl http://192.168.179.129:9200,如果傳回以下資訊也說明成功:
啟動過程中可能遇見的問題
(1)JVM記憶體問題
如果遇到:
說明jvm啟動記憶體太大,機器記憶體不足(如果按照之前虛拟機配置中的1G來配置,則會出現此問題,因為es預設jvm啟動記憶體是2g,是以我們需要配置一下es的啟動記憶體)
編輯es/config/jvmoptions檔案,修改以下兩個參數:
#-Xms2g
#-Xmx2g
-Xms512m
-Xmx512m
(2)根權限執行問題
如果遇到:
根據提示,無法以根權限啟動es程式,是以我們建立一個非根使用者,并給它賦予目錄該使用者權限。
# groupadd es
# useradd es -g es -p es
# chown -R es:es /usr/local/elasticsearch/
# sudo su es
再為建立的es使用者配置一下環境變量,将之前root使用者的内容拷貝過來(主要是java的環境變量):‘
# vim ~/.bash_profile
# java environment
export JAVA_HOME=/usr/local/java/jdk1.8.0_91
export JRE_HOME=$JAVA_HOME/jre
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
用source指令使配置生效:
# source ~/.bash_profile
再次啟動es。
(3)Es使用者權限不足:
如果遇到:
這是在之前root使用者給es使用者賦權時沒有完全将es目錄的所有檔案權限給es,重新用root使用者身份執行:(-R參數不要掉,表示遞歸将es目錄下所有檔案權限給es使用者)
# chown -R es:es /usr/local/elasticsearch/
(4)記憶體問題:
有[1][2][3]三個問題,逐一解決:
[1]: initial heap size [16777216] not equal to maximum heap size [257949696]; this can cause resize pauses and prevents mlockall from locking the entire heap
第一個問題還是jvm記憶體問題,請重新檢查可能碰到的問題(1)JVM記憶體問題,按照步驟重新檢查一遍。
[2]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
Es程序設定的最大檔案描述符太小,需要增加。
編輯/etc/security/limits.conf,最後加上:
es soft nofile 65536
es hard nofile 65536
然後重新連接配接shell,切換到es使用者,再嘗試啟動es。
[3]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
是以為作業系統的vm.max_map_count參數設定太小導緻的,請使用root使用者登入系統,執行以下指令:
sysctl -w vm.max_map_count=262144
并用以下指令檢視是否修改成功
sysctl -a | grep “vm.max_map_count”
如果能正常輸出262144,則說明修改成功