Всем привет! У нас кластер RMQ из 3-х нод в кубернетес,

4000 quorum single-active-user очередей, у 3000 expire по 60 сек. и после они пересоздаются, клиентами являются Node.js приложения с библиотекой amqplib

Когда перевалили за 2500 очередей при любой проблеме кластера (отвалилась на пару минут сеть, проблемы репликации, проблемы смены лидера, etc.) RMQ просто рассыпается:

– Очереди и кастомные exchange продолжают жить, в них можно писать, можно читать, но при этом фактически ничего не записывается и не читается
– Рандомно начинает закрывать коннекты (541 ошибка, вроде)
– Акаем сообщение, но он этого не видит и пересылает сообщение заново
– Может прийти ECONRESET при этом соединение не закрывается, но библиотека продолжает пытаться отправить heartbeat в мертвый сокет (но тут, конечно, больше проблемы самой либы и это более менее попровили)

Ресурсов точно хватает

Единственные способы лечения: удалять очередь / exchange, перезагружать ноды, а иногда просто приходилось открывать новый кластер и перепрыгивать на него

Мы никак не можем понять в чем проблема, есть ли здесь кто-то, кто может помочь / сделать платную аналитику и консультацию?

6 ответов

42 просмотра

Честно говоря не припоминаю на слуху подобные кейсы использования реббита. Не хватает для понимания следующих вопросов - пробовали ли некворумные, классические очереди? - сколько unacked, ready сообщений висит в кластере? - какой мпс в чнн? - версия реббита Раз ваши проблемы решаются удалением очередей - а вам вообще нужен кластер/кворум?

Давид-Шекунц Автор вопроса
Aleksey Barabanov
Честно говоря не припоминаю на слуху подобные кейс...

1. С классическими очередями все ещё хуже, потому что в случае отвала сети внутри кластера он потом не может собрать что к чему 2. Пару сотен 3. 3-4 сообщений в минуту на большинство очередей 4. v3.10.7 Ещё уточню: single active consumer, все-таки только на тех 3000 очередях, а не на всех Я правильно понимаю, что наибольшее число вопросов возникает к факту удаления очередей?

Какие настройки репликации были у классических очередей? Вопросы скорее - зачем вам кворум/кластер если вы всё смело удаляете? Вообще надо смотреть логи. Также хотелось бы понять как вы подняли реббит-кластер - сами или поганым битнамишным оператором?

Давид-Шекунц Автор вопроса
Aleksey Barabanov
Какие настройки репликации были у классических оче...

. "Настройки репликации"? Имете ввиду настройки персистенции? Если так, то пробовали как auto-delete (кластер в момент рассыпается), none (более менее, но при перезагрузке ноды тоже может рассыпаться) и durable (самый удобный вариант, но при проблемах в кластере работа с этими очередями просто останавливается) . кворум/кластер – нужно чтобы не важно есть или нет проблемы в моменте времени все сообщения обязательно дошли и дошли в правильной последовательности (а удаляем мы в случае, когда происходит условно "ребалансировка" очередей к приложениям) . Про операторы уточню у DevOps, а просто битмашиные операторы – а можно где-то почитать что с ними не так? Просто даже если не RMQ, то что-то на битнами операторах может быть у нас поднято

Давид Шекунц
. "Настройки репликации"? Имете ввиду настройки пе...

нет, именно настройки сборки после краха - попробовать автомат, меньше гарантий но и меньше гемора после развалов. я бы попробовал для начала собрать реббит кластер без битнами оператора, ручками и сравнить результат

Похожие вопросы

Обсуждают сегодня

Всем привет. Понимаю, что, наверное, сто раз поднимали эту тему, но по ключевым словам не смог найти. Как передать в values.yaml зависимого хелм-чарта теги образов, собираемых...
Vitalik Petrov
4
@aigrychev, @ilya_lesikov добрый день! а поддерживает ли werf helm xxxx или werf bundle xxxx работу с сабчартами через http-прокси? (сработает ли использование HTTP_PROXY/HTTP...
Сергей Голод
4
Всем привет. Werf v2.10.5 При удалении релиза вместе с неймспейсом (werf dismiss --namespace namespace_name) Сыпятся ошибки ┌ Waiting for resources elimination: namespaces/rel...
Vitalik Petrov
1
Добрый день! Удалил все файлы с переменными из проекта, получил Error: release deploy: process resources: error validating adoptable resources: adoption validation failed: re...
Evgheni Mad
2
Привет! Вопрос про werf helm Приложение деплоится через werf helm upgrade --atomic Иногда(все условия для воспроизведения до конца непонятны, но есть версия, что это происходи...
𝓐𝓵͢͢͢𝓮𝔁 C
2
Всем привет. Сегодня добавили в приложение дополнительный образ nginx, в который докидывается системная статика прям в образ. При деплое бандлами деплоилось 200+ джоб(клиентов...
Владимир Муковоз
6
Добрый день, после перехода с версии 1.2 на 2.10 werf cleanup начал удалять использующиеся теги, и до и после обновления использовались дефолтные политики keepPolicies Подскаж...
Дмитрий
29
Блин а мне как поумнеть ?
Toxin
191
Друзья, добрый день. Прошу подсказать с базовым вопросом по использованию CI переменных gitlab в werf.yaml. Хочу в beforeInstall использовать env переменную с токеном. Мне нуж...
Anton Zol
10
Вопросик не совсем werf. Но вдруг мы подскажите воркэраунд или ещё что-нибудь. Могу ли я как-нибудь в моменте деплоя внутри heml рендера получить хэшсумму файла шаблона (./tem...
Alex Подрябинкин
11
Карта сайта