본문 바로가기

IT

[Docker] Docker Swarm 이란?

Docker Swarm 이란?


1. Docker Swarm?

Docker swarm은 Docker에서 제공하는 Container orchestration 기능입니다.

2. Why Docker Swarm?

Docker Swarm은 Docker 1.12 버전부터는 아예 내장되어 있기 때문에 Docker 설치 이후에 별도 설치 작업이 필요 없으며, Docker 기반으로 구축된 만큼 Docker container 기반 애플리케이션을 개발할 때 Docker와 호환성이 가장 높은 편입니다. 또한, 단독 서버에서 구축이 가능하며 Kubernetes, Apache Mesos 등 다른 Container orchestration 도구에 비해 클러스터 및 서비스 세팅 난이도가 낮은 편입니다.

3. 주요 용어

Docker Swarm 기능에 대해 알기 전에 주요 용어부터 간략하게 짚고 넘어가겠습니다.

  • Node
    출처: https://docs.docker.com/engine/swarm/how-swarm-mode-works/nodes/
    • node란, docker swarm 클러스터에 포함 된 docker engine instance 각각을 의미하고, manager / worker node 가 있습니다.
    • Manager node
      • service를 정의하고, worker node에게 task를 부여합니다.
      • Container Orchestration 역할을 담당하고 있습니다.
      • Manager node에서도 task를 수행할 수 있지만 클러스터 관리에 따른 부하 분산을 위해 worker node에 할당하는 편이 일반적입니다.
    • Worker node
      • manager node로부터 task를 받아 수행하는 역할을 수행합니다.
  • Stack
    • Stack은 service들의 묶음을 의미합니다.
    • Docker Swarm은 Stack 단위로 service 일괄 배포를 수행할 수 있습니다.
  • Service
    • manager / worker node 에서 수행되는 task들의 정의를 의미합니다. task에는 docker container 구동에 필요한 docker image, command, replica set 정보 등이 포함될 수 있습니다.
  • Task
    • Swarm 내에서 docker container 를 구동하는 swarm 스케줄링 단위입니다.
    • Manager node에서 임의 node에 할당 된 task는 구동에 실패하는 것 외에는 다른 node로 이동이 불가능합니다.

4. 주요 기능

Docker 공식 페이지에 소개된 기능 중 일부 주요 기능들을 소개하겠습니다.

  • Load balancing
    • Swarm mode는 내부 DNS 구성을 통해 각 service에 DNS를 할당하여 DNS명 기반으로 load balancing을 수행할 수 있습니다.
  • Scaling
    • 사용자가 service scale을 조정 시 swarm manager가 자동으로 각 service에 대한 task를 자동으로 추가 및 삭제합니다.
  • Multi-host networking
    • overlay network를 통해 service들 간 network 를 공유시킬 수 있다. 즉, 동일 network에 소속된 각 service 들은 물리적으로 다른 서버에서 구동되어도 통신할 수 있는 상태가 됩니다.
  • Service discovery
    • 각 service들은 swarm에서 service명을 기반으로 DNS를 할당받고, 동일한 service명을 가진 container들끼리는 load balancing이 적용됩니다.
  • Rolling updates
    • Service가 업데이트 될 때 swarm manager에서 자체적으로 node 별로 배포 시간차를 두어 애플리케이션 구동에 장애를 최소화합니다.
    • 만약 배포 중 오류 발생 시, 자동으로 이전 버전으로 롤백을 진행합니다.

연관 게시글

[Docker] Docker 란?

 

[Docker] Docker 란?

1. Docker? Docker는 Container를 활용하여 어플리케이션을 개발 및 배포, 운영할 수 있는 오픈소스 기술입니다. Docker는 multi-platform을 지원하여 Linux, Windows, Mac OS 모두에서 동작합니다. 2. Why Docker? Containe

brightchords.tistory.com

[Container] Container Orchestration

 

[Container] Container Orchestration

1. Container Orchestration (컨테이너 오케스트레이션)? Container Orchestration은 독립적으로 구성되어 있는 각 Container 들의 프로비저닝 및 배포, 네트워크 구성, 스케일링, 생명주기 관리 등을 체계화한 것

brightchords.tistory.com


참조

'IT' 카테고리의 다른 글

[GCP] 결제 계정 관리  (2) 2024.02.24
[GCP] Google Cloud Platform  (0) 2024.02.23
[Docker] Docker 란?  (0) 2024.02.20
[Container] Container Orchestration  (0) 2024.02.19
[Container] Container 란?  (0) 2024.02.18