Es搭建——單節點——Linux
一、安裝
下載安裝包:
官網下載地址:https://www.elastic.co/downloads/elasticsearch
上傳包到linux 切換到安裝目錄下
解壓:tar -zxvf elasticsearch-7.17.1-linux-x86_64.tar.gz
重命名安裝文件夾 mv elasticsearch-7.17.1 es
cd xxxx(es安裝目錄)/es
二、配置文件修改
注意:冒號后面有個空格,否則會導致配置文件格式錯誤,啟動時報錯
1、elasticsearch.yml
cd config
vi elasticsearch.yml
集群相關設置
-------------------------------Cluster-------------------------------
cluster.name: 設置你的集群名稱(例es-test)
節點相關設置
-------------------------------Node----------------------------------
node.name: 設置你的節點名稱(例estest-node-1)
網絡相關設置
-------------------------------Network----------------------------------
network.host: 部署該節點的服務器IP
http.port: 9200 (es服務對外的端口,默認即可) (設置0.0.0.0時,允許任何ip訪問)
集群發現相關設置
-------------------------------Discovery----------------------------------
#初始主節點列表,集群自動發現選舉master
cluster.initial_master_nodes: Node中設置的該節點名稱(例estest-node-1)
三:啟動ES
1、測試啟動服務
cd xxxx(es安裝目錄)/es/bin
./elasticsearch
2、后臺啟動
./elasticsearch -d
四:依次解決報錯
1、es本身自帶的jdk版本與服務器所安裝jdk版本沖突
warning: usage of JAVA_HOME is deprecated, use ES_JAVA_HOME
Future versions of Elasticsearch will require Java 11; your Java version from [xxxxx/jdk1.8.0/jre] does not meet this requirement. Consider switching to a distribution of Elasticsearch with a bundled JDK. If you are already using a distribution with a bundled JDK, ensure the JAVA_HOME environment variable is not set.
報錯原因:
elasticsearch默認啟動時
先找系統安裝的jdk,若未安裝jdk則使用es自帶的jdk,系統無需再安裝jdk
若系統已安裝jkd且與es所需jdk版本不一致,則es啟動報錯jdk版本問題
見es/bin 中的elasticsearch-env 的jdk判斷代碼
報錯信息和echo輸出內容符合,說明走的是:"elif [ ! -z “$JAVA_HOME” ]; then"分支
# now set the path to java
if [ ! -z "$ES_JAVA_HOME" ]; thenJAVA="$ES_JAVA_HOME/bin/java"JAVA_TYPE="ES_JAVA_HOME"
elif [ ! -z "$JAVA_HOME" ]; then# fallback to JAVA_HOMEecho "warning: usage of JAVA_HOME is deprecated, use ES_JAVA_HOME" >&2JAVA="$JAVA_HOME/bin/java"JAVA_TYPE="JAVA_HOME"
else# use the bundled JDK (default)if [ "$(uname -s)" = "Darwin" ]; then# macOS has a different structureJAVA="$ES_HOME/jdk.app/Contents/Home/bin/java"elseJAVA="$ES_HOME/jdk/bin/java"fiJAVA_TYPE="bundled JDK"
fi
即:【補流程圖】
解決方案:
系統不重新安裝es所需jdk版本時,使用es內置jdk
方法a、配置 ES_JAVA_HOME路徑
因為沒有識別到ES_JAVA_HOME,故需配置ES_JAVA_HOME
#編輯配置文件
vi ~/.bashrc
#在末尾添加以下內容
export ES_JAVA_HOME=xxxx(es安裝目錄)/es/jdk
#使命令生效
source ~/.bashrc
#檢查配置是否成功
echo $ES_JAVA_HOME
方法b、修改配置 指定系統的JAVA_HOME為es的jdk路徑
cd xxxx(es安裝目錄)/es/bin
vi ./elasticsearch 【此處需再確認---方法是否正確】
#添加以下配置
# 將jdk修改為es中自帶jdk的配置目錄
export JAVA_HOME=xxxx(es安裝目錄)/es/jdk
export PATH=$JAVA_HOME/bin:$PATHif [ -x "$JAVA_HOME/bin/java" ]; thenJAVA="xxxx(es安裝目錄)/es/jdk/bin/java"
elseJAVA=`which java`
fi
方法c、刪除系統jdk的判斷,直接啟用Es自帶的java
cd xxxx(es安裝目錄)/es/bin
vi elasticsearch-env 【此處需再確認---方法是否正確,修改判斷后,仍然沒有ES_HOME,試下會成功嗎】
# now set the path to java
if [ "$(uname -s)" = "Darwin" ]; then
# macOS has a different structure
JAVA="$ES_HOME/jdk.app/Contents/Home/bin/java"
else
JAVA="$ES_HOME/jdk/bin/java"
fi
JAVA_TYPE="bundled jdk"
方法d、將啟動時系統jdk路徑指定為es自帶的jdk
cd xxxx(es安裝目錄)/es/bin
vi elasticsearch-env
首行代碼set -e -o pipefail下
添加JAVA_HOME指向es自帶jdk的位置:export JAVA_HOME =xxxx(es安裝目錄)/es/jdk。
set -e -o pipefail
#添加下行配置:使用es自帶的jdk
export JAVA_HOME =xxxx(es安裝目錄)/es/jdk
參考:
https://blog.csdn.net/smilehappiness/article/details/118466378
https://www.cnblogs.com/zhuhuibiao/p/16446105.html
2、root用戶啟動es失敗
java.lang.RuntimeException: can not run elasticsearch as root
報錯原因
es因為安全問題拒絕使用root用戶啟動
解決方案:
添加系統用戶用來啟動es
groupadd es
useradd es -g es -p password # -g 指定組 -p 密碼
chown es:es -R xxxx(es安裝目錄)/es/ # -R 處理指定目錄以及其子目錄下的所有文件
#切換到es用戶
su es
#啟動es
./elasticsearch
參考:
https://blog.csdn.net/fwdwqdwq/article/details/124241935
3、max virtual memory areas vm.max_map_count [65530] is too low
ERROR: [1] bootstrap checks failed. You must address the points described in the following [1] lines before starting Elasticsearch.
bootstrap check failure [1] of [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
報錯原因:
Elasticsearch在啟動時會檢查操作系統的配置,若vm.max_map_count的值太低,就會報錯。
vm.max_map_count是Linux系統中一個內核參數,它限制了每個進程可以擁有的內存區域(memory areas)數量。Elasticsearch可能需要比默認更多的內存區域,如果這個值太低,Elasticsearch就會報錯。
注:262144是一個常用的值,可根據需求調整,評估可能對系統穩定性造成的影響
解決方案:
永久修改該配置
#切換至root用戶
su root
#編輯/etc/sysctl.conf文件
vi /etc/sysctl.conf
#添加配置
vm.max_map_count=262144
#保存退出后
#刷新配置文件使改動立即生效
sudo sysctl -p
參考:
https://blog.csdn.net/jane_xing/article/details/139790289
#繼續切換es用戶,重新啟動es
su es
cd xxxx(es安裝目錄)/es/bin
./elasticsearch
4、其他問題待更新
基本解決思路:先使用 ./elasticsearch 方式啟動,找到日志的error關鍵字,百度相關報錯信息
五、判斷是否啟動成功
方法1、檢查es進程
ps -ef|grep elasticsearch
方法2、訪問url
http://部署該節點的服務器IP:9200/
六、設置es的用戶名密碼
編輯elasticsearch.yml配置文件
vi xxxx(es安裝目錄)/es/config/elasticsearch.yml
#在末尾添加下面兩行
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
#保存退出后,重啟es(重啟后配置才生效)
設置用戶名密碼
cd xxxx(es安裝目錄)/es/bin
elasticsearch-setup-passwords interactive
#依次設置elastic、kibana、logstash等的訪問密碼
再次url再次訪問驗證是否生效,出現彈窗則生效
參考:
https://blog.csdn.net/smilehappiness/article/details/118466378
七、單節點關閉es
1、若后臺啟動,找到對應進程號,直接殺進程即可
ps -ef|grep elasticsearch
kill -9 進程號
2、若控制臺啟動,直接ctrl+c