Всем привет!
Смешно, конечно, но стоит ли ставить RMQ на винде? Потыкался, по дефолту все ставится, начал пытаться настраивать через rabbitmq.conf - любой файл вызывает падение сервиса.
В связи с этим вопрос: Как по фен-шую сам RMQ ставить и дальше настраивать LDAP и т.д.?
RabbitMQ с нуля
Да, рэббит вполне работает под виндой. Что настраиваешь, какие ошибки?
3.7.3. Установил. Сделал
rabbitmq-plugins.bat enable rabbitmq_management
Стартую сервис - ок - запускается. Далее хочу что-нибудь поменять и создаю файл rabbitmq.conf (даже пустой) по адресу AppData\Roaming\RabbitMQ - перезапускаю сервис он крашится с дампом erl_crash.dump
=erl_crash_dump:0.5
Tue Feb 27 08:25:25 2018
Slogan: init terminating in do_boot (generate_config_file)
System version: Erlang/OTP 20 [erts-9.2] [64-bit] [smp:2:2] [ds:2:2:10] [async-threads:64]
Compiled: Mon Dec 11 21:32:15 2017
Taints: erl_tracer,zlib
Atoms: 10182
Calling Thread: scheduler:2
=scheduler:1
Scheduler Sleep Info Flags: SLEEPING | TSE_SLEEPING | WAITING
Scheduler Sleep Info Aux Work:
Current Port:
Run Queue Max Length: 0
Run Queue High Length: 0
…
Откатился до 3.6.15 - заработало с простыми конфигами
а если добавить туда пустые квадратные (или фигурные, не помню точно формат) скобки?
[].
тоже не работало.
Через год - но всё же. Вы хотели феншуй - ну так вот он:
RabbitMQ кластер на Windows
порядок действий
-
вдумчиво читаем с переводчиком (Google Translate на пример)
- https://www.rabbitmq.com/install-windows.html
- особенно важно читаем https://www.rabbitmq.com/windows-quirks.html
-
останавливаемся на 5 минут
-
на ХОСТЕ создаем спецпользователя RMQSAСС и разрешаем ему RDP и установку приложений и запуск служб.
-
для пользователя RMQSAСС (расшифровывается как RabbitMQ Service Account) устанавливаем запрет смены пароля пользователем и отключаем истечение срока действия пароля
-
создаем переменную окружения в системе %RABBITMQ_BASE% равную например
C:\RMQData
- можно менять диск, но не меняйте название -
останавливаемся на 5 минут - видим что везде имена меньше 8 символов.
RMQData
иRMQSACC
-
заходим по RDP на хост под пользователем RMQSAСС
-
устанавливаем Erlang в каталог C:\erlang
-
устанавливаем RabbitMQ в каталог C:\rabbitmq
- при установке убираем галочку “Install as a service”
-
останавливаемся на 5 минут - видим что адреса каталогов установки с МАЛЕНЬКОЙ БУКВЫ
-
открываем каталог C:\rabbitmq<текущая версия>\sbin\
-
редактируем файл
rabbitmq-server.bat
- заменяем в нем магическоеset TDP0=%~dp0
наset TDP0=%~dps0
что отвечает за принудительно сокращение путей -
запускаем команду через cmd
C:\rabbitmq\<текущая версия>\sbin\rabbitmq-service.bat install
-
заходим в службы - находим службу RabbitMQ Server, устанавливаем учетную запись запуска службы RMQSAСС
-
запускаем службу - убеждаемся в каталоге C:\Users\RMQSAСС\ есть файл
.erlang.coockie
- это уникальный ключ ноды-хоста -
останавливаемся на 5 минут - приступаем к проверке
-
запускаем команду через cmd
C:\rabbitmq\<текущая версия>\sbin\rabbitmq-ctl status
убеждаемся что выведен список текущих настроек в JSON и нед надписи Error - если есть Гуглим текст ошибки Error -
на ХОСТЕ отбираем права у пользователя RMQSAСС на запуск RDP и установку приложений. Должны остаться права только на "запуск служб"и на указанные каталоги
ХОСТ ГОТОВ
если хотим построить кластер - воспроизводить указанные действия на каждом хосте.
Дальнейшее администрирование
- для выполнения любых действий - включаем RDP для спец пользователя RMQSAСС
- выполняем через RDP нужные команды
- отключаем RDP
- по возможности используем RabbitMQ Management Plugin для администрирования
жестоко…
я так понял - они (авторы RabbitMQ) особо не заморачивались и сделали инсталятор “как могли” с повторением архитектуры Linux. отсюда и указанные артефакты
Может пригодится кому:
для установки менеджмент
cmd C:\rabbitmq\<текущая версия>\sbin\rabbitmq-plugins.bat enable rabbitmq_management
после рестартуем сервис RabbitMQ
cmd C:\rabbitmq\<текущая версия>\sbin\rabbitmq-service.bat stop
cmd C:\rabbitmq\<текущая версия>\sbin\rabbitmq-service.bat start
админка RabbitMQ: доступна http://localhost:15672
логин пароль (guest/guest)`