我正在使用 logstash在从磁盘读取日志文件并放入 ElasticSearch 的模式下。
部署 logstash 以实现高可用性(尤其是故障转移)的最佳方式是什么?我可以接受两个 logstash 实例始终处于事件状态的主动/主动模式,以及一个实例正在工作而另一个实例仅在第一个实例关闭时才会启动的主动/被动模式。
我专门问的是 logstash 而不是 ElasticSearch。
最佳答案
Logstash 似乎没有内置 HA 选项,我们仍然使用 Linux 经典 - 虚拟 IP。我在考虑同一个话题,目前决定尝试以下选项(热/冷版本):
- 使用 Logstash 作为索引器构建 2 个独立的服务器实例
- 想办法同步 Logstash 索引器(rsync、git 等)的 .conf 文件
- 使用虚拟 IP 解决方案和 Linux 心跳,在服务器之间移动事件的虚拟 IP 或使用其他负载平衡解决方案,可以起到这样的作用(例如,pfsense 作为负载平衡器)
- 每个 Logstash 索引器实例都有自己的 REDIS 实例,以保留日志缓冲区,并可能允许在 Logstash 出现问题时从缓冲区中移动日志。
以下是需要解决的问题:
- Redis 无法在 HA active/active 模式下运行,这会在实例切换期间或之后引入日志消息路由和查找问题。
- 与 Active/Passive Logstash 相同,发生切换时 - 如何在此时间范围内获取丢失的日志。
据我所知,Active/Active Logstash 仅在考虑以下选项时可用:
- 日志加倍。如果您将两个索引器节点都放在 Logstash shippers 中进行输出。
- 或者您必须提供逻辑机制来根据 Logstash 索引器配置之外的条件发送日志 - 例如弄清楚,不要将相同的日志消息发送到两个索引器。
关于linux - Logstash高可用部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24535307/