1. 程式人生 > >小白學ES 02-Linux中部署Elasticsearch單機服務(5.6.10版本)

小白學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 準備安裝包

  1. 根據自己的系統版本下載相應的安裝包, 連結如下:
    https://www.elastic.co/downloads/elasticsearch
    這裡下載MacOS/Linux系統下的版本 elasticsearch-5.6.10.tar.gz.

  2. 上傳並解壓:

    # 工作路徑
    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(馬瘦風)

出處: 部落格園 馬瘦風的部落格

您的支援是對博主的極大鼓勵, 感謝您的閱讀.

本文版權歸博主所有, 歡迎轉載, 但未經博主同意必須保留此段宣告, 且在文章頁面明顯位置給出原文連結, 否則博主保留追究法律責任的權利.