1

Im пытается создать кластер RabbitMQ с узлами в отдельных машинах, используя докеры в каждой отдельной машине, и у меня есть некоторые проблемы, связанные с узлами. Когда я получаю имя хоста rabbitMQ, он ссылается только на контейнер, и из-за этого, когда я пытаюсь присоединиться к узлу в кластере, он терпит неудачу, потому что он не может найти домен. Как я могу указать имени хоста RabbitMQ IP реального сервера?Докер-контейнер с именем хоста rabbitmq (с сервером EC2)

Я пытаюсь подключить узлы на одном сервере с узлами другого внешнего сервера, оба являются экземпляром EC2, но какая информация должна иметь имя хоста RabbitMQ относительно экземпляра экземпляра EC2, чтобы иметь возможность подключаться извне?

Если я использую IP-172-31-12-135.us-запад 1.compute.internal, он не ...

+0

Не знаю, помогает ли это, но вы можете запустить контейнер докеров с определенным именем хоста: docker run --hostname = имя хоста контейнера ... –

ответ

1

Для создания кластера всех узлов RabbitMQ, которые должны выстроиться кластер должен быть доступен по имени узла (имя хоста). Вам нужно указать имя хоста для каждого контейнера докера с помощью опции --hostname и добавить/etc/host записи для всех остальных контейнеров, это можно сделать с помощью опции --add-host или вручную с помощью файла edditing/etc/hosts. Итак, вот пример для 3 RabbitMQ узлов кластера с докеров контейнерами (RabbitMQ: 3-управление изображением):

Сначала нужно создать сеть, так что вы можете назначить IP-адреса: docker network create --subnet=172.18.0.0/16 mynet1. Мы будем иметь следующее:

  • 3 Докер контейнеры с именем rab1con, rab2con и rab3con
  • IP-адреса, соответственно, будет 172.18.0.11, -12 и -13
  • каждый из них будет иметь имя хоста соответственно rab1, RAB2 и rab3
  • все должны разделить тот же Erlang печенье

раскручивает первый один

docker run -d --net mynet1 --ip 172.18.0.11 --hostname rab1 --add-host rab2:172.18.0.12 --add-host rab3:172.18.0.13 --name rab1con -e RABBITMQ_ERLANG_COOKIE='secret cookie here' rabbitmq:3-management 

второй один

docker run -d --net mynet1 --ip 172.18.0.12 --hostname rab2 --add-host rab1:172.18.0.11 --add-host rab3:172.18.0.13 --name rab2con -e RABBITMQ_ERLANG_COOKIE='secret cookie here' rabbitmq:3-management 

последний

docker run -d --net mynet1 --ip 172.18.0.13 --hostname rab3 --add-host rab2:172.18.0.12 --add-host rab1:172.18.0.11 --name rab3con -e RABBITMQ_ERLANG_COOKIE='secret cookie here' rabbitmq:3-management 

чем в contaner rab2con сделать

rabbitmqctl stop_app 
rabbitmqctl join_cluster [email protected] 
rabbitmqctl start_app 

и то же самое в rab3con и это все.

EDIT: Поскольку вопрос касается сети док-станции milti-host, следует использовать overlay network.

+0

Не могли бы вы предоставить дополнительную информацию о соединениях между внешними серверами? – chuseuiti

+0

Они находятся в одной подсети и могут обращаться друг к другу на основе имени хоста. Что еще тебе нужно? – cantSleepNow

+0

Но я имею в виду докеров с RabbitMQ на разных серверах. Не много докеров на тех же серверах – chuseuiti