호스트가 아닌 클라우드에서 인프라 구축할 때 방화벽 문제로 노드간 연결되지 않는 상황 발생
즉, 아래와 같은 출력으로 인해 가상 머신 클러스터를 구성할 수 없는 상태임 (aws 에서 docker-machine 생성은 여기 참고)
root@aws01:/home/ubuntu# docker swarm leave
Node left the swarm.
root@aws01:/home/ubuntu# docker swarm join --token SWMTKN-1-67inqm9tz1k8dw5r2izextx7i33m9vz46eqt926zln2vjx1x31-3yclb3lqqhradd7ay7s2u6jue 172.31.24.248:2377
Error response from daemon: Timeout was reached before node joined. The attempt to join the swarm will continue in the background. Use the "docker info" command to see the current swarm status of your node.
무조건 포트가 열려있는지 확인해야함 (vm 이든, host 든 클러스터를 구성할 호스트 OS 에서 방화벽 확인해야 한다.)
또한 overlay 네트워크 사용 시 도커 문서내에서는 7946과 4789 포트 개방을 필수로 하라고 되어 있음
근데 개방해도, 서브넷이 동일하지 않을 경우 호스트에서 vm을 연결한다하더라도 공인 IP 를 사용해야 함
해결방법
- 같은 내부망에 있을 경우
- 방화벽에서 해당 서버의 tcp 2377 포트를 열어준다.
- 같은 내부망에 있지 않을 경우
- advertise-addr을 퍼블릭ip로 설정해준다.
- 방화벽에서 해당 서버의 tcp 2377 포트를 열어준다.
** 실제 AWS 인스턴스의 인바운드 정책에서 2377 포트를 개방해야 한다.
$ docker swarm join --token <TOKEN> <Public IP>:2377
(여기서 서버는 호스트자체를 manager node로 두었음)
'DevOps > Docker' 카테고리의 다른 글
docker container stop 안될 때 또는 docker-compose down 안될 때 (0) | 2019.06.08 |
---|---|
docker swarm 사용 시 manager mode 전환할 때 주의 (0) | 2019.06.08 |
docker-machine 명령어 (0) | 2019.05.29 |
docker swarm 명령어 (0) | 2019.05.22 |
docker 명령어 (0) | 2019.05.22 |