2015-11-12 37 views
2

我期待設置一個ELK堆棧,並有三臺服務器可以這樣做。儘管我已經找到大量有關如何實際安裝以及配置elasticsearch,logstash和kibana的文檔和教程,但我發現關於如何在我的服務器上設置軟件以最大限度地提高性能的信息較少。例如,在所有三個實例上設置elasticsearch,logstash和kibana,或者在兩個實例上安裝elasticsearch,在第三個上安裝logstash和kibana,會更好嗎?在三臺服務器上設置ELK堆棧的最佳方式

與該問題相關,如果我的集羣中有多個elasticsearch服務器,我需要一個負載平衡器來向它們傳播請求,還是可以將數據發送到一臺服務器,並且它會相應地分發它?

回答

6

您的機器的大小也很重要。 8GB內存的三臺機器與64GB或更多的三臺機器差別很大...

Kibana佔用非常少的資源。 Logstash更重CPU。 Elasticsearch的內存更大。

對於elasticsearch集羣,通常需要每個分片的副本用於冗餘。通常通過兩臺服務器完成。如果你有第三個彈性搜索服務器,那麼你會得到一個IO提升(寫兩個數據副本到三個服務器降低負載)。另外,偶數的服務器可能會對主服務器感到困惑,所以三臺服務器將有助於防止「裂腦」問題。

這兩個或三個節點將是「數據」節點,因此如果您向它們發出查詢或索引請求,它們可能需要將請求移至其他服務器(具有數據的服務器等)。請求還有一個「減少」階段,其中來自每個節點的數據在返回之前進行組合。擁有一個較小的「客戶」節點(查詢和索引請求去的地方)可以幫助解決這個問題。當然,你會想要兩個,讓他們成爲多餘的。

Logstash最好運行多線程,所以有多個cpus,你可以奉獻給你。擁有冗餘/負載均衡的logstash機器也很好。 Kibana也可以在這些機器上運行。

所以,我們很快就達到了7臺機器。不是你想聽到的,對嗎?

如果您只限於3臺機器,那麼您需要對上述所有三臺機器運行elasticsearch。你需要休息一下。

Logstash on two,kibana on one?那麼你對kibana有一個單一的失敗點。

如何在所有三個上的所有三個和kibana logstash?負載將分佈在周圍,所以希望對每個服務器來說都是一個小增量。而且,如果機器夠健壯,應該沒問題。

我在運行logstash一個簇,

機一般建議分配1/2的系統RAM(最多〜31GB)至elasticsearch,留下其餘的操作系統。如果你打算在同一臺機器上運行logstash和kibana,你會想要降低它(大概是40%?),給logstash一些(15%?),剩下的則留給操作系統。

顯然,您的機器的大小在這裏很重要。

+0

謝謝,阿蘭!這正是我期待的反饋!我僅限於三臺機器(每臺16 GB RAM)啓動,但幸運的是,每天索引的數據量在開始時不應該太大。似乎在所有三種方式上安裝elasticsearch,logstash和kibana都是要走的路,所以在設置三臺機器之後,我需要添加一個負載均衡器來分發請求?另外,logstash實例是否獨立,每個實例都運行自己的管道,還是它們進行通信以分配任務以防一個實例失敗? – jeromefroe

+0

是的,您希望負載均衡器分配負載並處理故障。 logstash管道是截然不同的(所以要小心過濾器,如指標{}或已過期{})。 –

+0

由於logstash實例是獨立的,如果我們定期運行操作來檢索和索引數據,那麼這不會成爲問題嗎?例如,如果我們想要使用jdbc輸入插件定期查詢數據庫中的數據並將其索引到elasticsearch中,我們不希望在所有實例上運行該數據,因爲我們會多次對相同的數據建立索引。另一方面,如果我們只對一個實例運行該操作,如果該實例失敗,則另一個實例無法執行該任務。 – jeromefroe

相關問題