2013-06-20 24 views
8

的仲裁規則按照elasticsearch文檔中,write_consistency級仲裁規則是:Undestanding的write_consistency和Elasticsearch

仲裁(>副本/ 2 + 1)

使用ES 0.19.10,在一個設置16個碎片/ 3個副本我們將獲得 16個主要碎片 48個副本

運行2個節點,我們將有16個(主)+ 16個(副本)= 32個活動碎片。

爲達到法定規則,法定人數> 48/2 + 1 = 25個活動分片。

現在,測試此證明,否則write_consistency級別不符合(寫操作超時),直到我們有3個節點運行。這種有道理的,因爲我們可以得到每2個節點組之間的裂腦在此設置,但我不很明白這個規則應該是怎樣工作的?我在這裏使用了錯誤的號碼嗎?

+0

這感覺就像你寫一致性設置爲所有一個更大的問題。請檢查您的寫有「一致性」:所有 – chaos

+0

^我的意思是每個單獨的指標要求。 – chaos

回答

5

主碎片數量實際上並不重要,所以我打算用N.

來取代它。如果你有N碎片和2個副本的索引,有三個碎片複製小組。這意味着法定人數是兩個:主要加副本之一。您需要兩個活動碎片(通常表示兩個活動機器)滿足寫入一致性參數

具有N個碎片和3個副本的索引在複製組(主+ 3副本)中具有四個碎片,因此法定數爲三。

具有N個碎片和1個副本的索引是一種特殊情況,因爲只有兩個碎片您無法真正擁有仲裁。只有一個副本,Elasticsearch只需要一個單一的活性碎片(例如主),所以quorum設置是相同的one設置此特定佈置。

的幾個注意事項:

  • 0.19是真的老了,你絕對應該,絕對,肯定升級。我甚至無法計算自該版本以來已添加多少bug修復和性能改進:)

  • 寫入一致性僅僅是網關檢查。執行索引請求之前,節點會做秸稈調查,看是否write_consistency得到滿足。如果是,它會嘗試執行索引並推送複製。這並不能保證副本會成功......他們可以很容易失敗,你會看到它的響應。如果不滿足一致性設置,它只是一種停止索引進程的機制。

  • 具有兩個節點的「完全複製」設置是1個主分片+ 1個副本。每個節點都有一組完整的數據。沒有任何理由能有更多的副本,因爲ES拒絕把同一數據的拷貝在同一臺機器上(沒有意義,不利於HA)。由於無法指數只是寫一致性的副作用,但它指出了您的設置:)