만자의 개발일지

[Docker] Docker Swarm이란 본문

Docker

[Docker] Docker Swarm이란

박만자 2022. 6. 14. 01:14

Container Orchestration

컨테이너 오케스트레이션이란 컨테이너의 배포, 관리, 확장, 네트워킹을 자동화하는 것을 말합니다.

컨테이너 오케스트레이션을 사용해 다음과 같은 작업을 자동화하고 관리할 수 있습니다.

  • 프로비저닝 및 배포
  • 구성 및 일정 조정
  • 리소스 할당
  • 컨테이너 가용성
  • 컨테이너 스케일링 또는 제거
  • 로드 밸런싱 및 트래픽 라우팅
  • 컨테이너 모니터링
  • 실행된 컨테이너를 기반으로 애플리케이션 설정
  • 컨테이너 간 보안유지

Kubernetes, AWS ECS, Apache Mesos, Docker Swarm등 다양한 컨테이너 오케스트레이션 도구들이 있습니다.

그중에서 오늘은 도커 스웜에 대해서 알아보도록 하겠습니다.

 

Docker Swarm

보통의 도커 사용법은 하나의 호스트를 기준으로 합니다. docker ps, run, create등과 같은 명령어들은 모두 하나의 컨테이너를 대상으로 실행됩니다.

그러나 실제로 도커를 운영 환경에 적용한다고 한다면 하나의 호스트에 도커를 설치해 운영하는 것은 조금 벅찬 일일 수도 있습니다.

예를 들어 하나의 호스트에서 도커를 설치해 사용하다가 CPU나 메모리, 디스크 같은 리소스가 부족해지면 어떻게 해결할까요?

 

가장 원시적인 방법으로는 더 좋은 성능의 서버를 산다가 될 수 있겠지만 리소스가 부족할 때마다 새로운 서버를 구매하는 것은 비용적인 부담이 매우 클 것입니다.

따라서 이를 해결하기 위해 가장 많이 사용되는 방법은 여러 대의 서버를 하나의 클러스터로 묶어 리소스를 병렬로 확장하는 것입니다.

 

Docker Swarm

도커 스웜은 이처럼 서로다른 호스트에 있는 여러 대의 컨테이너를 하나의 묶어 마치 하나의 호스트인 것처럼 사용할 수 있도록 도와주는 컨테이너 오케스트레이션 도구입니다.

 

도커 스웜은 다음과 같은 구조로 이루어져있습니다.

  • 분산 코디네이터(Distributed Coordinator)
    • 여러 개의 도커 서버를 하나의 클러스터로 구성하기 위해 각종 정보를 저장하고 동기화하는 역할을 한다.
  • 에이전트
    • 각 서버를 제어하는 역할을 한다.
  • 워커 노드
    • 실제 컨테이너가 생성되고 관리되는 도커 서버이다.
    • 워커 노드는 없을 수도 있다.
  • 매니저 노드
    • 클러스터 내의 워커 노드를 관리하기 위한 도커 서버이다.
    • 매니저 노드는 워커 노드의 역할도 포함하고있다.
    • 매니저 노드는 무조건 1개 이상 존재해야 한다.

 

Swarm Classic VS Swarm Mode

도커 스웜에는 두 가지 종류가 있습니다. 바로 스웜 클래식과 스웜 모드 입니다. 

스웜 클래식과 스웜 모드의 가장 큰 차이점은 바로 그 목적에 있습니다.

스웜 클래식은 여러 대의 도커 서버를 하나의 지점에서 사용할 수 있도록 단일 접근점을 제공한다면 스웜 모드는 마이크로서비스 아키텍처의 컨테이너를 다루기 위한 클러스터링 기능에 초점을 맞추고 있습니다.

스웜 클래식과 스웜 모드의 다른 차이점은 다음과 같습니다.

  • 스웜 클래식
    • 도커 버전 1.6 이후부터 사용할 수 있다.
    • docker run, docker ps 등 일반적인 도커 명령어와 도커 API로 클러스터의 서버를 제어하고 관리할 수 있는 기능을 제공한다.
    • 분산 코디네이터, 에이전트 등을 별도로 실행해야 한다.
  • 스웜 모드
    • 도커 버전 1.12 이후부터 사용할 수 있다.
    • 같은 컨테이너를 여러 개 생성해 필요에 따라 유동적으로 컨테이너의 수를 조절할 수 있으며, 컨테이너로의 연결을 분산하는 로드밸런싱 기능을 자체적으로 지원한다.
    • 분산 코디네이터, 에이전트 등이 모두 도커 엔진 자체에 내장되어있디.

개발하는 서비스의 특성에 따라 적절한 것을 선택하여 사용하면 되지만, 스웜 모드가 서비스 학장성과 안정성 등 여러 측면에서 스웜 클래식보다 뛰어나기 때문에 일반적으로 스웜 모드를 더 많이 사용합니다.

 

참고

Comments