1. 程式人生 > >elasticsearch 分布式集群搭建

elasticsearch 分布式集群搭建

span spa time 分布式部署 修改配置文件 disco 情況 環境 ESS

elasticsearch環境搭建及單節點搭建可參考我的上一篇:http://www.cnblogs.com/xuwenjin/p/8745624.html

本文以Elaticsearch 6.2.2 版本為基礎,講解Elasticsearch三個節點的分布式部署、核心配置的含義以及分布式部署遇到的坑

樓主是在一臺機器上配置的,所有下面的network.host全部配置同一IP

1、配置節點

1.1配置主節點:

#集群名稱
cluster.name: xwj

#節點名稱
node.name: master

#是否參與master選舉 node.master:
true #綁定的ip network.host:
127.0.0.1 #默認端口 http.port: 9200 #解決跨域-這樣head插件就可以訪問 http.cors.enabled: true http.cors.allow-origin: "*"

1.2 將elasticsearch的壓縮包解壓兩次,分別解壓到兩個文件夾中。然後分別修改配置文件

隨從節點slave1的配置:

#集群名稱
cluster.name: xwj

#節點名稱
node.name: slave1

#綁定的ip
network.host: 127.0.0.1

#默認端口已使用,這裏用新的端口
http.port: 9201

#發現主節點(通過主節點的ip)
discovery.zen.ping.unicast.hosts: [
"127.0.0.1"]

隨從節點slave2跟節點slave1配置很像,就端口號和節點名稱不一樣。如下圖:

#集群名稱
cluster.name: xwj

#節點名稱
node.name: slave2

#綁定的ip
network.host: 127.0.0.1

#默認端口已使用,這裏用新的端口
http.port: 9202

#發現主節點(通過主節點的ip)
discovery.zen.ping.unicast.hosts: ["127.0.0.1"]

2、啟動服務

2.1 啟動主節點,會發現節點名稱為master為主節點

技術分享圖片

2.2 分別啟動slave1和slave2

技術分享圖片

在slave啟動的過程中,通過上面打印信息,可以看到slave1發現了主節點master及另一個隨從節點slave2(先啟動)。此時主節點也會發現另兩個節點加入進來

2.3 部署成功示例:

技術分享圖片

五角星的為主節點,圓點的為隨從節點。

默認5個分片,一個備份(粗線框框為分片,細線的為備份分片)。可以看到,三個節點平均分配所有分片及備份

3、部署節點原理

多機集群中的節點可以分為master nodes和data nodes,在配置文件中使用Zen發現(Zen discovery)機制來管理不同節點。Zen發現是ES自帶的默認發現機制,使用

多播發現其它節點。只要啟動一個新的ES節點並設置和集群相同的名稱這個節點就會被加入到集群中。(所以,同集群的集群名稱一致,才能便於自動發現)

Elasticsearch集群中有的節點一般有三種角色:master node、data node和client node。

1)master node——master節點點主要用於元數據(metadata)的處理,比如索引的新增、刪除、分片分配等。

2)data node——data 節點上保存了數據分片。它負責數據相關操作,比如分片的 CRUD,以及搜索和整合操作。這些操作都比較消耗 CPU、內存和 I/O 資源;

2)client node——client 節點起到路由請求的作用,實際上可以看做負載均衡器。

4、其它參數含義


#分片數和副本數
index.number_of_shards: 5 index.number_of_replicas: 1


#master選舉最少的節點數,這個一定要設置為N/2+1,其中N是:具有master資格的節點的數量,而不是整個集群節點個數
discovery.zen.mininum_master_nodes: 2

#discovery ping的超時時間,擁塞網絡,網絡狀態不佳的情況下設置高一點 discovery.zen.ping.timeout: 3s #關閉自動發現節點 discovery.zen.ping.multicast.enabled: false #定義發現的節點 discovery.zen.ping.unicast.hosts: ["192.168.1.1:9201", "192.168.1.1:9202"]

註意:分布式系統整個集群節點個數N要為奇數個!!

5、踩過的坑:

1、增加節點時,直接將啟動成功的elasticsearch文件夾拷貝,然後修改配置文件。這樣在啟動的時候,會報已有一個相同節點id卻不同實例,導致無法進入到集

  群中

原因:成功啟動後,會在data文件目錄下,生成該節點的信息

  正確做法:解壓elasticsearch的壓縮包,然後再改配置文件。或者復制後,刪除data文件目錄下的數據

elasticsearch 分布式集群搭建