2015-11-18 169 views
7

我有幾個關於客戶端節點Elasticsearch問題:如何設置Elasticsearch客戶端節點?

  1. 我可以說:只要任何節點,因爲它們打開HTTP端口,我可以把他們作爲「客戶端」節點,因爲我們可以做搜索/索引通過這個節點。在我的代碼9200:

  2. 其實我們對待節點時cluster=falsedata=false,如果我設立了10個客戶節點,我需要在我的客戶端將客戶端節點,我的意思是如果我指定clientOne作爲ES門戶,則clientOne將其他HTTP請求轉發給其他客戶端節點,否則,clientOne將承受非常高的壓力。即它們是否在客戶端節點之間相互通信?

  3. 當我在ES集羣中指定客戶端節點時,我應該關閉其他節點的HTTP端口嗎?因爲我們只能查詢客戶端節點。

  4. 您是否認爲有必要在同一臺機器上設置數據節點和客戶機節點,或者只是將設置數據節點設置爲客戶機節點,反正它在同一臺機器上?

  5. 如果ES羣集頻繁索引而搜索次數較少,那麼我不必設置客戶端節點,因爲客戶端節點很適合收集數據,對嗎?

  6. 對於一般的搜索/索引目的,我應該使用http端口還是tcp端口,請問客戶端有什麼不同?

+3

這不是太困難,只有太多問題擠在一個問題上,降低了整體質量,因爲這會讓尋找特定主題的人難以找到正確答案來解決問題。一個問題應該是一個問題,六個問題,應該是六個不同的問題。 – Val

+1

打破這意味着如果有人知道答案,他們會發布。就目前而言,人們可能知道一個或兩個問題的答案,但不是其他答案,所以他們會跳過它。此外,你的措辭有點難以解析,而多描述背景可能會有所幫助。 – fabianvf

回答

18
  1. 是的,你可以發送通過HTTP查詢到有端口9200打開的任何節點。

  2. 使用node.data:false和node.master:false,會得到一個「client node」。這些對於卸載數據節點中的索引和搜索流量非常有用。如果你有10個,你會想在它們前面放一個負載均衡器。

  3. 關閉數據節點的HTTP端口(http.enabled:假)將防止他們服務的客戶端請求(也許是好事),但它也將阻止你直接curl'ing他們統計等

  4. 客戶端節點很有用(請參閱#2),所以我不會將流量直接路由到您的數據節點。無論是在同一塊硬件上同時運行客戶端和數據節點,都取決於該機器的配置(是否有足夠的RAM等)。

  5. 客戶端節點對索引也很有用,因爲他們知道哪個數據節點應該接收數據進行存儲。如果您將索引請求發送到隨機數據節點,則可能會很高,因此必須將該請求重定向到另一個節點。如果您可以創建客戶端節點,那就浪費時間和資源。

  6. 讓您的客戶端加入羣集可能會讓他們訪問有關羣集的更多信息,但使用http爲他們提供了更通用的「黑匣子」界面。使用http,您也不必將您的客戶保持在與ES節點相同的版本中。

希望有所幫助。

+0

偉大的答案!我還有兩個問題: 對於答案(2):客戶端節點不會互相轉發請求以實現負載平衡,因此我必須將負載平衡器放在它們前面,請嗎? 對於答案(5):如果我們只是默認master = true和data = true,那麼在集羣中沒有任何客戶端節點,因此,正如你所說的那樣,賠率會很高,請吧?非常感謝! – Jack

+0

答案2已經說過,「你會想把一個負載均衡器放在他們面前」。對於答案5,如果您有5個數據節點並隨機將數據直接發送給它們,則80%的時間會碰到錯誤的服務器(並且會產生移動數據的開銷)。使用客戶端節點會阻止這一點。 –

+0

非常感謝!對於答案5,我的意思是默認ES簇將每個節點設置爲master = true和data = true,因此默認情況下沒有客戶端節點。所以默認情況下,羣集沒有優化,我們必須指定客戶端節點以獲得更好的轉發,對吧? – Jack