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

by itisgood

В этом сообщении мы обсудим процесс установки и настройки кластера RabbitMQ на сервере Ubuntu 18.04 LTS. 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 состоит из двух частей:

Установка 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/rabbit@mq1.log
Dec 10 10:33:28 mq1.example.com rabbitmq-server[9634]:                     /var/log/rabbitmq/rabbit@mq1_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 rabbit@mq2 ...

3. Сбросьте rabbitmq

$ sudo rabbitmqctl reset
Resetting node rabbit@mq2 ...

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

$ sudo rabbitmqctl join_cluster rabbit@mq1
Clustering node rabbit@mq2 with rabbit@mq1

4. Запустите процесс подачи приложения

$ sudo rabbitmqctl start_app
Starting node rabbit@mq2 ...
 completed with 0 plugins.

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

root@mq1:~# 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 rabbit@mq1 ...
[{nodes,[{disc,[rabbit@mq1,rabbit@mq2]}]},
 {running_nodes,[rabbit@mq2,rabbit@mq1]},
 {cluster_name,<<"rabbit@mq2.example.com">>},
 {partitions,[]},
 {alarms,[{rabbit@mq2,[]},{rabbit@mq1,[]}]}]

Шаг 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 "/" ...

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

root@mq1:~# 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: // [IP-адрес сервера | Имя хоста]: 15672

По умолчанию пользователь guest существует и может подключаться только с локального хоста.

Вы можете войти с этим пользователем локально с паролем «guest»

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

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. Наслаждайтесь и оставайтесь на связи для более информативного содержания.

You may also like

Leave a Comment