Установка и настройка кластера RabbitMQ на Windows

Дата: 15.09.2019 Автор Admin

Иногда есть необходимость установить кластер RabbitMQ на Windows сервера, в этой статье мы рассмотрим как это можно сделать.

Установка будет проводится на 3 сервера, на каждом из них нужно выполнить операции указанные ниже.

Устанавливаем Erlang, переходим на страницу https://www.rabbitmq.com/whicherlang.html и проверяем какая версия Erlang совместима с текущим RabbitMQ.

Скачиваем и устанавливаем необходимую версию Erlang по ссылке http://www.erlang.org/download.html

После установки устанавливаем переменную окружения ERLANG_HOME

Открываем Start > Settings > Control Panel > System > Advanced > Environment Variables

Создаем системную переменную ERLANG_HOME, которая должна указывать на путь к установленному Erlang, например —  C:\Program Files\erl10.4

Скачиваем архив с RabbitMQ https://github.com/rabbitmq/rabbitmqserver/releases/download/v3.7.15/rabbitmqserverwindows-3.7.15.zip

В настоящий момент последняя версия 3.7.15

Распаковываем архив в C:\Program Files\RabbitMQ

По аналогии создаем системную переменную RABBITMQ_SERVER , которая должна содержать полный путь к серверу (C:\Program Files\RabbitMQ)

Далее, в системную переменную Path добавляем значение ;%RABBITMQ_SERVER%\sbin

По аналогии создаем переменную с указанием пути к конфигу RABBITMQ

Переменная RABBITMQ_CONFIG_FILE , значение имя файла без расширения, например — c:\rabbitmq\rabbitmq

Создаем конфиг RABBITMQc:\rabbitmq\rabbitmq.config со следующим содержимым:

 

Соответственно вместо default_user и default_pass прописываем значения для дефолтного пользователя

cluster_partition_handling выставляем согласно статье https://www.rabbitmq.com/partitions.html#automatichandling

  • pauseminority RabbitMQ перестанет принимать запросы если из строя вышло 2-е ноды из 3-х
  • pause_if_all_down — перестанет принимать запросы если из строя вышли все ноды указанные в конфиге
  • ignore  — подойдет для кластера из двух нод
  • autohealRabbitMQ продолжит принимать запросы даже если из строя вышло 2-е ноды из 3-х. Минус данного подхода в том что сообщения могут потеряться. Данный режим подойдет если вы работаете в нестабильной сети.

 

Устанавливаем RabbitMQ как сервис.

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

Запускаем сервис

Активируем Management плагин командой:

Теперь веб интерфейс RabbitMQ доступен по адресу http://localhost:15672 и доступен под УЗ указанной в конфиге

Теперь, перед тем как создавать кластер, синхронизируйте erlang cookie

В качестве мастера мы будем использовать первый сервер, у меня это rmq1.dev.local

На мастер сервере я копирую cookie из %APPDATA%\RabbitMQ\.erlang.cookie в каталог C:\Windows\System32\config\systemprofile

Далее с этого сервера я копирую файл %APPDATA%\RabbitMQ\.erlang.cookie в каталоги %APPDATA%\RabbitMQ\ и C:\Windows\System32\config\systemprofile на другие 2 сервера.

В моем случае это rmq2.dev.local и rmq3.dev.local

После этого перезапускаем сервис RABBITMQ на серверах rmq2.dev.local и rmq3.dev.local

 

Переходим к созданию кластера.

Открываем консоль на сервере rmq2.dev.local и выполняем

 

Повторяем операцию на сервере rmq3.dev.local

Кластер готов, все ноды отображаются в веб интерфейсе http://localhost:15672

Если для вас критична консистентность данных выполните команду ниже на любой из нод RABBITMQ

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

Если по какой-то причине вам нужно удалить одну из нод выполните команды:

На этом настройка кластера RabbitMQ завершена.

 


Добавить комментарий

Ваш e-mail не будет опубликован.