小白學ES 02-Linux中部署Elasticsearch單機服務(5.6.10版本)
目錄
此部署過程以Elasticsearch-5.6.10版本為例, 後續的學習和演示也用此版本.
1 前提: 安裝JDK
學習使用ES的前提是成功安裝JDK —— 很基礎的一項步驟, 這裡省略.
此處學習演示所用的JDK版本為:
[[email protected] ~]# java -version java version "1.8.0_151" Java(TM) SE Runtime Environment (build 1.8.0_151-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)
2 準備安裝包
根據自己的系統版本下載相應的安裝包, 連結如下:
https://www.elastic.co/downloads/elasticsearch
這裡下載MacOS/Linux系統下的版本 elasticsearch-5.6.10.tar.gz.上傳並解壓:
# 工作路徑 mkdir /data/elk # 上傳安裝包後解壓 tar -zxf elasticsearch-5.6.10.tar.gz # 修改安裝包檔名 mv elasticsearch-5.6.10.tar.gz es-node1
3 建立ES專用使用者
# 建立使用者 useradd elastic -s /bin/bash # 為該使用者賦予相關操作許可權 chown -R elastic:elastic /data/elk
4 啟動ES服務
# 切換使用者
su elastic
# 啟動服務, -d是指在後臺啟動, 若不用, 則Elasticsearch將
cd /data/elk/master
./bin/elasticsearch -d
注意事項:
Elasticsearch必須以 非root使用者啟動, 否則將丟擲如下錯誤:
[2018-11-05T04:24:50,035][ERROR][o.e.b.Bootstrap ] Exception java.lang.RuntimeException: can not run elasticsearch as root at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:106) ~[elasticsearch-5.6.10.jar:5.6.10] at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:195) ~[elasticsearch-5.6.10.jar:5.6.10] at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:342) [elasticsearch-5.6.10.jar:5.6.10] at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:132) [elasticsearch-5.6.10.jar:5.6.10] at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:123) [elasticsearch-5.6.10.jar:5.6.10] at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:70) [elasticsearch-5.6.10.jar:5.6.10] at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:134) [elasticsearch-5.6.10.jar:5.6.10] at org.elasticsearch.cli.Command.main(Command.java:90) [elasticsearch-5.6.10.jar:5.6.10] at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:91) [elasticsearch-5.6.10.jar:5.6.10] at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:84) [elasticsearch-5.6.10.jar:5.6.10]
5 驗證ES服務是否可用
通過
jps
命令檢視當前系統中執行的所有Java程序, 前提是JDK的環境變數設定OK:[[email protected] bin]$ jps 25810 Elasticsearch # Elasticsearch的程序號 25926 Jps
通過 ps -ef 或 ps aux 命令檢視
[[email protected] bin]$ ps aux | grep elasticsearch elastic 25810 23.0 28.6 5753680 2310200 pts/0 Sl 04:31 0:19 /server/jdk1.8.0_151/bin/java -Xms2g -Xmx2g -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+AlwaysPreTouch -server -Xss1m -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djna.nosys=true -Djdk.io.permissionsUseCanonicalPath=true -Dio.netty.noUnsafe=true -Dio.netty.noKeySetOptimization=true -Dio.netty.recycler.maxCapacityPerThread=0 -Dlog4j.shutdownHookEnabled=false -Dlog4j2.disable.jmx=true -Dlog4j.skipJansi=true -XX:+HeapDumpOnOutOfMemoryError -Des.path.home=/data/elk/es-node1 -cp /data/elk/es-node1/lib/* org.elasticsearch.bootstrap.Elasticsearch -d elastic 27403 0.0 0.0 103260 852 pts/0 R+ 04:33 0:00 grep elasticsearch
在MacOS/Linux的終端(或Windows的命令列)下執行命令:
# MacOS/Linux下: curl http://localhost:9200/ # Windows下: Invoke-RestMethod http://localhost:9200
或在瀏覽器中訪問 "http://localhost:9200/", 若能出現類似上述終端中的資訊, 說明ES服務啟動成功.
執行介面引數解釋:
{ "name" : "Xa0PFJM", # 當前Node的名稱 "cluster_name" : "elasticsearch", # 當前節點所屬的叢集名稱(預設是elasticsearch) "cluster_uuid" : "Bk9p7xDhR8WM9HRx3pFEEA", "version" : { "number" : "5.6.10", # 當前執行的ES的版本號 "build_hash" : "b727a60", "build_date" : "2018-06-06T15:48:34.860Z", "build_snapshot" : false, # 當前執行版本是否是從原始碼構建而來 "lucene_version" : "6.6.1" }, "tagline" : "You Know, for Search" # ES的第一個tabline }
6 關閉ES服務
Elasticsearch沒有直接關閉或重啟服務的命令, 關閉只能通過kill命令殺掉程序的方式, 如下:
[[email protected] bin]$ ps aux | grep elasticsearch # 檢視ES程序的id
[[email protected] bin]$ kill -8 25810 # 通過程序id來殺掉服務
7 重啟ES服務
[[email protected] bin]$ sh elasticsearch -d
當然可以編寫一個服務指令碼, 來方便快捷地啟動或關閉Elasticsearch服務.
8 常見問題的解決
問題說明: 使用ES專屬使用者啟動ES服務時, 終端丟擲如下錯誤:
[[email protected] bin]$ 2018-11-05 04:26:38,466 main ERROR Could not register mbeans java.security.AccessControlException: access denied ("javax.management.MBeanTrustPermission" "register")
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:472)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:585)
......
SettingsException[Failed to load settings from /data/elk/es-node1/config/elasticsearch.yml]; nested: AccessDeniedException[/data/elk/es-node1/config/elasticsearch.yml];
......
Caused by: java.nio.file.AccessDeniedException: /data/elk/es-node1/config/elasticsearch.yml
......
問題分析: 錯誤資訊說明: 當前使用者無的訪問被拒絕, 可知ES專屬使用者無法執行當前應用.
解決方法: 為ES建立專屬使用者後, 對其賦予相應的讀寫許可權.
# 為該使用者賦予相關操作許可權
chown -R elastic:elastic /data/elk
版權宣告
作者: ma_shoufeng(馬瘦風)
出處: 部落格園 馬瘦風的部落格
您的支援是對博主的極大鼓勵, 感謝您的閱讀.
本文版權歸博主所有, 歡迎轉載, 但未經博主同意必須保留此段宣告, 且在文章頁面明顯位置給出原文連結, 否則博主保留追究法律責任的權利.