RabbitMQ Shovel 卡在 'Terminated' 状态
RabbitMQ Shovel Stuck in 'Terminated' Status
我们有一个问题,有时 src-delete-after
设置为 queue-length
的动态铲(通过 HTTP API 创建:/api/parameters/shovel/
)完成并然后没有被删除,而是陷入了 terminated 状态。
随后尝试通过以下任何方法删除铲子均未成功:
- 发布
DELETE
到 /api/parameters/shovel/
rabbitmqctl delete_shovel
rabbitmqctl clear_parameter -p <vhost> shovel <shovel_name>
铲子甚至没有出现在 RabbitMQ 管理的 'Shovel Management' 部分 UI。
我们摆脱卡住的铲子的唯一方法是重新启动 RabbitMQ。
还有其他人遇到这个问题吗?如果是这样,我们如何在不重启集群的情况下清除铲子?另外,是否可以通过配置来防止这种情况发生?
谢谢!
PS:
- RabbitMQ 版本:3.4.4
- 运行 一个 2 节点集群(由于我们在网络分区的情况下可能面临的明显问题,很快就会将其变成 3 节点集群)。
您使用的是非常非常旧的 RabbitMQ 版本。请升级到最新版本(3.7.6
)并确保使用 Erlang 20.3.X
(而不是 21
)。如果您仍然可以重现此问题,请在 rabbitmq-users
邮件列表中报告。
我们正在使用 RMQ 3.7.13,Erlang 21.3.1。
一种 问题发生的可能方式:
- 3 节点 HA 集群
- 重启其中一个节点(/etc/init.d/rabbitmq-server重启)
- 旧铲子和旧队列以某种方式复活
使用问题中提到的任何方法都无法删除铲子。
我能够移除铲子的唯一方法是禁用集群中所有 3 个节点上的铲子插件,然后像这样在每个节点上重新启用每个插件:
rabbitmq-plugins disable rabbit_shovel
rabbitmq-plugins enable rabbit_shovel
rabbitmq-plugins enable rabbit_shovel_management
至于旧队列复活(随机发生,没有触及任何东西......我称它们为“僵尸”队列),这个问题大约每月发生一次,所以我创建了 PostMan 脚本来删除复活的队列。多年来,这一直是个问题。我们升级了 RMQ,希望能解决问题……但事实并非如此。也许 Quorum 队列是一个更强大的解决方案?如果我有更多时间investigate/experiment,我会的,但我被更高优先级的眼球埋没了。
我们有一个问题,有时 src-delete-after
设置为 queue-length
的动态铲(通过 HTTP API 创建:/api/parameters/shovel/
)完成并然后没有被删除,而是陷入了 terminated 状态。
随后尝试通过以下任何方法删除铲子均未成功:
- 发布
DELETE
到/api/parameters/shovel/
rabbitmqctl delete_shovel
rabbitmqctl clear_parameter -p <vhost> shovel <shovel_name>
铲子甚至没有出现在 RabbitMQ 管理的 'Shovel Management' 部分 UI。
我们摆脱卡住的铲子的唯一方法是重新启动 RabbitMQ。
还有其他人遇到这个问题吗?如果是这样,我们如何在不重启集群的情况下清除铲子?另外,是否可以通过配置来防止这种情况发生?
谢谢!
PS:
- RabbitMQ 版本:3.4.4
- 运行 一个 2 节点集群(由于我们在网络分区的情况下可能面临的明显问题,很快就会将其变成 3 节点集群)。
您使用的是非常非常旧的 RabbitMQ 版本。请升级到最新版本(3.7.6
)并确保使用 Erlang 20.3.X
(而不是 21
)。如果您仍然可以重现此问题,请在 rabbitmq-users
邮件列表中报告。
我们正在使用 RMQ 3.7.13,Erlang 21.3.1。
一种 问题发生的可能方式:
- 3 节点 HA 集群
- 重启其中一个节点(/etc/init.d/rabbitmq-server重启)
- 旧铲子和旧队列以某种方式复活
使用问题中提到的任何方法都无法删除铲子。 我能够移除铲子的唯一方法是禁用集群中所有 3 个节点上的铲子插件,然后像这样在每个节点上重新启用每个插件:
rabbitmq-plugins disable rabbit_shovel
rabbitmq-plugins enable rabbit_shovel
rabbitmq-plugins enable rabbit_shovel_management
至于旧队列复活(随机发生,没有触及任何东西......我称它们为“僵尸”队列),这个问题大约每月发生一次,所以我创建了 PostMan 脚本来删除复活的队列。多年来,这一直是个问题。我们升级了 RMQ,希望能解决问题……但事实并非如此。也许 Quorum 队列是一个更强大的解决方案?如果我有更多时间investigate/experiment,我会的,但我被更高优先级的眼球埋没了。