Как установить 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, которые вы создали, доступны. На скриншоте ниже вы можете видеть три различные политики:
- ha-all,
- ha-two,
- ha-nodes.
Заключение
Поздравляю! Теперь вы установили сервер RabbitMQ и настроили кластер RabbitMQ с тремя серверами Ubuntu 22.04. Кроме того, вы настроили брандмауэр UFW для защиты развертывания RabbitMQ, а также настроили пользователя-администратора для RabbitMQ и создали классическое зеркалирование очередей на кластере RabbitMQ с помощью политик RabbitMQ.
Теперь вы можете использовать RabbitMQ в качестве брокера сообщений для вашего приложения и инфраструктуры. Однако вы также можете вывести развертывание RabbitMQ на новый уровень, установив такие параметры, как очереди кворума, защита RabbitMQ с помощью TLS и многое другое.
Парашютист со стажем. Много читаю и слушаю подкасты. Люблю посиделки у костра, песни под гитару и приближающиеся дедлайны. Люблю путешествовать.
Вдохновлен www.howtoforge.com
Комментарии (0)