Поиск по сайту:

Как установить кластер RabbitMQ в Ubuntu 22.04


Это руководство существует для этих версий ОС

  • Ubuntu 22.04 (Jammy Jellyfish)
  • Ubuntu 20.04 (Focal Fossa)

На этой странице

  1. Предпосылки
  2. Подготовка машин
  3. Установка сервера RabbitMQ
  4. Включение подключаемого модуля управления RabbitMQ
  5. Настройка брандмауэра UFW
  6. Настройка кластера RabbitMQ
  7. Настройка администратора RabbitMQ
  8. Настройка классического зеркального отображения очереди
  9. Доступ к кластеру RabbitMQ через подключаемый модуль управления
  10. Заключение

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

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

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

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

Предпосылки

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

  • Два или более серверов Ubuntu 22.04. В этом примере используются три компьютера Ubuntu: rabbitmq1, rabbitmq2 и rabbitmq3.
  • Пользователь без полномочий root с правами администратора 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 – это API на основе HTTP с функциональностью, аналогичной инструменту командной строки rabbitmqadmin.

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

Включите Rabbitmq_management подключаемого модуля RabbitMQ с помощью следующей команды 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

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

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

sudo ufw allow OpenSSH
sudo ufw enable

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

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

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.

sudo ufw status

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

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

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

В каждой установке RabbitMQ есть файл .erlangcooke, доступный в каталоге /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 :/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 
sudo rabbitmqctl start_app

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

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

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

sudo rabbitmqctl cluster_status

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

Настройка администратора RabbitMQ

Создав кластер 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 ".*" ".*" ".*"

Теперь запустите приведенную ниже команду, чтобы удалить гостя пользователя по умолчанию из вашей установки 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":[""]}'

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

sudo rabbitmqctl list_policies

Доступ к кластеру RabbitMQ через плагин управления

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

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

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

Затем щелкните вкладку «Администратор» и щелкните «Политики», чтобы убедиться, что созданные вами политики RabbitMQ доступны.

На приведенном ниже снимке экрана показаны три разные политики: ha-all, ha-two и ha-nodes.

Заключение

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

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