Docker swarm
Docker swarm.
Docker Version 이 1.12 으로 올라가면서 swarm 이 Docker Engine 에 통합되었다고 한다. 즉 Docker 만 설치되어 있으면 추가 설치 없이 swarm 을 통해 orchestration 을 할 수 있다.
다른 orchestration tools 에 비해 Docker Engine 과 통합된 swarm 은 설치과정이 단순하며 orchestration 에 필요한 Scailng, Multi-Host Networking, Load Balancing, Service Discovery 등 이 구현되어 있어 Docker Container 을 보다 쉽게 관리하고 배포할 수 있다.
시작하기 앞서 설정을 몇가지 하자.
TCP port 2377 for cluster management communications / cluster 관리에 사용
TCP and UDP port 7946 for communication among nodes / Node 간 통신에 사용
TCP and UDP port 4789 for overlay network traffic / 가상의 컴퓨터 네트워크용 (오버레이 네트워크)
해당 포트가 열려있어야 이 글을 보고 따라올 수 있을 것이다. 이 글은 # systemctl stop firewalld 를 통해 방화벽을 내리고 진행했다.
또한 3개의 노드를 통해 구축을 진행하며 필자의 환경은 다음과 같다.
manager - 192.168.10.121
worker 1 - 192.168.10.122worker 2 - 192.168.10.123
첫번째로 manager 노드에서 진행한다.
# docker swarm init --advertise-addr 192.168.10.121
그 다음 manager 노드에서 swarm이 Active 되었는지 확인하자.
# docker info
많은 정보를 담고있는데 도중 "Swarm: active" 를 확인하자.
해당 부분 아래쪽에 Managers 와 Nodes 가 둘 다 1인데 이 부분은 나중에 Node 를 join 할 때 증가할 것이다.
이제 node를 join 하기에 앞서 manager 노드에서 join 토큰을 확인하자.
# docker swarm join-token worker
만약, worker 가 아닌 manager 을 추가하려면 다음과 같이 명령어를 입력한 뒤 join 과정은 worker 와 같다.
# docker swarm join-token manager
명령어가 잘 실행되면 위 사진처럼 나올텐데, docker 부터 ~:2377 까지 모조리 복사하여 worker1, worker2 에서 실행한다.
해당 화면처럼 worker1, worker2 에서 명령어를 실행했는데 안된다면 방화벽 설정 확인하자.
이 글 서문에 포트 설명이 간략히 나와있을 것이다.
아무런 문제가 없다면 위 사진처럼 짦막하게 성공했다고 할 것이고,
manager node 에서 swarm 이 정상적으로 join 했는지 확인하자.
# docker node ls
manager, worker1, worker2 총 3개의 node 가 있어야 이 글을 따라왔을 때 정상이다.
여기까지가 swarm 의 설치이다.
Docker Engine 으로 통합된 후 swarm 은 설치보단 활성화의 개념같다.
swarm 의 기능들은 다음에 포스팅 하겠다.