[컴] Docker Swarm

도커 스웜
아래 내용은 ref.1 의 내용의 번역이다.

Docker Swarm

여러 docker로 돌아가는 host 들을 하나의 cluster 로 묶어주는 소프트웨어 이다. container 들의 “orchestration” 과 “중앙 cluster 관리”를 가능하게 해준다. 1.11 이전에는 분리된 tool 이었는데 이후 부터 Docker 에 swarm mode 로 존재한다. cluster manager는 모든 docker user 들에게 docker engine 의 설치가 가능하다.

master-slave architecture 는 docker swarm 의 기본을 구성한다. 각 docker cluster 는 적어도 1개의 manager(swarm manager) 가 있고, 임의의 개수의 worker node(swarm worker)로 되어 있다.

실제 사용

docker swarm init 을 하면, cluster 안에 worker node 를 join할 수 있는 command 가 나온다.

$ sudo docker swarm init
Swarm initialized: current node (...) is now a manager

To add a worker to this swarm, run the folling command:

  docker swarm join \
  --token SWMTKN-1-411cdfagevddfsdgkabjlbjkla-rekjkgljksljbkljdbldjlb \
  10.0.2.15:2377  

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

그리고 manager node 를 추가하고 싶다면, docker swarm join-token manager를 하면 해당 command 를 볼 수 있다.

$ sudo docker swarm join-token manager
To add a manager to this swarm, run the following command:

docker swarm join \
--token SWMTKN-1-411cdfagevddfsdgkabjlbjkla-gabjklejklljksljbkljdbldjlb  \
10.0.2.15:2377
  • node list 를 보는법: manager node 에서 docker node ls 를 하면 된다.
  • node 를 삭제 하는 법: 해당 node 에 가서 docker swarm leave, manager node 는 --force 를 사용해야 한다.

swarm manager

  • cluster들 의 관리
  • task들의 위임

swarm worker

swarm worker 는 execution 을 떠안는다. container application 들은 worker node 로 나눠진다. 이 worker node가 service라 부른다.

  • Service 는 cluster 에서 수행되어지는 task 들을 정의하는 추상화된 구조
  • 각 service 는 “개별 tasks들의 집합” 이다.
  • container 가 cluster 에 있는 node 들이 되는데, node 하나당 하나의 task 가 처리된다.
  • 서비스 생성할 때, container 가 어떤 image 를 base 로 만들어지는지와, 어떤 command 들을 run할 것인지 명시하게 된다.

2개의 모드를 지원, replicated service, global service 2개를 지원한다. 그 모드에는 swarm service 들이 정의된다.

Replicated Service:

  • replicated service는 user가 정의한 replication 들의 수 위에서 돌아가는 task 이다.
  • 각 replication 은 service 에 정의된 Docker container 의 instance 이다.
  • Replicated service 는 user들이 추가적인 replication 들을 만들어서 확정할 수 있다.
  • 예를들어, NGINX 같은 web server 는 2개, 4개 또는 100개의 instance들의 분리된 command line 을 이용해서 필요할 때 scale 할 수 있다.

Global Servcies:

  • service가 global mode 로 동작하고 있으면, cluster내의 가능한 node 는 해당하는 service에 대한 task를 시작한다.
  • 새로운 node가 cluster에 추가되면, swarm manager 즉시 그 node에 task 를 할당한다.
  • Global service들은 예를 들면, application 들을 monitoring 거나 anti-virus 프로그램등에 적합하다.

Docker Swarm 의 application 의 주요 영역은 부하분산(load distribution) 이다. swarm mode 에서 Docker 는 load balancing 기능들을 가지고 있다. 예를 들어, 만약 nginx 4 개를 구동하면, Docker는 들어오는 request 들을 영리하게 4개에 잘 나눠 준다.

References

  1. Docker orchestration with Swarm and Compose - IONOS

댓글 없음:

댓글 쓰기