Как настроить кластер RabbitMQ в Ubuntu 18.04 LTS

Как настроить кластер RabbitMQ в Ubuntu 18.04 LTS

 

В этом посте мы обсудим процесс установки RabbitMQ Cluster на Ubuntu 18.04 . RabbitMQ — это программное обеспечение брокера сообщений с открытым исходным кодом, которое реализует расширенный протокол очереди сообщений ( AMQP ) и протокол потоковой передачи текстовых сообщений, телеметрический транспорт очереди сообщений и другие протоколы через подключаемые модули.

Работа брокера обмена сообщениями заключается в получении сообщений от издателей (приложений, которые их публикуют) и маршрутизации их потребителям (приложениям, которые их обрабатывают). AMQP — это протокол обмена сообщениями, который позволяет соответствующим клиентским приложениям взаимодействовать с соответствующими посредниками по обмену сообщениями.

Установив кластер RabbitMQ в Ubuntu 18.04, вы избежите единой точки отказа и достигнете более высокой пропускной способности по сравнению с настройкой RabbitMQ в одном экземпляре. Без лишних слов давайте углубимся в настройку кластера RabbitMQ на Ubuntu 18.04 LTS.

Требования к настройке

Эта установка имеет следующие требования

  • Установленные серверы Ubuntu 18.04 LTS
  • Как минимум  два  сервера RabbitMQ
  • Пользователь с привилегиями sudo
  • Серверы должны иметь доступ к интернету

Эта настройка RabbitMQ Cluster в Ubuntu 18.04 основана на двух серверах со следующими IP-адресами и именами хостов.

Server Hostname IP Address
MQ Server 1 mq1.example.com 192.168.121.11
MQ Server 2 mq2.example.com 192.168.121.8

Шаг 1: Настройте имена хостов и DNS

Первым этапом установки кластера RabbitMQ в Ubuntu 18.04 является настройка правильных имен хостов и DNS.

MQ Server 1:

sudo hostnamectl set-hostname mq1.example.com --static

MQ Server 2:

sudo hostnamectl set-hostname mq2.example.com —static

Если у вас нет DNS-сервера, вы можете добавить записи в /etc/hosts

echo "192.168.121.11 mq1.example.com mq1" >> /etc/hosts
echo "192.168.121.8 mq2.example.com mq2" >> /etc/hosts

Затем обновите ваши системы::

sudo apt update
sudo apt -y upgrade

Шаг 2: Установите сервер RabbitMQ на обоих узлах

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

Как установить последний сервер RabbitMQ на Ubuntu 18.04 LTS

Установка RabbitMQ в Ubuntu 18.04 состоит из двух частей:

  1. Установка Erlang / OTP
  2. Установка сервера RabbitMQ

Статус ваших серверов RabbitMQ должен быть запущен:

$ sudo systemctl status rabbitmq-server.service 
 rabbitmq-server.service - RabbitMQ broker
 Loaded: loaded (/lib/systemd/system/rabbitmq-server.service; enabled; vendor preset: enabled)
 Active: active (running) since Mon 2018-12-10 10:33:30 PST; 1min 28s ago
 Main PID: 9634 (beam.smp)
 Status: "Initialized"
 Tasks: 87 (limit: 505)
 CGroup: /system.slice/rabbitmq-server.service
        |-9634 /usr/lib/erlang/erts-10.1/bin/beam.smp -W w -A 64 -MBas ageffcbf -MHas ageffcbf -MBlmbcs 512 -MHlmbcs 512 -MMmcs 30 -P 1048576 -t 500
        |-9733 /usr/lib/erlang/erts-10.1/bin/epmd -daemon
        |-9883 erl_child_setup 32768
        |-9906 inet_gethost 4
        `-9907 inet_gethost 4 
 Dec 10 10:33:28 mq1.example.com rabbitmq-server[9634]:   ##  ##
 Dec 10 10:33:28 mq1.example.com rabbitmq-server[9634]:   ##  ##      RabbitMQ 3.7.9. Copyright (C) 2007-2018 Pivotal Software, Inc.
 Dec 10 10:33:28 mq1.example.com rabbitmq-server[9634]:   ##########  Licensed under the MPL.  See http://www.rabbitmq.com/
 Dec 10 10:33:28 mq1.example.com rabbitmq-server[9634]:   ######  ##
 Dec 10 10:33:28 mq1.example.com rabbitmq-server[9634]:   ##########  Logs: /var/log/rabbitmq/[email protected]
 Dec 10 10:33:28 mq1.example.com rabbitmq-server[9634]:                     /var/log/rabbitmq/[email protected]_upgrade.log
 Dec 10 10:33:28 mq1.example.com rabbitmq-server[9634]:               Starting broker…
 Dec 10 10:33:30 mq1.example.com rabbitmq-server[9634]: systemd unit for activation check: "rabbitmq-server.service"
 Dec 10 10:33:30 mq1.example.com systemd[1]: Started RabbitMQ broker.
 Dec 10 10:33:30 mq1.example.com rabbitmq-server[9634]:  completed with 0 plugins.

Шаг 3: Скопируйте RabbitMQ Server 1 Cookie RabbitMQ Server2

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

На mq1 бегу:

sudo scp /var/lib/rabbitmq/.erlang.cookie mq2:/var/lib/rabbitmq/.erlang.cookie

Шаг 4: Сброс RabbitMQ на Node2

Переконфигурируйте RabbitMQ на узле 2 и присоедините его к кластеру.

1. Перезапустите сервис RabbitMQ

sudo systemctl restart rabbitmq-server

2. Остановить приложение

$ sudo rabbitmqctl stop_app
Stopping rabbit application on node [email protected] ...

3.  Сбросить rabbitmq

$ sudo rabbitmqctl reset
Resetting node [email protected] ...

3. Присоединить узел к кластеру

$ sudo rabbitmqctl join_cluster [email protected]
Clustering node [email protected] with [email protected]

4. Запустить процесс подачи заявки

$ sudo rabbitmqctl start_app
Starting node [email protected] ...  completed with 0 plugins.

Проверьте статус кластера:

[email protected]:~# rabbitmqctl cluster_status

warning: the VM is running with native name encoding of latin1 which may cause Elixir to malfunction as it expects utf8. Please ensure your locale is set to UTF-8 (which can be verified by running "locale" in your shell)
Cluster status of node [email protected] ...
[{nodes,[{disc,[[email protected],[email protected]]}]},
 {running_nodes,[[email protected],[email protected]]},
 {cluster_name,<<"[email protected]">>},
 {partitions,[]},
 {alarms,[{[email protected],[]},{[email protected],[]}]}]

Шаг 5. Настройка политики RabbitMQ HA

Создайте политику, которая позволяет зеркалировать очереди для всех узлов в кластере.

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

Setting policy "ha-all" for pattern "." to "{"ha-mode":"all"}" with priority "0" for vhost "/" …

Вы можете перечислить настроенные политики, используя:

[email protected]:~# sudo rabbitmqctl list_policies
Listing policies for vhost "/" …
vhost    name    pattern apply-to    definition  priority
/    ha-all  .*  all {"ha-mode":"all"}   0

Чтобы удалить политику, используйте:

sudo rabbitmqctl clear_policy <policyname>

Шаг 5: Тестирование

Наконец, проверьте настройку кластера RabbitMQ в Ubuntu 18.04. Включите веб-панель управления RabbitMQ Management для удобного управления.

sudo rabbitmq-plugins enable rabbitmq_management

Если у вас есть активный брандмауэр UFW, разрешите порты TCP 5672 и 15672

sudo ufw allow proto tcp from any to any port 5672,15672

Доступ к нему, открыв URL http://[server IP|Hostname]:15672

По умолчанию  гостевой  пользователь существует и может подключаться только с  localhost. Вы можете войти с этим пользователем локально с паролем « гость»

Чтобы иметь возможность войти в сеть, создайте пользователя-администратора, как показано ниже:

sudo rabbitmqctl add_user admin StrongPassword
sudo rabbitmqctl set_user_tags admin administrator

Используйте созданного пользователя для входа в интерфейс управления RabbitMQ. Вы должны получить статус всех узлов кластера.

Более подробную информацию об узле можно также просмотреть в веб-консоли.Если вы войдете в RabbitMQ node2 и проверите для созданных пользователей RabbitMQ, вы должны увидеть вывод, подобный приведенному ниже.

# rabbitmqctl list_users
 Listing users …
 user    tags
 admin    [administrator]
 guest    [administrator]

Вы успешно установили кластер RabbitMQ в Ubuntu 18.04. Наслаждайтесь и оставайтесь на связи для более информативного содержания

Прокрутить вверх