繁体   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