Лопата RabbitMQ застряла в состоянии "прекращено"
У нас есть проблема, когда время от времени создается динамическая лопата (создается через HTTP API: /api/parameters/shovel/
) с src-delete-after
установлен в queue-length
заканчивается и затем вместо удаления застревает в завершенном состоянии.
Последующие попытки удалить лопату любым из следующих способов не увенчались успехом:
- Отправка
DELETE
в/api/parameters/shovel/
rabbitmqctl delete_shovel
rabbitmqctl clear_parameter -p <vhost> shovel <shovel_name>
Лопата даже не отображается в разделе "Управление лопатками" пользовательского интерфейса администратора RabbitMQ.
Единственный способ избавиться от этой застрявшей лопаты - перезапустить RabbitMQ.
Кто-нибудь еще имеет эту проблему? Если так, как мы можем очистить лопату без перезагрузки кластера? Кроме того, возможно ли предотвратить это через конфигурацию?
Спасибо!
PS:
- Версия RabbitMQ: 3.4.4
- Запуск кластера из 2 узлов (в ближайшее время он станет кластером из 3 узлов из-за очевидной проблемы, с которой мы можем столкнуться в случае сетевого раздела).
1 ответ
Вы используете очень, очень старую версию RabbitMQ. Пожалуйста, обновитесь до последней версии (3.7.6
) и обязательно используйте Erlang 20.3.X
(не 21
). Если вы все еще можете воспроизвести эту проблему, сообщите об этом на rabbitmq-users
список рассылки.
Мы используем RMQ 3.7.13, Erlang 21.3.1.
Один из возможных способов возникновения проблемы:
- 3-узловой кластер высокой доступности
- перезапустите один из узлов (/etc/init.d/rabbitmq-server restart)
- старые лопаты и старые очереди как-то воскреснут
Лопаты нельзя удалить ни одним из способов, упомянутых в вопросе. Единственный способ удалить лопаты - это отключить плагин лопаты на всех 3 узлах кластера, а затем снова включить каждый плагин на каждом узле следующим образом:
rabbitmq-plugins disable rabbit_shovel
rabbitmq-plugins enable rabbit_shovel
rabbitmq-plugins enable rabbit_shovel_management
Что касается воскрешения старых очередей (происходит случайным образом, ничего не касаясь... Я называю их очередями "зомби"), эта проблема возникает примерно раз в месяц, поэтому я создал сценарии PostMan для удаления воскресших очередей. Это было проблемой в течение многих лет. Мы обновили RMQ в надежде, что это решит проблему... но это не так. Возможно, очереди кворума - более надежное решение? Если бы у меня было больше времени на исследования / эксперименты, я бы сделал это, но я по уши занят более высокими приоритетами.