Docker swarm 구성 따라하기 #1

Docker 버전이 1.12로 올라가면서 swarm이 Docker Engine에 통합되었다.
이제 Docker만 설치되어 있으면 바로 swarm을 통해 추가적인 설치 과정없이 container orchestration을 할 수 있다.

Kubernetes, Mesos 등 타 orchestration 툴에 비해 설치 과정이 단순하여 소규모 container orchestration을 하는데 최적의 툴이 아닌가 생각해 본다.
1.12로 버전이 올라가면서 container orchestration에 꼭 필요한 기능인 Scaling, Multi-host networking, Load balancing, Service discovery 등 orchestration에 모두 구현되어서 간편하게 docker container를 배포하고 관리할 수 있게 되었다.

무엇보다도 docker에서 직접 만드니 안정성 뿐만 아니라 다양한 기능 추가가 계속 진행되어 발전된 모습을 보게될 것 같다.


먼저 Docker swarm을 구성하려면 아래의 요건이 필요하다.

  • 네트워크에 연결된 3대의 머신 : 머신은 PC에서 VMware나 Virtualbox를 ㅣ용하거나 AWS나 GCP 등Cloud에서 생성하여도 된다. 또한 Virtual Machine 뿐만 아니라 실제 물리서버에 설치하여도 가능하다. 해당 머신들로 각각의 node를 구성하게 된다.
  • Docker Engine 1.12 설치
  • manager 머신에 사용할 ip 주소
  • swarm에서 사용할 포트 오픈
    • TCP port 2377 : cluster management 통신에 사용
    • TCP / UDP port 7946 : node간의 통신에 사용
    • TCP / UDP port 4789 : overlay network 트래픽에 사용

여기에서는 Google Compute Engine(GCE)에 Docker swarm을 설치하여 간단한 서비스를 실행하는 부분까지 진행해 본다.

Docker swarm 구성도

VM 생성

GCE에서 swarm 구성에 필요한 머신 3대를 생성한다.

아래와 같이 3대의 머신이 생성되었다.

Google Cloud SDK 명령으로 확인 시 아래와 같이 모두 잘 생성되었다.

gcloud compute instances list

swarm 생성

gcloud compute ssh 명령으로 manager1 머신에 접속한다.

gcloud compute ssh manager1

아래 명령으로 swarm을 초기화(생성) 한다.

docker swarm init --advertise-addr <MANAGER-IP>

docker info로 swarm mode가 생성되었는지 확인한다.

docker info

아래와 같이 Swarm이 정상적으로 Active 된 것을 확인할 수 있으며 swarm 관련 여러 정보들을 확인할 수 있다ㅏ.

worker를 설정하기 전에 worker 설정에 필요한 명령을 확인한다.
manager1 머신에서 아래 명령을 실행한다

docker swarm join-token worker

worker1에 접속한다.

gcloud compute ssh worker1

해당 머신을 swarm의 worker로 등록한다.

docker swarm join \  
    --token SWMTKN-1-62ecjm7y6664gi80edojyocv4m2jl6ehrowpjjx4jc41ph0x3b-d4oxeswwlevj22dtfjlo1j6qv \
    10.140.0.2:2377

worker2 머신도 worker1과 동일하게 설정한다.

docker info로 Swarm이 정상적으로 Active되었는지 확인한다.

마지막으로 swarm node들이 잘 등록되었는지 확인한다.

docker node ls

swarmDocker Engine에 통합되면서 설치 과정이 무척 단순해졌다. 어떻게 보면 설치라고 하기보다는 swarm mode를 active 하기 위한 설정이라고 하는 편이 더 정확할 듯하다.

설정하는 단계는 단순하지만 swarm이 가지고 있는 기능들만큼은 타 container orchestration 툴에 비해 이제는 부족하지 않다.
또한 단순할수록 운영 상의 관점에서 봤을 때에도 장점이 많을 것으로 보여진다.

이제는 container orchestration의 설치 과정이나 설정 등이 단순화되므로 보다 더 Application을 어떻게 구성할 지에 대한 문제에 더 집중할 수 있게 되었다.

Martin

Read more posts by this author.