아래 내용은 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개에 잘 나눠 준다.
댓글 없음:
댓글 쓰기