[개념] Docker Swarm

[개념] Docker Swarm

https://docs.docker.com/engine/swarm/

Docker Swarm

docker container를 위한 클러스터링, 스케줄링 툴

여러 개의 서버와 컨테이너 관리를 쉽게

기능 docker engine 통합 관리(docker manager node에서 worker node를 통합 관리) load balancing(worker node 접속 시 round robin 방식으로 worker node의 task를 연결) task 개수 조절 기능(scale) multi-host-networking(overlay network를 통해 task 간 사용할 수 있는 네트워크 제공) 내장 DNS 서버 제공

종류 docker warm mode: manager-node와 worker-node가 한 host에 공존 docker swarm: manager-node와 worker-node를 따로 구성(대규모)

docker swarm mode 물리적 구조

docker swarm mode의 load balancing

- 외부에서 어떤 host에 접근 하더라도 IPVS와 ingress network를 사용하여 worker-node들이 제공하는 모든 task에 접속 가능

Docker Swarm Node

도커나 스웜 모드에서 돌아가는 도커 서버

manager node / worker node

Manager node

클러스터의 상태를 유지(뗏목 합의 알고리즘: 여러 서버 중 일부에 장애가 생겨도 나머지 서버가 정상적인 서비스를 할 수 있도록)

스케줄링 서비스: worker node에게 컨테이너 배포

스웜 모드 제공: docker swarm init

Worker node

하나 이상의 manager node를 가짐

docker service create 로 도커 스웜 실행("service 제공")

# 노드 상태를 drain으로 변경한다. docker node update --availability drain <노드ID> # 노드의 가용성을 확인한다. docker node inspect --pretty <노드ID>

스케줄러가 매니저 노드에게 작업자 노드가 하는 task를 실행시키지 않기 위해서 매니저 노드의 가용성을 drain

스케줄러는 drain 상태의 노드에는 task를 맡기지 않고 active상태의 노드에게만 task 할당

from http://realyun99.tistory.com/77 by ccl(A) rewrite - 2021-09-11 19:01:02