RabbitMQ не может присоединиться к кластеру - PullRequest
2 голосов
/ 02 августа 2020

Я пытаюсь изучить кластеризацию узлов rabbitmq, и я следую этому руководству , а также официальной документации .

У меня есть 2 физических машины с развернутым rabbitmq на них через docker. machine1 ( 192.168.1.2 ) должен быть кластером, а machine2 ( 192.168.1.3 ) должен присоединиться к нему.

Когда я пытаюсь запустить rabbitmqctl join_cluster rabbit@192.168.1.2 с машины2, это не удается с появлением следующего сообщения.

Clustering node rabbit@node2.rabbit with rabbit@192.168.1.2
Error: unable to perform an operation on node 'rabbit@192.168.1.2'. Please see diagnostics information and suggestions below.

Most common reasons for this are:

 * Target node is unreachable (e.g. due to hostname resolution, TCP connection or firewall issues)
 * CLI tool fails to authenticate with the server (e.g. due to CLI tool's Erlang cookie not matching that of the server)
 * Target node is not running

In addition to the diagnostics info below:

 * See the CLI, clustering and networking guides on https://rabbitmq.com/documentation.html to learn more
 * Consult server logs on node rabbit@192.168.1.2
 * If target node is configured to use long node names, don't forget to use --longnames with CLI tools

DIAGNOSTICS
===========

attempted to contact: ['rabbit@192.168.1.2']

rabbit@192.168.1.3:
  * connected to epmd (port 4369) on 192.168.1.2
  * epmd reports node 'rabbit' uses port 25672 for inter-node and CLI tool traffic
  * TCP connection succeeded but Erlang distribution failed
  * suggestion: check if the Erlang cookie identical for all server nodes and CLI tools
  * suggestion: check if all server nodes and CLI tools use consistent hostnames when addressing each other
  * suggestion: check if inter-node connections may be configured to use TLS. If so, all nodes and CLI tools must do that
   * suggestion: see the CLI, clustering and networking guides on https://rabbitmq.com/documentation.html to learn more


Current node details:
 * node name: 'rabbitmqcli-1352-rabbit@node2.rabbit'
 * effective user's home directory: /var/lib/rabbitmq
 * Erlang cookie hash: XXXXXXXXXXXXX

Журналы ошибок на машине1 не показывают ничего, связанного с такой попыткой подключения. Я проверил md5sum файлов cookie в обоих контейнерах docker, и они абсолютно одинаковы. Таковы разрешения.

Я предположил, что, возможно, порт 4369 недоступен, но это так.

Я не уверен, что я делаю неправильно. Здесь может кто-нибудь помочь?

Дополнительная информация:

Я использую образ rabbitmq: 3.85-management. Он использует Erlang / OTP 23 [erts-11.0.3].

Я проверял руководство по устранению неполадок, , но я не уверен, что здесь кажется неправильным. Пожалуйста, дайте мне знать, если я могу предоставить дополнительную информацию.

1 Ответ

0 голосов
/ 05 августа 2020

Итак, благодаря @NeoAnderson и @ José M, я смог понять, что произошло.

Контейнеры, на которых запущен RMQ, должны быть доступны через имя хоста, которое Erlang использует внутри службы, по сети. Поскольку имя хоста контейнеров не было доступно в контейнере на другом компьютере , эта кластеризация не удалась.

Простым исправлением было бы отредактировать файл / etc / hosts в контейнерах так, чтобы он будет указывать IP на "ведущий" узел.

Я просто делал это, чтобы избежать установки RMQ, а не потому, что я думал, что это лучший способ сделать это. В качестве альтернативы, docker swarm или k8s предоставили бы мне правильную сеть.

Но причиной root определенно была проблема с именем узла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...