Elasticsearch離線安裝(linux)

一、官網下載源文件
下載地址:https://www.elastic.co/cn/downloads/past-releases
在這裏插入圖片描述
根據環境及安裝方式,可選對應文件進行下載
在這裏插入圖片描述
下載好的文件爲:elasticsearch-6.2.4.tar.gz

二、上傳至linux服務器並部署

上傳至linux服務器,並解壓至特定文件夾,解壓後會生成一個名爲elasticsearch-6.2.4的文件夾,此文件夾目錄如下:
在這裏插入圖片描述
注意:elasticsearch不支持root用戶啓動,所以需要新建一個用戶,並把解壓後的目錄權限賦給新建用戶。
示例:

  • 新建用戶elastic:useradd elastic
  • 目錄賦權:chown -R elastic elasticsearch-6.2.4/

簡單點的話主要關注的就是bin目錄和config目錄

  • bin: elasticsearch啓動腳本所在目錄
  • config: 配置文件所在目錄,主要配置文件elasticsearch.yml(es配置)、jvm.options(堆內存分配設置)

elasticsearch.yml常用配置:

#集羣名稱(默認值my-application),如果搭建多個集羣,可用這個屬性來區分不同集羣
cluster.name: es-lee

#節點名稱(默認值node-1),用以區分節點
node.name: node-1

#索引數據存放目錄(默認值/path/to/data),自行指定目錄便於管理,也可使用逗號分隔使用多目錄
path.data: /data/es/data

#日誌文件存儲目錄(默認值/path/to/logs),自行指定目錄便於管理,也可使用默認值,指定目錄需注意使用用戶有讀寫權限
path.logs: /data/es/log

#設置節點服務器ip(其他服務器可通過IP訪問)
network.host: 192.168.79.10

#對外服務的http端口(默認值9200)
http.port: 9200

其他配置還有很多,詳情參考官網https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html

jvm.options常用配置:

#最小堆存
-Xms4g 
#最大堆內存,使用超出後會發生OOM
-Xmx4g

此處注意的是,最小堆內與最大堆內存建議設置一致,避免程序運行過程中動態分配影響性能,官方建議是不超過節點服務器內存的一半,且考慮Java壓縮指針的作用,最大不要超過32G(常用說法,實際並不那麼標準,後面鏈接有說明),堆內存設置還真是門學問,不能太大,不能小,想要深入瞭解的話可以看看這篇文章:https://www.elastic.co/cn/blog/a-heap-of-trouble

好了,配置到這裏差不多了,可以運行起來看看效果了
使用bin目錄下elasticsearch腳本執行:

./bin/elasticsearch

以爲到這裏就結束了嗎,不,還沒有…

三、常見啓動問題

  1. 無法使用root用戶啓動
    使用root用戶執行啓動腳本,會拋出以下異常:

    org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root
    at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:125) ~[elasticsearch-6.2.4.jar:6.2.4]
    at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:112) ~[elasticsearch-6.2.4.jar:6.2.4]
    at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-6.2.4.jar:6.2.4]
    at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) ~[elasticsearch-cli-6.2.4.jar:6.2.4]
    at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-cli-6.2.4.jar:6.2.4]
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92) ~[elasticsearch-6.2.4.jar:6.2.4]
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:85) ~[elasticsearch-6.2.4.jar:6.2.4]
    Caused by: java.lang.RuntimeException: can not run elasticsearch as root
    at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:105) ~[elasticsearch-6.2.4.jar:6.2.4]
    at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:172) ~[elasticsearch-6.2.4.jar:6.2.4]
    at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:323) ~[elasticsearch-6.2.4.jar:6.2.4]
    at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:121) ~[elasticsearch-6.2.4.jar:6.2.4]

    解決方法上面已經提到,新建用戶,使用其他用戶啓動,再啓動試一波,什麼?還沒結束…

  2. 啓動報錯,操作系統環境相關配置
    錯誤詳情:

    [1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
    [2]: max number of threads [3791] for user [lee] is too low, increase to at least [4096]
    

    修改相關配置文件
    vi /etc/security/limits.conf

    * soft nofile 65536
    * hard nofile 131072
    * soft nproc 4096
    * hard nproc 4096
    

    具體錯誤原因這篇文章描述的比較詳細:https://www.cnblogs.com/zhi-leaf/p/8484337.html

    好了,再次執行./bin/elasticsearch,啓動成功,沒有報錯了,通過服務地址 http://服務器IP:9200 驗證一下,出現下圖結果說明啓動成功
    在這裏插入圖片描述
    如果無法正常訪問,也不要方。有兩個原因可能會導致啓動成功,其他服務器也無法通過ip訪問。

    1. 看看 elasticsearch.yml配置文件network.host屬性有沒有對應配置IP,或者直接配置0.0.0.0
    2. 節點服務器的防火牆是否開啓,關閉防火牆或者開放es佔用端口即可

四、補充

以上只是單節點部署,要搭建ES集羣的話也比較簡單,按照以上步驟在其他服務器搭建部署,保持cluster.name集羣名稱保持一致,同一網段下的服務器會自動識別並組成集羣,若非同一網段,在elasticsearch.yml文件增加以下配置:

#根據節點真實IP進行配置,也可通過域名配置
discovery.zen.ping.unicast.hosts: ["192.168.79.10", "192.168.79.11"]

通過ES提供的集羣狀態API可驗證集羣是否成功,API訪問地址:http://任意節點IP:9200/_cluster/stats?pretty ,出現以下結果表示ES集羣搭建成功
在這裏插入圖片描述

以上就是我在linux服務器中離線安裝Elasticsearch並搭建集羣的完整實踐步驟。初次接觸Elasticsearch,本文純屬個人理解,如有不當,煩請指出,不勝感激。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章