on
[개념] 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