簡體   English   中英

Logstash高可用性部署

[英]Logstash high availability deployment

我使用logstash在其從磁盤中讀取日志文件,並在ElasticSearch提出的模式。

部署logstash以獲得高可用性(尤其是故障轉移)的最佳方法是什么? 對於兩個logstash實例始終處於活動狀態的主動/主動模式,以及一個實例正在工作而另一個實例僅在第一個實例關閉時才能啟動的主動/被動模式,我都可以。

我專門問的是logstash,而不是ElasticSearch。

Logstash似乎沒有內置的HA選項,而我們仍然使用Linux經典版本-虛擬IP。 我在考慮相同的主題,因此決定嘗試以下選項(熱/冷版本):

  • 使用Logstash作為索引器構建2個單獨的服務器實例
  • 找到一種方法來同步Logstash索引器的.conf文件(rsync,git等)
  • 使用虛擬IP解決方案和Linux心跳,在服務器之間移動活動的虛擬IP或使用其他可以起到這種作用的負載平衡解決方案(例如pfsense作為負載平衡器)
  • 每個Logstash索引器實例都有其自己的REDIS實例,以保留日志緩沖區,並且如果Logstash出現問題,則有可能允許將日志從緩沖區中移出。

這里是需要解決的問題:

  • Redis無法在HA活動/活動中的HA中運行,這會在實例切換期間或之后引入日志消息路由和查找問題。
  • 切換時,主動/被動Logstash相同-如何在此時間范圍內獲取丟失的日志。

據我所知,Active / Active Logstash僅在考慮以下選項的情況下可用:

  • 日志加倍。 如果將兩個索引器節點都輸出到Logstash運貨商中。
  • 否則,您必須提供邏輯機制以在Logstash索引器配置之外的條件下傳送日志-例如,找出原因,而不是將相同的日志消息傳送到兩個索引器。

您可以使用一個隊列,該隊列將充當輸入和索引過程之間的緩沖區。

用隊列分隔層始終是一件好事,因此,如果Elasticsearch崩潰,您的應用程序將不會受到影響。

在這種情況下,最好的方法是使用某種硬件平衡器,例如F5(如果有的話)池,因此您要定義具有相應端口的VIP,然后將該VIP與主機的N個IP地址相關聯。 N個logstash主機,因此您可以從logstash中獲得任意數量的節點或需要運行的任何服務,然后應用循環算法並平衡連接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM