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


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

摘要

一個ElasticSearch集群需要多少個節點很難用一種明確的方式回答,但是,我們可以將問題細化成一下幾個,以便幫助我們更好的了解,如何去設計ElasticSearch節點的數目:

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

版本

elasticsearch版本: elasticsearch-2.x

內容

一個集群解決所有問題?

需要回答的問題遠不止以上這些,但是第五個問題往往是容易被我們忽視的,因為單個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的值為集群下所有節點的數目。

犧牲可用性

防止兩個節點集群出現“分腦”情況有一個辦法,就是將其中一個節點 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

結束


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM