Установка брокера RabbitMQ
Будет добавлена возможность применения Kafka вместо RabbitMQ в качестве внутренней очереди событий
Полезные ссылки
| Тема | Ссылки |
|---|---|
| Установка | Полная информация о возможностях установки - <https://www.rabbitmq.com/download.html>Установка через Docker-образ - <https://registry.hub.docker.com/_/rabbitmq/>Вот пример установки на сервер (Debian/Ubuntu) - <https://www.rabbitmq.com/install-debian.html> |
| Конфигурирование | <https://www.rabbitmq.com/configure.html>Разные вспомогательные CLI инструменты, некоторые доступны внутри контейнера.<https://www.rabbitmq.com/cli.html> |
| Настройка доступа | <https://www.rabbitmq.com/access-control.html> |
| Мониторинг | <https://www.rabbitmq.com/monitoring.html> |
| Troubleshooting | <https://www.rabbitmq.com/troubleshooting.html> |
| Бэкапы и восстановление | <https://www.rabbitmq.com/backup.html> |
Установка
Брокер RabbitMQ поставляется вместе с системой в качестве контейнера. Данная установка не требуется, если у вас есть свой экземпляр RabbitMQ.
Если вы не используете предоставленный контейнер с брокером, то в вашем экземпляре необходимо активировать плагин hash exchange командой.
rabbitmq-plugins enable rabbitmq_consistent_hash_exchange
Данный плагин включен в стандартный пакет RabbitMQ, начиная с версии 3.7.8.
Конфигурация
Если вы используете предоставленный образ брокера, необходимо распаковать образ брокера flows_accelera_broker_{your_version}.tar.gz следующей командой:
docker load < flows_accelera_broker_{your_version}.tar.gzℹ️
В предоставляемом образе брокера уже активирован плагин hash exchange, дополнительных действий выполнять не нужно.
Создайте файл docker-compose.yaml со следующим содержимым:
version: '3'
services:
accelera_broker:
image: {image_name}:{image_version}
container_name: accelera_broker
network_mode: "host"
restart: unless-stopped
ports:
- "5672:5672"
- "15672:15672"Описание параметров
| image | Имя образа, который был распакован на предыдущем шаге, можно узнать командой docker images |
| container_name | Имя контейнера при запуске, рекомендуется оставить без изменения |
| restart | Политика рестарта процесса при остановке или ошибке, по умолчанию 'unless-stopped' |
| environment | BROKER_CONNECTION - адрес подключения к брокеру RabbitMQ. |
| ports | Настройка портов, задается как "внешний_порт_для_сервера:порт_указанный_в_свойстве_PORT_"._Данное свойство задает проброс внешнего порта на внутренний порт контейнера.Порт 5672 необходим для непосредственного подключения приложений к брокеру.Порт 15672 - web-интерфейс брокера.Для переопределения конфигурации смонтируйте ваш файл конфига в контейнер при запуске по адресу /etc/rabbitmq/rabbitmq.conf. |
Параметр ports настраиваются только при установки свойства network_mode = 'bridge'. Если в network_mode задан 'host', то параметр ports не требуются.
Пример файла:
Запуск
Для запуска брокера используйте следующую команду:
docker-compose -f {путь к вашему docker-compose файлу} up -dПолучить доступ к логам и проверить работоспособность брокера можно командой:
docker logs -f accelera_brokerОстановка
Для остановки брокера используйте команду:
docker-compose -f {путь к вашему docker-compose файлу} downУправление пользователями
По умолчанию RabbitMQ запускается с пользователем guest и паролем guest.
Рекомендуется переопределить эту конфигурацию при первом запуске в файле rabbitmq.conf в параметрах:
default_user = username
default_pass = passwordПри запуске системы войдите внутрь контейнера, в котором запущен RabbitMQ
docker exec -it broker /bin/bashДобавьте нового пользователя командой
rabbitmqctl add_user 'accelera' 'strongpassword'Выдайте новому пользователю права
rabbitmqctl set_permissions "accelera" ".*" ".*" ".*"Добавьте пользователю тег management
rabbitmqctl set_user_tags "accelera" managementДалее удалите дефолтного пользователя, имя которого вы переопределили при первом запуске
rabbitmqctl delete_user 'username'Покиньте командную оболочку контейнера.
Теперь в брокере доступен только пользователь, которого вы установили.
Ограничения конфигурации RabbitMQ
consumer_timeout - не должен быть меньше чем 25 минут