프로그래밍/Docker

[Docker] swarm을 알아보자

Lou Park 2022. 6. 1. 14:57

What is a swarm?

Swarm은 여러 swarm mode로 동작하는 Docker 호스트들로 구성되어있다. 그들의 역할은 크게 매니저(manager)와 워커(worker)로 구분되는데, 두 가지 역할을 모두 수행하도록 할 수도 있다. 이들은 swarm에서 각각의 노드(node)가된다. 서비스(service)를 만들때 이 태스크(task)을 수행하려면 어떤 정도의 레플리카의 개수나 네트워크나 저장소 자원등을 필요로 하는지 기술하게 되는데, 이에 따라 태스크를 수행중인 어떤 노드가 망가진다면 서비스 수행이 가능한 다른 노드가 이 일을 맡게 된다. 이렇듯 Docker swarm은 클러스터링과 오케스트레이션을 쉽게 도와준다.

 

Nodes

노드는 swarm에 참여하고 있는 Docker engine이다. 하나 혹은 그 이상의 노드들을 물리적인 컴퓨터 한 대나 클라우드 서버에 띄울 수 있다. 애플리케이션을 swarm에 배포하기 위해서는 서비스 정의를 매니저 노드에 알려주어야한다. 그러면 매니저 노드는 태스크라고 불리는 일의 단위를 워커노드에 보내주게된다.

기본적으로는 매니저 노드도 워커 노드도록 설정되어있다.

 

Services and tasks

서비스는 노드에서 실행되는 태스크의 정의(definition)다. 서비스를 만들때는 어떤 컨테이너 이미지를 사용할지와 실행되는 컨테이너 속에서 어떤 명령어를 수행할지 기술한다. Replicated service모델에서 swarm 매니저는 설정한 규모와 개수에 따라 노드들에 여러 복제된(replicated) 태스크들을 배포한다. Global service는 클러스터의 모든 가능한 노드들 중에 단 하나의 태스크만 실행하도록 한다. 태스크는 일반적으로 우리가 여러 컨테이너를 compose해서 작업을 수행하는 것과 같다. 태스크는 swarm에서 atomic한 하나의  스케줄링 단위이다.

 

 

 

출처 https://docs.docker.com/engine/swarm/key-concepts/