Как установить RabbitMQ Cluster на Ubuntu 22.04

RabbitMQ – это бесплатный брокер сообщений с открытым исходным кодом. Поддерживая множество протоколов сообщений, RabbitMQ является наиболее широко используемым брокером сообщений в Интернете. Он поддерживает такие протоколы, как AMQP, STOMP, MQTT, HTTP и WebSockets, а также RabbitMQ Stream.

RabbitMQ полностью соответствует стандарту JMS 1.1 и подходит для различных сценариев разработки, от малых и средних до крупных сред развертывания.

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

В этом руководстве мы установим и настроим сервер RabbitMQ между несколькими машинами Ubuntu 22.04. Вы также узнаете, как установить пользователя администратора для RabbitMQ и настроить классическое зеркалирование очередей с помощью политики HA.

Предварительные условия

Для выполнения данного руководства вам понадобятся следующие требования:

  • Два или более серверов Ubuntu 22.04 – В данном примере используются три машины Ubuntu, rabbitmq1, rabbitmq2 и rabbitmq3.
  • Некорневой пользователь с правами администратора sudo/root.

Подготовка машин

Перед началом работы обновите системные репозитории. Затем настройте файл /etc/hosts на каждом сервере, чтобы сервер мог подключаться по имени системного хоста.

Обновите репозиторий пакетов Ubuntu с помощью команды apt, приведенной ниже.

sudo apt update

Далее отредактируйте файл /etc/hosts с помощью команды редактора nano, приведенной ниже.

sudo nano /etc/hosts

Добавьте следующую конфигурацию и не забудьте изменить каждый IP-адрес и имя хоста с данными вашего текущего окружения.

192.168.5.21 rabbitmq1
192.168.5.22 rabbitmq2
192.168.5.23 rabbitmq3

Сохраните файл и выйдите из редактора, когда закончите. Когда все серверы Ubuntu подготовлены, вы установите RabbitMQ и настроите кластер.

Установка сервера RabbitMQ

После подготовки машин Ubuntu, вы будете готовы установить сервер RabbitMQ на все целевые машины. Репозиторий Ubuntu 22.04 по умолчанию предоставляет последнюю и стабильную версию RabbitMQ, которая может быть легко установлена через APT.

Запустите команду apt ниже, чтобы обновить индекс пакетов ubuntu.

Установите RabbitMQ с помощью следующей команды apt ниже.

sudo apt install rabbitmq-server

В результате появится запрос на подтверждение, введите y для подтверждения и нажмите ENTER для продолжения.

После установки RabbitMQ выполните следующую команду systemctl для проверки службы RabbitMQ и убедитесь, что служба включена и работает.

sudo systemctl is-enabled rabbitmq-server
sudo systemctl status rabbitmq-server

Вы видите, что RabbitMQ запущен и включен. RabbitMQ будет запускаться автоматически при загрузке.

Сейчас, когда сервер RabbitMQ установлен, вам нужно включить плагин RabbitMQ rabbitmq_management.

Включение плагина управления RabbitMQ

RabbitMQ предоставляет плагин управления, который позволяет вам управлять и контролировать узлы и кластеры RabbitMQ через веб-браузер. Плагин rabbitmq_management – это HTTP API, функциональность которого аналогична инструменту командной строки rabbitmqadmin.

Перед началом настройки кластера RabbitMQ необходимо включить плагин rabbitmq_management на целевых машинах.

Включите плагин RabbitMQ rabbitmq_management с помощью следующей команды rabbitmq-plugins. Следующая команда также включит необходимые плагины для rabbitmq_management.

sudo rabbitmq-plugins enable rabbitmq_management

Далее перезапустите службу RabbitMQ, чтобы применить новые изменения и включить плагин rabbitmq_management.

sudo systemctl restart rabbitmq-server

По умолчанию плагин rabbitmq_management теперь работает на порту по умолчанию 15672. Выполните следующую команду ss, чтобы убедиться, что порт rabbitmq_management 15672 открыт.

ss -plnt

Порт rabbitmq_management активен и открыт.

Настройка UFW Firewall

После того, как плагин RabbitMQ Management включен, необходимо настроить UFW firewall на всех системах. Установка Ubuntu по умолчанию поставляется с установленным пакетом UFW, поэтому вы можете легко запустить и включить процесс UFW firewall.

Выполните следующую команду ufw, чтобы добавить службу OpenSSH и включить ufw firewall.

sudo ufw allow OpenSSH
sudo ufw enable

Когда появится запрос на подтверждение, введите y для подтверждения и нажмите ENTER для продолжения. Теперь брандмауэр ufw должен быть запущен и включен.

Далее, откройте несколько TCP портов для кластера RabbitMQ с помощью следующей команды ufw. Затем перезагрузите ufw firewall, чтобы применить новые изменения.

sudo ufw allow 15672/tcp
sudo ufw allow 5672/tcp
sudo ufw allow 4369/tcp
sudo ufw allow 25672/tcp
sudo ufw reload

После этого выполните следующую команду ufw, чтобы проверить, что порты RabbitMQ добавлены в ufw firewall.

sudo ufw status

Некоторые порты, которые будут использоваться для кластера RabbitMQ, добавлены в брандмауэр ufw.

Настройка кластера RabbitMQ

После включения плагина rabbitmq_management и настройки брандмауэра ufw, вы начнете создавать и настраивать кластер RabbitMQ с помощью команды rabbitmqctl.

На каждом сервере RabbitMQ имеется файл .erlang.cooke, который доступен в каталоге /var/lib/rabbitmq. Чтобы настроить кластер, вы должны убедиться, что все узлы кластера имеют одинаковый файл .erlang.cookie.

Для этого примера, rabbitmq1 будет использоваться как первый начальный кластер, поэтому вам нужно будет скопировать/перенести файл .erlang.cookie на оба других сервера rabbitmq2 и rabbitmq3

На сервере rabbitmq1 выполните следующую команду, чтобы проверить файл .erlang.cookie и убедиться, что он доступен.

ls -lah /var/lib/rabbitmq/

Далее скопируйте/передайте файл .erlang.cookie на серверы rabbitmq2 и rabbitmq3. В этом примере используется команда scp для копирования файла .erlang.cookie на серверы 192.168.5.22 и 192.168.5.23.

scp /var/lib/rabbitmq/.erlang.cookie root@192.168.5.22:/var/lib/rabbitmq/
scp /var/lib/rabbitmq/.erlang.cookie root@192.168.5.23:/var/lib/rabbitmq/

После того, как файл .erlang.cookie скопирован/перенесен, переместите рабочую сессию сервера на rabbitmq2 и rabbitmq3.

Выполните следующую команду на обоих rabbitmq2 и rabbitmq3, чтобы перезапустить службу RabbitMQ и применить новые изменения. Затем остановите приложение RabbitMQ.

sudo systemctl restart rabbitmq-server
sudo rabbitmqctl stop_app

Ниже показан вывод с сервера rabbitmq2

Ниже показан результат с сервера rabbitmq3

После этого добавьте серверы rabbitmq2 и rabbitmq3 в кластер RabbitMQ с помощью следующей команды. Затем запустите приложение RabbitMQ.

sudo rabbitmqctl join_cluster rabbit@rabbitmq1
sudo rabbitmqctl start_app

Ниже показан результат присоединения rabbitmq2 к кластеру RabbitMQ и запуска приложения RabbitMQ.

Ниже показан результат, когда rabbitmq3 присоединяется к кластеру RabbitMQ и запускает приложение RabbitMQ.

В заключение, вернитесь на сервер rabbitmq1 и выполните следующую команду для проверки состояния кластера RabbitMQ.

sudo rabbitmqctl cluster_status

Вы увидите, что кластер RabbitMQ создан с тремя узлами rabbitmq1, rabbitmq2 и rabbitmq3. Вы также видите текущую версию RabbitMQ на каждом узле и статус обслуживания узлов кластера.

Настройка RabbitMQ Administrator

Создав кластер RabbitMQ, вы теперь создадите и настроите нового пользователя администратора для сервера RabbitMQ с помощью rabbitmqctl, основной командной строки для управления сервером RabbitMQ.

Выполните следующую команду для добавления нового пользователя RabbitMQ. Этот пример добавит пользователя alice в RbbitMQ. Также необходимо изменить пароль на новый.

sudo rabbitmqctl add_user alice password

Следующая команда делает нового пользователя alice администратором на кластере RabbitMQ.

sudo rabbitmqctl set_user_tags alice administrator

Установите разрешения для пользователя alice на все объекты внутри кластера RabbitMQ.

sudo rabbitmqctl set_permissions -p / alice ".*" ".*" ".*"

Теперь выполните следующую команду, чтобы удалить пользователя по умолчанию „guest“ из вашей установки RabbitMQ.

sudo rabbitmqctl delete_user guest

Проверьте список пользователей, доступных в RabbitMQ. Вы увидите, что новый пользователь alice создан и может использоваться в качестве администратора для сервера RabbitMQ.

sudo rabbitmqctl list_users

На этом этапе вы завершили установку и настройку кластера RabbitMQ и настроили администратора для RabbitMQ. Далее вы настроите классическое зеркалирование очередей с помощью политик RabbitMQ.

Настройка классического зеркалирования очередей

RabbitMQ предоставляет два способа настройки зеркалирования очередей, вы можете использовать классическое зеркалирование очередей через политику RabbitMQ или настроить с помощью очередей кворума.

В этом примере вы узнаете, как настроить зеркалирование очередей через политику RabbitMQ.

Выполните следующую команду для создания новой политики ha-all. Эта политика позволяет всем очередям быть зеркалированными на всех узлах кластера RabbitMQ.

sudo rabbitmqctl set_policy ha-all ".*" '{"ha-mode": "all"}'

Теперь, если вы хотите указать очереди, которые будут зеркалироваться по всему кластеру. В этом примере будет создана новая политика ha-two-, которая будет зеркалировать все очереди с именем two.

sudo rabbitmqctl set_policy ha-two "^two.". '{"ha-mode": "exactly", "ha-params":2, "ha-sync-mode": "automatic"}'

Последнее, вы также можете создать новую политику, которая позволит вам настроить зеркалирование очередей на определенные узлы в кластере RabbitMQ. В этом примере вы создадите новую политику ha-nodes, которая будет зеркалировать все очереди с именем nodes на определенные узлы rabbitmq2 и rabbitmq3.

sudo rabbitmqctl set_policy ha-nodes "^nodes." '{"ha-mode":"nodes","ha-params":["rabbit@rabbitmq2", "rabbit@rabbitmq3"]}'

Проверьте список политик на вашем кластере RabbitMQ с помощью следующей команды. Вы увидите, что политики „ha-all“, „ha-two“ и „ha-nodes“ доступны на кластере RabbitMQ.

sudo rabbitmqctl list_policies

Доступ к кластеру RabbitMQ через Management Plugin

Откройте веб-браузер и зайдите на IP-адрес сервера, за которым следует порт RabbitMQ по умолчанию 15672 (т.е.: http://192.168.5.21). Вы получите страницу входа в систему RabbitMQ.

Войдите в систему с новым пользователем и паролем, которые вы создали, и нажмите „Login“.

Вы должны увидеть панель администрирования RabbitMQ, предоставляемую плагином rabbitmq_management.

Далее перейдите на вкладку Admin и нажмите Policies, чтобы убедиться, что политики RabbitMQ, которые вы создали, доступны. На скриншоте ниже вы можете видеть три различные политики:

  1. ha-all,
  2. ha-two,
  3. ha-nodes.

Заключение

Поздравляю! Теперь вы установили сервер RabbitMQ и настроили кластер RabbitMQ с тремя серверами Ubuntu 22.04. Кроме того, вы настроили брандмауэр UFW для защиты развертывания RabbitMQ, а также настроили пользователя-администратора для RabbitMQ и создали классическое зеркалирование очередей на кластере RabbitMQ с помощью политик RabbitMQ.

Теперь вы можете использовать RabbitMQ в качестве брокера сообщений для вашего приложения и инфраструктуры. Однако вы также можете вывести развертывание RabbitMQ на новый уровень, установив такие параметры, как очереди кворума, защита RabbitMQ с помощью TLS и многое другое.

Зарубин Иван Эксперт по Linux и Windows

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

Вдохновлен www.howtoforge.com

Похожие статьи

Комментарии (0)