Docker Swarm 이해하기

Image credit: docker.com

Docker Swarm 이해하기

1. Swarm을 구성하는 이유

단적인 예로 Docker를 이용해서 Zookeeper를 Deploy한다고 생각해보겠다.
AWS 싱글 인스턴스에 Zookeeper를 Deploy 하게 되면
AZ가 죽었을 때는 고사하고, 그 인스턴스에 문제가 되었을땐 하다못해 reboot되는 상황이 생긴다면
서비스 운영에 차질을 주게 된다.
특히 Zookeeper 같은 애플리케이션은 서비스에 큰 영향을 미칠 것이다.

Docker Hub의 Zookeeper Official Image에서도 이와같은 설명을 하고 있다.

Please be aware that setting up multiple servers on a single machine will not create any redundancy.
If something were to happen which caused the machine to die, all of the zookeeper servers would be offline.
Full redundancy requires that each server have its own machine. It must be a completely separate physical server.
Multiple virtual machines on the same physical host are still vulnerable to the complete failure of that host.
Consider using Docker Swarm when running Zookeeper in replicated mode.

2. Docker Swarm이란?

Docker Swarm은 Docker의 클러스터링을 도와주는 이미지이다. Docker Hosts Pool을 단일 가상 Docker host로 전환해준다.
Docker Swarm은 표준 Docker API를 제공하기 때문에
이미 Docker 데몬과 통신하는 모든 툴들은 Swarm을 사용하여 여러 호스트로 확장 할 수 있다.

3. Swarm Cluster 생성 이해하기

위에서 Docker Swarm은 이미지라고 했다. 따라서 Swarm을 구성하기 위해서는 다른 여러 리소스와 마찬가지로 이미지를 땡겨와야한다.
클러스터를 구성할 모든 서버들에 이미지를 설치한 후, Swarm manager와 Docker Swarm을 실행할 노드들을 설정하면 된다.
이때 선행되어야 할 작업들이 있다.

  • 노드들은 Swarm manager와 TCP 통신할 포트를 열어주어야한다.
  • 모든 노들들에 Docker를 설치해야한다.
  • 클러스터의 보안을 위해 TLS 인증을 생성하고 관리해주어야한다.

메뉴얼대로 구성하는 방식은 경험이 많은 관리자나 프로그래머들에게 적합하나,
다른 대안으로는 docker-machine을 통해 클러스터를 구성하는 방법이 있다.

4. Docker Machine이란?

Docker Swarm을 쉽게 구성하는 방법으로 Docker-Machine을 이용하라고 메뉴얼에서는 말하고있다.
그렇다면 Docker Machine이란 무엇일까?
Docker Machine은 가상 호스트에 Docker Engine을 설치하고 docker-machine 명령으로 호스트를 생성과 관리를 할 수 있게 해주는 도구이다.

5. 왜 Docker Machine을 이용할까?

Docker Machine을 사용하면 다양한 Linux 환경에서 여러 개의 원격 Docker 호스트를 프로비저닝 할 수 있다.
또한 Machine에서는 Mac 또는 Windows의 오래된 시스템에서 Docker를 실행할 수 있다.

6. Docker Engine과 Docker Machine의 차이점은?

일반적으로 Docker라고 말하면, Docker 엔진, Docker 데몬으로 구성된 클라이언트 서버 응용 프로그램,
데몬과 상호 작용할 수있는 인터페이스를 지정하는 REST API 및 REST API wrapper를 통해 데몬과 통신하는 명령 줄 인터페이스 (CLI) 클라이언트를 의미한다.
Docker Engine은 CLI를 통해 dockr run image, docker ps 와 같은 Docker 명령어을 허용한다.

Docker Engine

Docker Machine은 Docker Engine이 있는 호스트를 프로비저닝하고 관리하기위한 도구이다.
일반적으로 로컬 시스템에는 Docker Machine을 설치한다.
Docker Machine에는 자체 Command Line 클라이언트인 docker-machine과 Docker Engine 클라이언트인 docker가 있다.

Docker Machine

Swarm을 제대로 이해하기위해서 Docker-Machine과 Docker Engine에 대해서 알아보았다.
다음 포스팅에서는 Docker Docs 기준으로 직접 Swarm을 구성할 예정이다.

위 글은 Docker 공식사이트에서 제공하는 문서기준으로 작성되었습니다.

comments powered by Disqus