본문 바로가기

devops

Docker Swarm


Server Orchestration


오케스트레이션은 마이크로 서비스들을 컨테이너로 만들어 배포할 수 있도록 도와주며, 다음과 같은 다양한 기능들을 통해 서비스를 관리할 수 있게 도와줍니다.

  • 컨테이너 자동 배포 / 배치 및 복제
  • 컨테이너 그룹에 대한 로드 밸런싱
  • 컨테이너 장애 복구
  • 클러스터 외부에 서비스 노출
  • 스케일 아웃(오토 스케일링)
  • 컨테이너 서비스 간의 인터페이스를 통한 연결 및 네트워크 포트 노출 제어

따라서 서버 오케스트레이션을 간단하게 정의하면 여러 대의 서버와 여러 개의 서비스를 편리하게 관리해주는 작업이라고 할 수 있습니다.

 

오케스트레이션 툴의 종류로는 Kubernetes, Mesos, Docker swarm, AWS ECS 등이 있으며, 각각 특정 상황에서의 장점을 가지고 있습니다.

  • 적당한 규모 : Docker swarm
  • 큰 규모의 클러스터 : Kubernetes
  • AWS : ECS

해당 포스팅은 적당한 규모의 클러스터 구성으로 사용하기 위한 Docker swarm을 다룹니다.

Docker Swarm


도커 스웜은 도커에 내장되어 있는 오케스트레이션 툴 입니다. 단순한 기능들만 구현되어 있어 세부적인 컨트롤은 어렵지만, 도커 명령어와 compose를 그대로 사용할 수 있어서 다른 툴에 비해 압도적으로 쉽고 편리합니다. 2015년 1.0 버전에서는 1,000개의 노드에 50,000개 컨테이너도 문제 없이 테스트하여 안정성이 검증되었습니다.

 

도커 스웜에는 다음과 같은 용어들을 사용합니다.

  • 노드 : 클러스터에 속한 도커 서버 단위
    • 매니저 노드 : 스웜 클러스터를 관리하는 노드, 스웜 명령어를 실행할 수 있으며, 워커 노드처럼도 사용
    • 워커 노드 : 매니저 노드의 명령을 받아 컨테이너를 생성하고 상태를 체크하는 노드
  • 서비스 : 기본적인 배포 단위, 하나의 이미지를 기반으로 생성하고 기동할 컨테이너 수, 설정 등을 정의한 것 입니다.
  • 테스크 : 컨테이너 배포 단위, 정의된 하나의 서비스를 가지고 여러개의 테스크를 실행할 수 있습니다. 즉, 앞서 설정한 컨테이너 수에 맞게 기동 되는것이 테스크입니다. 테스크는 각각의 워커에 할당되는데, 이 때 고유의 일련 번호를 갖게 되며 이를 슬롯이라 부릅니다.

 

도커 스웜이 제공하는 기능은 다음과 같습니다.

  • 스케줄링 : 

 

How to


 

 

더보기

 

'devops' 카테고리의 다른 글

[Redis] Redis Sentinel + HAproxy  (0) 2021.08.08
[Docker] Jenkins & fabric  (0) 2021.07.25
MQTT/AMQP  (0) 2021.06.18
Volatile / Lock  (0) 2021.06.17
ASP.Net Core에서 NSwag 사용하기  (0) 2021.02.14