ES(一) -- ES 6.5.4部署

一:摘要概述

  • 是什麼:ElasticSearch爲目前比較流行的全文搜索引擎,底層技術封裝Apache Lucene實現
  • 擴展點:相對於Apache Luence而言ES還實現分佈式文件存儲、實時數據分析、通過服務器擴展可以達到PB級別結構化/非結構化數據處理
  • 進步性:Apache Luence操作及其複雜,不信自己去試試。但是ES封裝以後對外提供RESTFull Web接口,入門堪稱精簡
  • Head:ES的一款Web插件,通過Head可以與ES服務進行Web交互。當然也可以監控ES服務狀態

二:ES單點

本人喜歡官網下載tar包以後解壓縮安裝,而且ES也不需要複雜化配置,基本開箱即用。所以下載具體版本請前往官網下載本文采用6.5.4版本,其餘最新版本等請自行下載、解壓、安裝

// 解壓縮tar文件
tar -xvf elasticsearch-6.5.4.tar.gz
2.1 文件配置

ES在conf目錄下總共有三個配置文件,分別代表ES應用配置的elasticsearch.yml、JVM設置參數設置的jvm.options、日誌記錄配置的log4j2.properties。這裏就簡單對應用配置文件做一些修改啓動

// 進入解壓後的文件夾修改配置文件
vim /conf/elasticsearch.yml
// 代表集羣名稱,搭建ES集羣十分關鍵,節點會按照該名稱加入對應集羣
cluster.name: es_test_zsl
// 節點名稱,後續該設置可以在Head、Kibana中看到
node.name: node1
// 默認本地可訪問,0.0.0.0表示任意IP地址可訪問,線上可修改爲應用IP地址
network.host: 0.0.0.0
// 默認應用端口9200如果被佔用修改端口號
http.port: 9200
// 後面Head等前端插件訪問需要解決跨域問題,增加如下兩個配置
http.cors.enabled: true
http.cors.allow-origin: "*"
2.2 驗證啓動

修改完畢後直接使用elasticsearch腳本啓動,通過瀏覽器訪問9200端口看到如下圖所示效果表示成功

// 啓動ES服務
./bin/elasticsearch

// 後臺啓動服務
./bin/elasticsearch -d

在這裏插入圖片描述

2.3 常見異常
org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root
        at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:140) ~[elasticsearch-6.5.4.jar:6.5.4]
        at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:127) ~[elasticsearch-6.5.4.jar:6.5.4]
        at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-6.5.4.jar:6.5.4]
        at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) ~[elasticsearch-cli-6.5.4.jar:6.5.4]
        at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-cli-6.5.4.jar:6.5.4]
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:93) ~[elasticsearch-6.5.4.jar:6.5.4]
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:86) ~[elasticsearch-6.5.4.jar:6.5.4]
Caused by: java.lang.RuntimeException: can not run elasticsearch as root
        at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:103) ~[elasticsearch-6.5.4.jar:6.5.4]
        at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:170) ~[elasticsearch-6.5.4.jar:6.5.4]
        at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:333) ~[elasticsearch-6.5.4.jar:6.5.4]
        at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:136) ~[elasticsearch-6.5.4.jar:6.5.4]
        ... 6 more
// 更改權限命令
 chown -R 用戶名:用戶所屬組 文件夾
  • ES安全策略不允許root用戶啓動,所以需要ES文件夾修改爲新建某用戶所有。如果在更改所有後還不小心使用Root用戶操作這時會產生root用戶所有的日誌文件,記得再更改一遍後使用新建用戶啓動
[1]: max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]
[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
// 修改可創建文件描述大小
vim /etc/security/limits.conf
 
// 修改文件最後的幾項配置內容
root soft nofile 65536
root hard nofile 65536
* soft nofile 65536
* hard nofile 65536
// 修改虛擬內存太小
vim /etc/sysctl.conf

// 新增配置內容
vm.max_map_count=262144

// 生效查看
sysctl -p
  • 第一個錯誤含義爲ES可以創建的文件描述太少,第二個錯誤信息的含義爲虛擬內存太小。這時使用root用戶進行對應服務器參數設置即可

三:ES單機集羣

因爲機器有限,演示集羣部署的時候採用單機多實例,通過端口的修改完成集羣的部署。如果單節點通過Head亦或是Kibana工具查看節點狀態都會是黃色,因爲創建索引默認是一個副本五個分片,當所有內容都在單節點上時就會顯示黃色

3.1 相關參數

依然是修改elasticsearch.yml配置文件

// 所有節點集羣名稱必須一致
cluster.name: es_test_zsl

// 集羣節點名稱不能一致
node.name: node_1_217

// 集羣通信端口,默認9300
transport.tcp.port: 9301

// 發現集羣節點IP:端口,當發現一個其餘節點就能加入集羣
discovery.zen.ping.unicast.hosts: ["節點IP:集羣通信端口", "節點IP:集羣通信端口"]

// 避免腦裂,算法一般是節點數量M / 2 + 1
discovery.zen.minimum_master_nodes: 1

// 單機部署避免自身發現加上這個配置
xpack.security.enabled: false

所有ES節點實例配置文件參照上述參數修改即可,ES集羣的部署還是比較簡單的。至於更深入的學習後續進行

在這裏插入圖片描述

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