2016-01-30 29 views
1

我的ES集羣有20臺機器用50個節點(ES情況下),我不知道多架應該怎麼設置。兩個機架夠了嗎?或者3或4個機架更好。多少架應該我在ElasticSearch集羣設置

據我知道,如果我在ES配置中設置rack_id,它可以提供以下功能:

1, Select data location or relocation(to make sure replicas in different racks) 
2, Use Rack_id as doc routing 

任何理由,我應該設置更多的機架,但我想即使只是一個機架默認情況下也好啊。如果因爲你用的虛擬機,小型它們共享硬件,如果如果他們共享一個建築,但沒有架子它們共享一個機架上,但不是硬件,並再次小

+0

在同一操作系統上的虛擬機或多個節點? –

+0

每臺物理機都有兩個具有相同操作系統的ES節點。 – Jack

回答

2

兩臺機器停機的機率是最高的。所以使用多個機架是有意義的。

無論你需要超過2個機架取決於你的副本。缺省複製次數爲1.如果您需要更高的值,嚴格來說,如果僅使用2個機架,則會稍微降低羣集的可用性,因爲> = 3設置在機架級別上無效。

+0

謝謝!我可以理解複製號和機架號之間的關係,但我不明白爲什麼機架號會影響羣集的可用性?您能否介紹一下有關可用性的解釋。 – Jack

+0

如果您的應用程序需要非常高的可用性級別,則可以引入一個要求_system應該保持可用,且有2個故障恢復已失效。所以你把'replication'設置爲'2',這意味着存在每個碎片的3個副本(主,複製,複製)。如果你把它擴展到2個機架上,你總會得到'[(P,R),(R)]或者[(P),(R,R)]',ES永遠不會做'[ P,R,R),()]',如果你記下我的符號。 _nodes_滿足您的要求,但是如果兩個_racks_同時失敗,則不會。我也建議看看Andrei的建議。 –

+0

感謝Loek,我向您發送了50個獎金:)請問一個簡單問題,如果我的ES羣集有100臺服務器,通常需要設置多少個重複項?而且,機架號應該總是大於複製號,請吧? – Jack

1

我認爲在你的情況下,它更簡單,更容易剛剛成立cluster.routing.allocation.same_shard.hosttrue。 (請參閱https://www.elastic.co/guide/en/elasticsearch/reference/current/shards-allocation.html)這將防止將同一分片的副本放在同一主機上(主機由地址和主機名標識)。請在使用此方法進行生產之前對其進行測試。

另外,請記住,您需要相應地指定processors設置(http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/modules-threadpool.html#processors)。每個ES節點檢測機器上可用的內核數量(不知道其他節點存在)。在同一臺機器上有多個節點的情況下,每個節點都可以認爲它具有對機器上所有內核的專用訪問權限(這對於默認線程池大小是由此產生的,這可能會產生問題)。因此,您將希望通過processors設置明確指定可用的內核數量,以便最終不會過度分配線程池。

我建議使用專用的主節點,並確保簇的穩定性,每個專用主節點實例應該是它自己的機器上(當然可以是一個小得多的機器,例如4GB的RAM與啓動)。