ElasticSearch叢集部署
阿新 • • 發佈:2020-12-05
一、叢集節點介紹
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取回文件。
- 當索引建立完成的時候,主分片的數量就固定了,但是複製分片的數量可以隨時調整。