1. 程式人生 > 其它 >Elasticsearch 叢集安裝

Elasticsearch 叢集安裝

1 相關概念

1.1 單機 & 叢集

​ 單臺 Elasticsearch 伺服器提供服務,往往都有最大的負載能力,超過這個閾值,伺服器效能就會大大降低甚至不可用,所以生產環境中,一般都是執行在指定伺服器叢集中。
​ 除了負載能力,單點伺服器也存在其他問題:

  • 單臺機器儲存容量有限
  • 單伺服器容易出現單點故障,無法實現高可用
  • 單服務的併發處理能力有限

配置伺服器叢集時,叢集中節點數量沒有限制,大於等於 2 個節點就可以看做是叢集了。一般出於高效能及高可用方面來考慮叢集中節點數量都是 3 個以上。

1.2 叢集 Cluster

一個叢集就是由一個或多個伺服器節點組織在一起,共同持有整個的資料,並一起提供索引和搜尋功能。一個 Elasticsearch 叢集有一個唯一的名字標識,這個名字預設就是”elasticsearch”。這個名字是重要的,因為一個節點只能通過指定某個叢集的名字,來加入這個叢集。

1.3 節點 Node

​ 叢集中包含很多伺服器, 一個節點就是其中的一個伺服器。 作為叢集的一部分,它儲存資料,參與叢集的索引和搜尋功能。
​ 一個節點也是由一個名字來標識的,預設情況下,這個名字是一個隨機的漫威漫畫角色的名字,這個名字會在啟動的時候賦予節點。這個名字對於管理工作來說挺重要的,因為在這個管理過程中,你會去確定網路中的哪些伺服器對應於 Elasticsearch 叢集中的哪些節點。 一個節點可以通過配置叢集名稱的方式來加入一個指定的叢集。預設情況下,每個節點都會被安排加入到一個叫做“elasticsearch”的叢集中,這意味著,如果你在你的網路中啟動了若干個節點,並假定它們能夠相互發現彼此,它們將會自動地形成並加入到一個叫做
“elasticsearch”的叢集中。

​ 在一個叢集裡,只要你想,可以擁有任意多個節點。而且,如果當前你的網路中沒有執行任何 Elasticsearch 節點,這時啟動一個節點,會預設建立並加入一個叫做“elasticsearch”的叢集。

2 Windows 叢集

去官網下載要安裝的版本,這裡安裝的是elasticsearch-7.16.2-windows-x86_64.zip

https://www.elastic.co/cn/downloads/past-releases/elasticsearch-7-16-2

2.1 部署叢集

  1. 建立 elasticsearch-cluster 資料夾,解壓安裝包,在內部複製三個 elasticsearch 服務
  1. 修改叢集檔案目錄中每個節點的 config/elasticsearch.yml 配置檔案
  • node-1001 節點

    #節點 1 的配置資訊:
    #叢集名稱,節點之間要保持一致
    cluster.name: my-elasticsearch
    #節點名稱,叢集內要唯一
    node.name: node-1001
    node.master: true
    node.data: true
    #ip 地址
    network.host: localhost
    #http 埠
    http.port: 1001
    #tcp 監聽埠
    transport.tcp.port: 9301
    #discovery.seed_hosts: ["localhost:9301", "localhost:9302","localhost:9303"]
    #discovery.zen.fd.ping_timeout: 1m
    #discovery.zen.fd.ping_retries: 5
    #叢集內的可以被選為主節點的節點列表
    #cluster.initial_master_nodes: ["node-1", "node-2","node-3"]
    #跨域配置
    #action.destructive_requires_name: true
    http.cors.enabled: true
    http.cors.allow-origin: "*"
    
  • node-1002 節點

    #節點 2 的配置資訊:
    #叢集名稱,節點之間要保持一致
    cluster.name: my-elasticsearch
    #節點名稱,叢集內要唯一
    node.name: node-1002
    node.master: true
    node.data: true
    #ip 地址
    network.host: localhost
    #http 埠
    http.port: 1002
    #tcp 監聽埠
    transport.tcp.port: 9302
    discovery.seed_hosts: ["localhost:9301"]
    discovery.zen.fd.ping_timeout: 1m
    discovery.zen.fd.ping_retries: 5
    #叢集內的可以被選為主節點的節點列表
    #cluster.initial_master_nodes: ["node-1", "node-2","node-3"]
    #跨域配置
    #action.destructive_requires_name: true
    http.cors.enabled: true
    http.cors.allow-origin: "*"
    
  • node-1003 節點

    #節點 3 的配置資訊:
    #叢集名稱,節點之間要保持一致
    cluster.name: my-elasticsearch
    #節點名稱,叢集內要唯一
    node.name: node-1003
    node.master: true
    node.data: true
    #ip 地址
    network.host: localhost
    #http 埠
    http.port: 1003
    #tcp 監聽埠
    transport.tcp.port: 9303
    #候選主節點的地址,在開啟服務後可以被選為主節點
    discovery.seed_hosts: ["localhost:9301", "localhost:9302"]
    discovery.zen.fd.ping_timeout: 1m
    discovery.zen.fd.ping_retries: 5
    #叢集內的可以被選為主節點的節點列表
    #cluster.initial_master_nodes: ["node-1", "node-2","node-3"]
    #跨域配置
    #action.destructive_requires_name: true
    http.cors.enabled: true
    http.cors.allow-origin: "*"
    

2.2 啟動叢集

  1. 啟動前先刪除每個節點中的 data 目錄中所有內容(如果存在)
  1. 分別雙擊執行 bin/elasticsearch.bat, 啟動節點伺服器,啟動後,會自動加入指定名稱的叢集

2.3 測試叢集

檢視叢集狀態

node-1001 節點

node-1002 節點

node-1003 節點

status欄位指示著當前叢集在總體上是否工作正常。它的三種顏色含義如下:

green
	所有的主分片和副本分片都正常執行。
yellow
	所有的主分片都正常執行,但不是所有的副本分片都正常執行
red
	有主分片沒能正常執行。

向叢集中的 node-1001 節點增加索引

向叢集中的 node-1002 節點查詢索引

3 Linux單機

3.1 軟體下載

軟體下載地址: https://www.elastic.co/cn/downloads/past-releases/elasticsearch-7-16-2

下載 LINUX X86_64

3.2 軟體安裝

  1. 解壓軟體
    將下載的軟體解壓縮
# 解壓縮
tar -zxvf elasticsearch-7.16.2-linux-x86_64.tar.gz -C /opt/module
# 改名
mv elasticsearch-7.16.2 es
  1. 建立使用者
    因為安全問題, Elasticsearch 不允許 root 使用者直接執行,所以要建立新使用者,在 root 使用者中建立新使用者
useradd es #新增 es 使用者
passwd es #為 es 使用者設定密碼
userdel -r es #如果錯了,可以刪除再加
chown -R es:es /opt/module/es #資料夾所有者
  1. 修改配置檔案
    修改/opt/module/es/config/elasticsearch.yml 檔案
# 加入如下配置
cluster.name: elasticsearch
node.name: node-1
network.host: 0.0.0.0
http.port: 9200
cluster.initial_master_nodes: ["node-1"]

修改/etc/security/limits.conf

# 在檔案末尾中增加下面內容
# 每個程序可以開啟的檔案數的限制
es soft nofile 65536
es hard nofile 65536

修改/etc/security/limits.d/20-nproc.conf

# 在檔案末尾中增加下面內容
# 每個程序可以開啟的檔案數的限制
* soft nofile 65536
* hard nofile 65536  
# 作業系統級別對每個使用者建立的程序數的限制
* hard nproc 4096
# 注: * 帶表 Linux 所有使用者名稱稱

修改/etc/sysctl.conf

# 在檔案中增加下面內容
# 一個程序可以擁有的 VMA(虛擬記憶體區域)的數量,預設值為 65536
vm.max_map_count=655360

重新載入

sysctl -p

3.3 啟動軟體

使用 ES 使用者啟動

cd /opt/module/es/
#啟動
bin/elasticsearch
#後臺啟動
bin/elasticsearch -d  

啟動時,會動態生成檔案,如果檔案所屬使用者不匹配,會發生錯誤,需要重新進行修改使用者和使用者組

關閉防火牆

#暫時關閉防火牆
systemctl stop firewalld
#永久關閉防火牆
systemctl enable firewalld.service #開啟放貨搶永久性生效,重啟後不會復原
systemctl disable firewalld.service #關閉防火牆,永久性生效,重啟後不會復原

3.4 連線測試

瀏覽器中輸入地址: http://linux1:9200/

4 Linux 叢集

1 軟體安裝

1) 解壓軟體

將下載的軟體解壓縮

# 解壓縮
tar -zxvf elasticsearch-7.16.2-linux-x86_64.tar.gz -C /opt/module
# 改名
mv elasticsearch-7.16.2 es-cluster

將軟體分發到其他節點: linux2, linux3

2) 建立使用者

​ 因為安全問題, Elasticsearch 不允許 root 使用者直接執行,所以要在每個節點中建立新使用者,在 root 使用者中建立新使用者。如果已是非root使用者登入,跳過這步。

useradd es #新增 es 使用者
passwd es #為 es 使用者設定密碼
userdel -r es #如果錯了,可以刪除再加
chown -R es:es /opt/module/es-cluster #資料夾所有者

3) 修改配置檔案

修改/opt/module/es/config/elasticsearch.yml 檔案,分發檔案

# 加入如下配置
#叢集名稱
cluster.name: cluster-es
#節點名稱, 每個節點的名稱不能重複
node.name: node-1
#ip 地址, 每個節點的地址不能重複
network.host: hadoop101
#是不是有資格主節點
node.master: true
node.data: true
http.port: 9200
# head 外掛需要這開啟這兩個配置
http.cors.allow-origin: "*"
http.cors.enabled: true
http.max_content_length: 200mb
#es7.x 之後新增的配置,初始化一個新的叢集時需要此配置來選舉 master
cluster.initial_master_nodes: ["node-1"]
#es7.x 之後新增的配置,節點發現
discovery.seed_hosts: ["hadoop101:9300","hadoop102:9300","hadoop103:9300"]
gateway.recover_after_nodes: 2
network.tcp.keep_alive: true
network.tcp.no_delay: true
transport.tcp.compress: true
#叢集內同時啟動的資料任務個數,預設是 2 個
cluster.routing.allocation.cluster_concurrent_rebalance: 16
#新增或刪除節點及負載均衡時併發恢復的執行緒個數,預設 4 個
cluster.routing.allocation.node_concurrent_recoveries: 16
#初始化資料恢復時,併發恢復執行緒的個數,預設 4 個
cluster.routing.allocation.node_initial_primaries_recoveries: 16

修改/etc/security/limits.conf ,分發檔案

# 在檔案末尾中增加下面內容
* soft nofile 65536
* hard nofile 65536

修改/etc/security/limits.d/20-nproc.conf,分發檔案

# 在檔案末尾中增加下面內容
* soft nofile 65536
* hard nofile 65536
* hard nproc 4096
# 注: * 帶表 Linux 所有使用者名稱稱

修改/etc/sysctl.conf

# 在檔案中增加下面內容
vm.max_map_count=655360

重新載入
sysctl -p

2 啟動軟體

分別在不同節點上啟動 ES 軟體

cd /opt/module/es-cluster
#啟動
bin/elasticsearch
#後臺啟動
bin/elasticsearch -d  

3 測試叢集

http://192.168.3.6:9200/_cat/nodes