ElasticSearch 2 (11) - 節點調優(ElasticSearch性能)

ElasticSearch 2 (11) - 節點調優(ElasticSearch性能)

摘要

一個ElasticSearch集羣須要多少個節點很難用一種明確的方式回答,可是,咱們能夠將問題細化成一下幾個,以便幫助咱們更好的瞭解,如何去設計ElasticSearch節點的數目:node

  1. 打算處理多少數據?
  2. 打算處理多少搜索請求?
  3. 請求的複雜度是怎樣?
  4. 每一個節點有多少資源數?
  5. 打算創建多少索引,支持多少應用?

版本

elasticsearch版本: elasticsearch-2.x服務器

內容

一個集羣解決全部問題?

須要回答的問題遠不止以上這些,可是第五個問題每每是容易被咱們忽視的,由於單個ElasticSearch集羣有能力支持多索引,也就能支持多個不一樣應用的使用。咱們能夠將公司裏全部的日誌都放在一個ElasticSearch集羣下處理,不管是網站上的一個簡單查詢,仍是一個很是複雜的分析。瞭解一個集羣能支持多少個應用程序的日誌需求,能幫助咱們分析出合適的節點數目elasticsearch

節點數與內存相關

ElasticSearch 的節點數受RAM的限制,對於某個服務器或虛擬機,咱們分配的物理或虛擬內存是有限的,這樣天然限制了咱們分配節點的數量。分佈式

萬能節點數——3

若是咱們要創建一個ElasticSearch集羣,一個比較合適的數字是3。爲何3?很大程度上一個集羣3個節點能夠防止「split-brain」出現,儘管,對於一個分佈式的集羣,每一個節點都是對等的,可是咱們仍然須要一個主節點master。這個節點承擔協調本身以及其餘全部節點間的通訊任務。在ES中,主節點除了負責以上工做,它還會對分片與副本的存儲進行優化,同時還要處理索引、寫入數據和路由索引優化等問題。性能

三個和尚投票

當主節點master出現問題,從節點slave不能與主節點通訊時,從節點會發起選舉任命新的主節點,同時新的master會接管舊master的全部工做,若是舊master從新恢復並加入到集羣中,新master會將原來舊的master降級爲slave,這樣就不會有衝突發生。全部這個過程都由ElasticSearch本身處理,使用者無需任何參與。優化

兩個和尚投票

可是,當只有兩個節點的時候,一主(master)一從(slave),若是主從直接的通訊出現問題時,從節點slave會自我提高爲master,可是當恢復通訊時,咱們就會同時有兩個master。由於此時,對於原來的主節點(master)角度考慮,它認爲是原來的從節點(slave)出現問題,如今仍然須要做爲slave從新加入。這樣,兩個節點的時候,咱們就出現了集羣不知道將哪一個節點選舉爲主節點的狀況,也就是咱們一般說的「分腦」。網站

爲了防止這種狀況的發生,第三個節點的出現會打破平衡,解決衝突問題。設計

三個和尚仍然存在問題

分腦的問題一樣會出如今具備三或三個以上節點的集羣中,爲了下降發生的機率,ElasticSearch提供了一個配置 discovery.zen.minimum_master_nodes 它規定了在選舉新的master時,一個集羣下最少須要的節點數。例如,一個3節點集羣,這個數字爲2,2個節點能夠防止單個節點在脫離集羣時,將其本身選舉成master,相反,它會等待直到從新加入到集羣中。這個數值能夠經過一個公式肯定:日誌

N/2 + 1

N的值爲集羣下全部節點的數目。code

犧牲可用性

防止兩個節點集羣出現「分腦」狀況有一個辦法,就是將其中一個節點 node.data 的配置設置爲 false,這樣,這個節點就永遠不會成爲master,固然,這也會下降集羣的可用性

小結

對於ElasticSearch集羣的節點數沒有定論,ElasticSearch的工程師在Quora上也給出了他的類似意見,可供參考

參考

參考來源:

How many nodes should an Elasticsearch cluster have?

What's the maximum number of nodes Elasticsearch can have? How many, max, have you used in practice?

Elasticsearch Internals: Networking Introduction

結束

相關文章
相關標籤/搜索