Skip to content

Инструкция из личного кабинета Это руководство по сервису из личного кабинета Nubes (ЛК). Текст приведён без изменений, «как есть».

Инструкция по развертыванию RabbitMQ через платформу


1. Общая информация

RabbitMQ — это брокер сообщений с открытым исходным кодом, который обеспечивает надёжную доставку сообщений между приложениями. Позволяет надёжно передавать сообщения между сервисами и системами, интегрироваться с внешними решениями и использовать как внутренние, так и защищённые TLS-подключения. Развёртывание полностью автоматизировано платформой.

Доступные операции

  • create — Создание кластера
  • modify — Изменение параметров кластера
  • delete — Удаление кластера
  • suspend — Остановка кластера
  • resume — Запуск кластера

2. Параметры развертывания кластера

Ниже перечислены параметры, которые необходимо указать при создании ресурса RabbitMQ:

  • Платформа для развертывания: Платформа для развертывания (среда, в которой будет развернут кластер). Пример: k8s-3.ext.nubes.ru.

  • Количество узлов в сети: Количество реплик в кластере RabbitMQ. При значении больше 1 создаётся кластер с репликацией для обеспечения высокой доступности. Пример: 1 (single node) или 3 (кластер с репликацией)

  • Квота (megabyte) памяти пода: Квота памяти пода в мегабайтах. Пример: 2048

  • Квота (millicore) ядра пода: Квота CPU пода в миликорах (1000 mCPU = 1 vCPU). Пример: 1000

  • Размер (gigabyte) диска для базы данных: Размер диска для хранения данных RabbitMQ в гигабайтах. Пример: 50

  • Выделяет внешний IP для доступа к master: Флаг, определяющий, нужно ли выделять внешний IP для доступа к master-узлу. При включении создаётся Service типа LoadBalancer и настраивается VIP на порту 5672. Пример: true или false

  • Имя ipSpace для публикации внешнего IP master: Если включен предыдущий параметр, то поле необходимо заполнить. Пример: internet-no-antiddos-v1


3. Модификация кластера

Операция modify позволяет изменить параметры существующего кластера RabbitMQ.

Изменяемые параметры: * Квота (megabyte) памяти пода — можно увеличить или уменьшить * Квота (millicore) ядра пода — можно увеличить или уменьшить * Размер (gigabyte) диска для базы данных — можно только увеличить (уменьшение не поддерживается) * Количество узлов в сети — можно только увеличить (уменьшение не поддерживается) * Выделяет внешний IP для доступа к master — можно включить или выключить * Имя ipSpace для публикации внешнего IP master — можно изменить при включенном внешнем IP

Ограничения: * Уменьшение размера диска не поддерживается * Уменьшение количества реплик не поддерживается


4. Выходные параметры

После успешного развертывания ресурса RabbitMQ платформа возвращает ряд параметров в разделе "Поля состояния (сгенерированные значения)":

clusterDomain Домен кластера Kubernetes, в котором развернут RabbitMQ. Пример: cluster.local

inernalConnect Внутренние эндпоинты для подключения к кластеру RabbitMQ из других сервисов, развернутых внутри той же сети. Содержит: * master — FQDN для подключения к кластеру. Пример: rabbitmqk8s.{namespace}.svc.{clusterDomain}

externalConnect Внешние эндпоинты для подключения к кластеру RabbitMQ извне. Содержит объекты с полями: * admin — доступ к веб-интерфейсу управления: * fqdn — полное доменное имя для веб-интерфейса. Пример: admin.{namespace}.{domain} * ip — IP-адрес * master — доступ к AMQP протоколу (если включен внешний IP): * fqdn — полное доменное имя для AMQP. Пример: write.{namespace}.{domain} * ip — IP-адрес

monitoring Информация о дашбордах мониторинга: * allDashboards — URL для доступа ко всем дашбордам Grafana

Для подключения используются следующие порты:

  • 5672 — AMQP протокол (внутренний и внешний доступ, если включен внешний IP)
  • 15672 — веб-интерфейс управления (доступен через Ingress по HTTPS)

Учётные данные Данные для подключения к RabbitMQ доступны в разделе "Учётные данные": * adminUser — имя пользователя администратора * adminPass — пароль администратора


5. Примеры подключения через консоль (rabbitmqadmin)

Работа с очередями через rabbitmqadmin

Для работы с RabbitMQ через консоль используется утилита rabbitmqadmin. Установите её или используйте образ с предустановленной утилитой.

Задайте переменные окружения с учётными данными:

export RABBITMQ_USERNAME=<adminUser>
export RABBITMQ_PASSWORD=<adminPass>
export RABBIT_HOST=<host>

Где: * <adminUser> и <adminPass> — учётные данные из раздела "Учётные данные" * <host> — адрес для подключения: * Для внешнего подключения: externalConnect.admin.fqdn или externalConnect.master.fqdn

Создание очереди:

rabbitmqadmin \
  -H "$RABBIT_HOST" -P 15672 \
  -u "$RABBITMQ_USERNAME" -p "$RABBITMQ_PASSWORD" \
  declare queue name=healthcheck durable=false

Листинг очередей:

rabbitmqadmin \
  -H "$RABBIT_HOST" -P 15672 \
  -u "$RABBITMQ_USERNAME" -p "$RABBITMQ_PASSWORD" \
  list queues

Отправка сообщения:

rabbitmqadmin \
  -H "$RABBIT_HOST" -P 15672 \
  -u "$RABBITMQ_USERNAME" -p "$RABBITMQ_PASSWORD" \
  publish exchange=amq.default routing_key=healthcheck payload="ping-$(date +%s)"

Чтение сообщения:

rabbitmqadmin \
  -H "$RABBIT_HOST" -P 15672 \
  -u "$RABBITMQ_USERNAME" -p "$RABBITMQ_PASSWORD" \
  get queue=healthcheck ackmode=ack_requeue_false

6. Дополнительная информация

Для подключения к кластеру RabbitMQ используйте полученные эндпоинты из раздела "Поля состояния (сгенерированные значения)" и учётные данные из раздела "Учётные данные".

Веб-интерфейс управления доступен по адресу, указанному в параметре externalConnect.admin.fqdn через HTTPS.

Для внутреннего подключения используйте адрес из inernalConnect.master на порту 5672.