【问题标题】:Logstash with rabbitmq cluster带有rabbitmq集群的Logstash
【发布时间】:2016-04-06 21:35:22
【问题描述】:

我在 HAproxy 负载均衡器后面有一个 3 节点的 Rabbitmq 集群。当我关闭一个节点时,Rabbitmq 成功地将队列切换到其他节点。但是,我注意到 Logstash 停止从队列中提取消息,除非我重新启动它。这是rabbitmq运行方式的问题吗?即它会停用所有活跃的消费者。我不确定 log stash 是否有任何重试功能。有人遇到这个问题吗?

【问题讨论】:

  • 我也遇到了同样的问题,你找到解决办法了吗?

标签: rabbitmq cluster-computing logstash


【解决方案1】:

引用 rabbit mq 文档,clustering 第一页

什么是复制?操作所需的所有数据/状态 RabbitMQ 代理跨所有节点复制。一个例外 是消息队列,默认情况下驻留在一个节点上,尽管它们 从所有节点可见且可访问。

high availability

从镜像队列中消费的客户端可能希望知道 他们一直在消费的队列已经故障转移。当一个 镜像队列故障转移,知道哪些消息已发送 哪个消费者丢失了,因此所有未确认的消息 重新交付并设置了重新交付的标志。消费者不妨 知道这会发生。

如果是这样,他们可以使用参数 x-cancel-on-ha-failover set 为真。他们的消费将在故障转移时被取消,并且 已发送消费者取消通知。然后是消费者的 重新发布 basic.consume 以重新开始消费的责任。

那么,这一切意味着什么:

  • 您必须镜像队列
  • 消费者应使用手动 ACK
  • 消费者应自行重新连接

所以你的问题的答案是否定的,这不是 rabbitmq 的问题,这就是它的工作原理。由客户重新连接。

【讨论】:

  • 一个很好的答案。谢谢。
  • 不客气。它对您有帮助还是解决了您的问题?如果你也不能说缺少什么,或者不清楚?
  • 您的回答解释了兔子的工作原理。但是,日志存储问题仍然存在。
  • 那么logstash 是否连接到负载均衡器IP?队列是否镜像?
  • 是的。队列是 HA 复制的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多