我有一个双节点 RabbitMQ 3.6.1 集群(在 AWS 上的 CentOS 6.8 上),似乎每 30 分钟定期重启一次。我刚刚跟踪了/var/log/rabbitmq/rabbit@<hostname>.log
两台机器上的日志(),以了解发生的情况的时间线。我将它们重新排列到此列表中:
- 19:22:10 UTC - 10.101.100.173:
Stopping RabbitMQ
->Stopped RabbitMQ application
- 19:22:10 UTC - 10.101.101.48:
Statistics database started
- 19:22:10 UTC - 10.101.100.173:RabbitMQ 开始重新启动
- 19:22:10 UTC - 10.101.101.48:请注意 10.101.100.173 是向下,然后记录
Keep [email protected] listeners: the node is already back
- 19:22:50 UTC - 10.101.100.173:RabbitMQ 启动完成,记录消息“服务器启动完成,6 个插件已启动。”
- 19:22:50 UTC - 10.101.101.48:请注意 10.101.100.173 是向上
- 19:22:54 UTC - 10.101.101.48:
Stopping RabbitMQ
->Stopped RabbitMQ application
- 19:22:54 UTC - 10.101.100.173:
Statistics database started
- 19:22:54 UTC - 10.101.100.173:请注意 10.101.101.47 是向下,然后记录
Keep [email protected] listeners: the node is already back
- 19:23:06 UTC - 10.101.101.48:RabbitMQ 开始重新启动
- 19:23:24 UTC - 10.101.101.48:RabbitMQ 启动完成,记录消息“服务器启动完成,6 个插件已启动。”
- 19:23:24 UTC - 10.101.100.173:注意到 10.101.101.48 现在是向上
然后,直到 UTC 时间 19:52:11,再没有日志条目,整个过程重复进行。当单个服务器重置时,与该服务器的所有连接都将关闭。
我在两台服务器之间对端口 5672 进行了负载平衡,实际上可以看到它未能通过健康检查,导致两台服务器都退出了负载平衡器池,因此没有客户端可以连接。显然,这会给我带来麻烦。
有谁知道为什么这两个节点会每隔 30 分钟定期重新启动一次?这些都是非常简单的 vanillia RabbitMQ 安装,使用 SaltStack 自动集群以停止应用程序,与其他主机名集群,然后启动应用程序。
答案1
我找到了这个问题的答案。这是由我的 Salt States 配置引起的。当我第一次设置系统时,我按照 RabbitMQ聚类指南完全正确,这样我设置 Salt 状态来停止应用程序,与所有 RabbitMQ 节点进行集群,然后重新启动应用程序。无论是否有新节点进行集群,它都会执行此操作。
事实证明,它正在重新启动,因为我已经设置了我的高级状态时间表每 30 分钟在这些系统上运行一次 highstates。所以这是停止和启动 RabbitMQ 应用程序!我通过测试rabbitmq_cluster.joined
声明它将首先检查集群状态,然后仅当host
需要添加到集群时才停止/加入/启动。
谜团已揭开!