1. 程式人生 > 實用技巧 >ElasticSearch叢集部署

ElasticSearch叢集部署

一、叢集節點介紹

​ ELasticsearch的叢集是由多個節點組成的,通過cluster.name設定叢集名稱,並且用於區分其它的叢集,每個節點通過node.name指定節點的名稱。

​ 在Elasticsearch中,節點的型別主要有4種:

  • master節點
    • 配置檔案中node.master屬性為true(預設為true),就有資格被選為master節點。master節點用於控制整個叢集的操作。比如建立或刪除索引,管理其它非master節點等。
  • data節點
    • 配置檔案中node.data屬性為true(預設為true),就有資格被設定成data節點。data節點主要用於執行資料相關的操作。比如文件的CRUD。
  • 客戶端節點
    • 配置檔案中node.master屬性和node.data屬性均為false。
    • 該節點不能作為master節點,也不能作為data節點。
    • 可以作為客戶端節點,用於響應使用者的請求,把請求轉發到其他節點
  • 部落節點
    • 當一個節點配置tribe.*的時候,它是一個特殊的客戶端,它可以連線多個叢集,在所有連線的叢集上執行搜尋和其他操作

二、叢集搭建步驟

三臺機器的環境配置(root下操作)

[root@slave1 ~]# vim /etc/security/limits.conf
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096

[root@slave1 ~]# vim /etc/sysctl.conf
vm.max_map_count=655360
[root@slave1 ~]# sysctl -p

2.1、單節點安裝(省略)

# 參考
https://www.cnblogs.com/hsyw/p/14090372.html

2.2、分發ElasticSearch

# 分發之前先刪除資料
/app/elasticsearch/data
rm -rf nodes/

# 分發
[root@master ~]# cd /app/
[root@master app]# scp -rp elasticsearch 192.168.1.112:/app/
[root@master app]# scp -rp elasticsearch 192.168.1.113:/app/

# 在另外2臺機器新增使用者
[root@slave1 app]# useradd elsearch
[root@slave2 app]# useradd elsearch

#另外2臺機器修改檔案使用者組
[root@slave1 ~]# chown elsearch.elsearch -R /app/elasticsearch/
[root@slave2 ~]# chown elsearch.elsearch -R /app/elasticsearch/

2.3、修改配置檔案

2.3.1、master節點上
# 第一次做叢集的朋友建議一個個改,後面熟悉了直接scp改node.name的名字就完事了
[root@master ~]# su - elsearch
[elsearch@master ~]$ vim /app/elasticsearch/config/elasticsearch.yml
# 以下內容修改為
cluster.name: es-cluster
node.name: node01
node.master: true
node.data: true
network.host: 0.0.0.0
discovery.zen.ping.unicast.hosts: ["192.168.1.111","192.168.1.112","192.168.1.113"]
# 最小節點數
discovery.zen.minimum_master_nodes: 2
# 跨域專用
http.cors.enabled: true
http.cors.allow-origin: "*"
2.3.2、slave1節點上
[root@slave1 ~]# su - elsearch
[elsearch@slave1 ~]$ vim /app/elasticsearch/config/elasticsearch.yml
# 以下內容修改為
cluster.name: es-cluster
node.name: node02
node.master: true
node.data: true
network.host: 0.0.0.0
discovery.zen.ping.unicast.hosts: ["192.168.1.111","192.168.1.112","192.168.1.113"]
discovery.zen.minimum_master_nodes: 2
http.cors.enabled: true
http.cors.allow-origin: "*"
2.3.3、slave2節點上
[root@master ~]# su - elsearch
[elsearch@slave1 ~]$ vim /app/elasticsearch/config/elasticsearch.yml
# 以下內容修改為
cluster.name: es-cluster
node.name: node02
node.master: true
node.data: true
network.host: 0.0.0.0
discovery.zen.ping.unicast.hosts: ["192.168.1.111","192.168.1.112","192.168.1.113"]
discovery.zen.minimum_master_nodes: 2
http.cors.enabled: true
http.cors.allow-origin: "*"

2.4、啟動叢集(三節點操作)

# 前臺執行
/app/elasticsearch/bin/elasticsearch

# 後臺執行
/app/elasticsearch/bin/elasticsearch &

2.5、檢視叢集狀態

三、分片和副本

​ 為了將資料新增到Elasticsearch,我們需要索引(index)——一個儲存關聯資料的地方。實際上,索引只是一個用來指向一個或多個分片(shards)的“邏輯名稱空間(logical namespace)”.

  • 一個分片(shard)是一個最小級別“工作單元(worker unit)”,它只是儲存了索引中所有資料的一部分。
  • 我們需要知道是分片就是一個Lucene例項,並且它本身就是一個完整的搜尋引擎。應用程式不會和它直接通
    信。
  • 分片可以是主分片(primary shard)或者是複製分片(replica shard)。
  • 索引中的每個文件屬於一個單獨的主分片,所以主分片的數量決定了索引最多能儲存多少資料。
  • 複製分片只是主分片的一個副本,它可以防止硬體故障導致的資料丟失,同時可以提供讀請求,比如搜尋或者從別的shard取回文件。
  • 當索引建立完成的時候,主分片的數量就固定了,但是複製分片的數量可以隨時調整。