Как установить кластер RabbitMQ в Ubuntu 22.04
Это руководство существует для этих версий ОС
- Ubuntu 22.04 (Jammy Jellyfish)
- Ubuntu 20.04 (Focal Fossa)
На этой странице
- Предпосылки
- Подготовка машин
- Установка сервера RabbitMQ
- Включение подключаемого модуля управления RabbitMQ
- Настройка брандмауэра UFW
- Настройка кластера RabbitMQ
- Настройка администратора RabbitMQ
- Настройка классического зеркального отображения очереди
- Доступ к кластеру RabbitMQ через подключаемый модуль управления
- Заключение
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 и многое другое.