elasticsearch 分布式集群搭建
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 分布式集群搭建