天天看點

Elasticsearch子產品功能之-自動發現(Discovery)

自動發現(Disovery)

該子產品主要負責叢集中節點的自動發現和Master節點的選舉。節點之間使用p2p的方式進行直接通信,不存在單點故障的問題。Elasticsearch中,Master節點維護叢集的全局狀态,比如節點加入和離開時進行shard的重新配置設定。

 自動發現機制在目前版本(1.3.1)提供了四種選擇,一種是預設實作,其他都是通過插件實作。

1.      Azure discovery 插件方式,多點傳播

2.      EC2 discovery 插件方式,多點傳播

3.      Google Compute Engine (GCE)discovery 插件方式多點傳播

4.      zen discovery預設實作 多點傳播/單點傳播

多點傳播配置下,節點向叢集發送多點傳播請求,其他節點收到請求後會做出響應。配置參數如下:

discovery.zen.ping.multicast.group:224.2.2.4  組位址
discovery.zen.ping.multicast.port:54328  端口
discovery.zen.ping.multicast.ttl:3 廣播消息ttl
discovery.zen.ping.multicast.address:null綁定的位址,null表示綁定所有可用的網絡接口
discovery.zen.ping.multicast.enabled:true 多點傳播自動發現禁用開關
           

單點傳播配置下,節點向指定的主機發送單點傳播請求,配置如下:

discovery.zen.ping.unicast.hosts:host1:port1,host2,:port2 
           

選舉Master節點:

         在ping主節點過程中,節點會加入到叢集中或者會被選舉為主節點,發送主節點的逾時時間有餐宿discovery.zen.join_timeout來控制,預設為3s,對于配置node.master為false的節點啟動後不會作為主節點的候選。discovery.zen.minimum_master_nodes配置目前叢集中最少的主節點數,對于多于兩個節點的叢集環境,建議配置大于1。

故障檢測:

    一般存在兩個故障檢測過程。第一個是主節點周期性的ping其他節點。第二就是其他節點周期的ping主節點。相關參數:

ping_interval:1s節點被ping的頻率
ping_timeout:30s等待ping傳回的時間
ping_timeout:3重試次數,超過該次,就認為該節點不可用
           

【參考:】http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/index.html

繼續閱讀