Как подключить docker swarm worker к swarm manager — AWS EC2

Я не могу подключить своего работника докеров к диспетчеру докеров.

Я создал несколько экземпляров aws EC2 и сделал один из них менеджером docker swarm init --listen-addr 0.0.0.0:2377 и пытаюсь подключить его через другие экземпляры EC2 docker swarm join 0.0.0.0:2377 в качестве рабочего, но это выдает ошибку.

 "Error response from daemon: Timeout was reached before node joined`. 
The attempt to join the swarm will continue in the background".

Мне нужно, чтобы мой менеджер роя докеров перечислил docker node ls все узлы, включая менеджера и рабочих.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
819
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Вам нужно использовать реальный IP-адрес в команде docker swarm join.

«0.0.0.0» — это не настоящий IP-адрес, это псевдоним для «всех (локальных) IP-адресов», к которому вы не можете подключиться.

Я уже использовал реальный общедоступный IP-адрес моего экземпляра ec2 для подключения. Я просто хочу сохранить это в тайне, поэтому я написал 0.0.0.0

Nabeel Shaikh 09.05.2019 19:13

Тогда, пожалуйста, не используйте 0.0.0.0, это сбивает с толку пользователей :)

Frank Louwers 10.05.2019 11:09

Находятся ли ваши инстансы EC2 в одном и том же облаке VPC? Если это так, вы должны иметь возможность использовать внутренний адрес.

Frank Louwers 10.05.2019 11:10

1.запустите команду на главном узле: рабочий токена присоединения к docker swarm

2.и затем запустите команду, полученную на предыдущем шаге

пример:

root@ubuntu:~# docker swarm join-token worker Чтобы добавить рабочего в этот рой, выполните следующую команду:

docker swarm join --token SWMTKN-1-0akniaryx9xg8mmb08rbd42kwntigfkyk33vt7ac0wrehn58mk-5voo7jfl3kl40yl4cmvf16lgt 10.0.10.4:2377

root@ubuntu:~#

запустить на рабочем узле: docker swarm join --token SWMTKN-1-0akniaryx9xg8mmb08rbd42kwntigfkyk33vt7ac0wrehn58mk-5voo7jfl3kl40yl4cmvf16lgt 10.0.10.4:2377

Ответ принят как подходящий

Чтобы решить эту проблему, мне нужно было открыть соответствующие порты как из экземпляров Docker Worker, так и из экземпляров Docker Manager.

Я обнаружил некоторую информацию, решая этот вопрос,

TCP-порт 2377 — это порт по умолчанию, используемый для связи, поэтому добавьте собственное правило tcp для порта 2377 в группу безопасности aws EC2.

TCP-порт 2376 для безопасного взаимодействия с клиентом Docker. Этот порт необходим для работы Docker Machine. Docker Machine используется для организации хостов Docker.

TCP-порт 2377 Этот порт используется для связи между узлами Docker Swarm или кластера. Его нужно открывать только на узлах менеджера.

TCP и UDP порт 7946 для связи между узлами (обнаружение контейнерной сети).

UDP-порт 4789 для оверлейного сетевого трафика (входная сеть контейнера).

Пожалуйста, обратите внимание: Помимо этих портов, порт 22 (для SSH-трафика) и любые другие порты, необходимые для запуска определенных служб в кластере, должны быть открыты.

Другие вопросы по теме