3.1 도커 스웜을 사용하는 이유

여러 대의 서버를 손쉽게 하나의 자원 풀로 만들기 위해 사용. 클러스터를 만들 때 발생하는 아래의 이슈들을 도커스웜을 통해 해결.

  • 새로운 서버나 컨테이너가 추가됐을 때 이를 발견
  • 어떤 서버에 컨테이너를 할당할 것인가에 대한 스케줄러와 로드밸런서
  • 클러스터 내의 서버가 다운됐을 때 고가용성을 어떻게 보장할지

3.2 도커 스웜과 도커 스웜 모드

  • 도커 버전 1.6 이후부터 사용할 수 있는 컨테이너로서의 스웜(도커 스웜)
    <-> 도커 버전 1.12 이후부터 사용할 수 있는 도커 스웜 모드(스웜 모드)
  • 도커스웜은 도커를 제어하기 위한 에이전트가 컨테이너로서 존재하며 분산 콘테이너 또한 외부에 별도로 존재해야 함.
    <-> 스웜 모드는 에이전트가 도커 자체에 내장돼 있어 이를 별도로 설치할 필요가 없으며, 외부 분산 코디네이터를 설치할 필요도 없음.
    (스웜 모드가 스웜에 비해 설치와 사용이 더욱 쉽고 간편)
  • 도커 스웜은 여러 대의 도커 서버를 하나의 지점에서 사용하도록 단일 접근점을 제공하는데 초점을 둠.
    <-> 스웜모드는 웹 서비스 컨테이를 다루기 위한 클러스터링 기능에 초점을 둠.
  • 도커 스웜은 doker run, docker ps 등 일반적인 명령어로 클러스터의 서버를 제어하고 관리할 수 있는 기능을 제공함.
    <-> 스웜모드는 같은 컨테이너를 동시에 여러 개 생성해 필요에 따라 유동적으로 컨테이너의 수를 조절할 수 있으며, 컨테이너로의 연결을 분산하는 로드밸런싱 기능을 자체적으로 지원함.

3.3 도커 스웜 모드

3.3.1 도커 스웜 모드의 구조
3.3.2 도커 스웜 모드 클러스터 구축

//--advertise-addr에 다른 도커 서버가 매니저 노드에 접근하기 위한 IP주소 입력 (매니저 노드가 될 서버에서 입력)
docker swarm init --advertise-addr 192.168.0.100

//토큰을 사용해 워커 노드를 추가 (워커 노드로 사용할 각 서버에서 입력)
docker swarm join --token [token~] [ip~]

//매니저 노드에서 도커 서버가 정상적으로 클러스터에 추가됐는지 확인
docker node ls

//새로운 매니저 노드를 추가하기 위한 토큰 확인
docker swarm join-token manager

//워커 노드를 추가하기 위한 토큰 확인
docker swarm join-token worker

//토큰 갱신 (매니저 노드에서만 실행 가능)
docker swarm join-token --rotate manager

//워커 노드 삭제 (해당 워커 노드에서 실행) 
docker swarm leave

//정지된 워커노드를 매니저 노드에서 직접 삭제
docker swarm rm node01

//매니저 노드를 삭제하려면 --force 필요
docker swarm leave --force

//워커 노드를 매니저 노드로 변경
docker node promote swarm-worker1

//매니저 노드를 워커 노드로 변경
docker node demote swarm-worker1


3.3.3 스웜 모드 서비스

스웜 모드에서 제어하는 단위는 컨테이너가 아닌 서비스. 서비스는 같은 이미지에서 생성된 컨테이너의 집합. 서비스 내에 컨테이너는 1개 이상 존재할 수 있으며, 각 워커 노드와 매니저 노드에 할당됨. (≒태스크(Task))

3.3.3.1 스웜 모드 서비스 개념
3.3.3.2 서비스 생성
3.3.3.3 스웜 모드의 서비스 장애 복구
3.3.3.4 서비스 롤링 업데이트
3.3.3.5 도커 스웜 네트워크
3.3.3.6 서비스 디스커버리
3.3.3.7 스웜 모드 볼륨

3.3.4 도커 스웜 모드 노드 다루기

3.4 도커스웜

3.4.1 도커 스웜과 스웜 모드의 차이점
3.4.2 도커 스웜 클러스터 구축
3.4.3 도커 스웜 사용
3.4.4 도커 스웜 스케쥴러

+ Recent posts