Установка, запуск, остановка RabbitMQ, просмотр логов

Сервер BOOCO Astra (v 2.x) / RabbitMQ

Требования

  1. Установка в Docker (рекомендовано) или другим способом.
  2. В RabbitMQ должен быть включен MQTT-плагин — для работы с устройствами и некоторыми триггерами.

Установка

  1. Создайте папку /opt/rabbitmqи перейдите в нее:
  2. sudo mkdir -p /opt/rabbitmq
    cd /opt/rabbitmq
  3. Скачайте файл docker-compose.yml:
  4. sudo curl https://www.booco.ru/install/services/rabbitmq/docker-compose.yml --output docker-compose.yml
  5. Скачайте и отредактируйте шаблон файла конфигурации .env:
  6. sudo curl https://www.booco.ru/install/services/rabbitmq/config.env --output .env
    Описание переменных .env для RabbitMQ
  7. При необходимости диспетчеризации логов настройте логирование с помощью микросервиса master-logger.
  8. Настройте MQTT-плагин. Для этого:
  9. 5.1. В директории сервиса rabbitmq:

    • создайте папку data и необходимые подпапки:
    • sudo mkdir -p ./data/{config,plugins,conf.d}
    • перейдите в подпапку plugins и создайте в ней файл enabled_plugins (без расширения) со следующим содержанием:
    • [rabbitmq_management,rabbitmq_mqtt].
    • в подпапке conf.d создайте конфигурационный файл rabbitmq.conf со следующим содержанием:
    • mqtt.allow_anonymous = false
      💡
      После создания файла rabbitmq.conf будет автоматически создан exchange booco.mqtt.

5.2. Запустите контейнер с rabbitmq :

sudo docker compose up -d

5.3. Добавьте пользователей* и назначьте им права с помощью команд:

sudo docker exec -it rabbitmq rabbitmqctl add_user mqtt-system <password>
sudo docker exec -it rabbitmq rabbitmqctl add_user mqtt-user <password>
sudo docker exec -it rabbitmq \
rabbitmqctl set_permissions -p / mqtt-system ".*" ".*" ".*"
sudo docker exec -it rabbitmq \
rabbitmqctl set_permissions -p / mqtt-user ".*" ".*" ".*"
sudo docker exec -it rabbitmq \
rabbitmqctl set_topic_permissions \
--vhost / mqtt-user booco.mqtt "devices.*channels.*" ".*"
sudo docker exec -it rabbitmq \
rabbitmqctl set_topic_permissions \
--vhost / mqtt-user booco.mqtt "resources.*status" ".*"

* Пользователи:

  • mqtt-system — системный пользователь, от имени которого BOOCO будет управлять обратными связями и каналами;
  • mqtt-user — пользователь для получения обратных связей и отправки команд через протокол MQTT.

Для пользователя mqtt-user нужно задать ограничения на запись, для этого используйте регулярные выражения:

  • devices.*channels.* — ограничивает на запись только в топики каналов;
  • bookings.*resources.* — ограничивает на запись только в топики ресурсов.
  • 💡
    Названия пользователей можно изменить.

Запуск

sudo docker compose up -d
# или если .env называется по-другому
sudo docker compose --env-file rabbitmq.env up -d

Остановка

sudo docker compose down

Просмотр логов

sudo docker logs rabbitmq -f