Как настроить кластер 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 состоит из двух частей:
- Установка Erlang / OTP
- Установка сервера 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. Наслаждайтесь и оставайтесь на связи для более информативного содержания