2019.05.06 - Docker Swarm

Docker Swarm은 서버 클러스터링 솔루션.

- 단일 유닛으로서 다른 노드(PC)들을 orchestrate하고 각각의 라이프 사이클을 관리할 수 있도록 한다.
- 서버가 한, 두개가 아닐 때 이들을 통합적으로 관리해주는 툴이 필요한데 도커 스웜이 하는 역할이 바로 그 것.
- 여러 툴이 있으며 그 중 유명한 것으로는 쿠버네티스가 있다.

swarm에는 manager와 worker가 있다.
manager는 authority를 가질 수 있는 config가 존재하며 각각의 매니저들은 다른 매니저와의 혼선이 없도록 관리 한다.

Raft DB
---------------------------------------
Manager     Manager     Manager
---------------------------------------
Worker   Worker   Worker   Worker   Worker 


이러한 구조로 되어있는데, Manager는 자신이 워커인 동시에 매니저 역할을 할 수도 있다.
swarm manager 안에는 여러 개의 task가 존재하고 각각의 task는 컨테이너를 실행한다.


$ docker swarm init
# docker swarm init을 하면 swarm 서비스를 시작할 수 있다.

$ docker service create IMAGE_NAME

$ docker service update SERVICE_NAME --replicas 3
# 컨테이너가 3개가 만들어지고, 그 중 하나를 docker container rm -f NAME 커맨드를 입력하더라도 service는 이내 새로운 녀석을 만들어 복구시킨다.

# Swarm에서 service는 docker container run을 대체한다.
# Docker service는 docker container 여러 개를 묶어 놓은 느낌이다.


댓글

이 블로그의 인기 게시물

로컬 Tomcat 서버 실행속도 개선

2019.05.23 - SQLAlchemy 의 객체 상태 관리 (expire, refresh, flush, commit) 에 관한 이해

2020.02.17 Python의 multiprocessing 중 Pool.map(), chunksize에 관한 내용