Архитектура серверов RMQ


#1

Продолжаю делиться тонкостями инфраструктуры серверов RMQ

напомню что в сервер RMQ встроено 3 функциональности

  • кластер (cluster)
  • федерация (federation)
  • выгребатель (shovel)

по серьезному я предпочитаю следующую архитектуру

таким образом - у меня всегда доступен RMQ в компании (в одном датацентре)

А уже настройку соединения между дата центраами делается через плагины федерации и “лопаты-выгребателя”


#2

А где можно найти требования к железу? На сколько я услышал/понял из видео, вполне нормальный вариант, взять выделенный сервер, на нем развернуть 2,3,4(?) виртуалки с RMQ сервером в каждой.
При желании развернуть это счастье в продуктив сразу возникает вопрос, сколько просить у провайдера ресурсов на выделенный сервер и как посчитать их?
С другой стороны, все равно не могу отделаться от мысли, что нужно железо хотябы на 100% зарезервировать…
Какие мысли на этот счет у людей с опытом:)?


#3

еще один симулятор - чуть красивше и возможностью импорта и экспорта

https://jmcle.github.io/rabbitmq-visualizer/

Требования к железу зависят от следующих параметров

  • сколько будет источник событий
  • каков в прицнипе размер среднего события
  • сколько событий генерирует источник

дополнительно

  • сколько должен выдержать времени простоя получателя сервер RMQ в часах

Отсюда начинается расчета - предположим ты все сообщения хранишь в памяти

например 2 источника, по 100 событий в секунду размером 2 kb, и время простоя может быть до 24 часов

тогда у тебя есть 4Mb (100*2*2kb) в секунду умножаем на 24*60*60 - 345 гигабайт чистой RAM на ноду, соответственно умножай на 2 чтобы сделать отказоустойчивость

НО так никто не делает - делаю durable сообщения чтобы складировались во внутренюю базу данных, она жмется с коэфициентом примерно 4-5, для удобства скажем 4

тогда диска 100Gb будет достаточно на такую ноду, а память будет расходоваться только на обработку в секунду - 4Gb как мы помним выше, но так как памяти советуют от 40% до 60% умножим её на 2.

Таким образом для

  • c 2 источников
  • каждый из которых генерирует по 100 событий в секунду
  • при среднем размере сообщений в 2kb
  • в режиме кластера HA

нам понадобится

2 ноды размером - 4 vCPU, 8Gb RAM, 120 GB HDD

ну и воообще-то - обычно идет следующий способ расчета

минимальная нода - 2 vCPU, 4Gb RAM, 40HDD
в дальнейшем ставишь на мониторинг Zabbix 3.0 и докидываешь ресурсов, если есть кластер kubernates - То очень полезным будет auto scalling

https://www.rabbitmq.com/production-checklist.html


#4

Спрошу у коллективного разума - а никто не видел консоли управления серверами RMQ если их скажем 4000 инстансов.


#5

Может в этих ребят что-то есть, у них пиковая нагрузка ~1.000.000 событий в секунду https://new.corezoid.com/


#6

Про 4000 инстансов. Предположу что если нужно именно активно управлять каждым инстансом, то может следует подумать над архитектурой. Получившееся же на проекте арх. решение не предполагает активного управления, но предусматривает автоматизацию настройки: каждый инстанс при поднятии заявляет о себе и начинает слать сообщения с ключами маршрутизации в предопределенный центр, а уже там по ключам разруливаются.