0부터 시작하는 Docker Swarm 공부 - Docker Swarm 환경 & Roling Update

Jaehong Lee·2022년 8월 22일
1
post-thumbnail

1. Docker Swarm 환경

p. 332

  • 지금까지 docker container 는 단일 노드에서 생성하였다. 이제 다중 노드 환경을 구현해 볼 것이다

  • 다중 노드와 로드 밸런서를 사용하여 물리 자원과 트래픽에 대한 부하 분산을 가능하게 하며, 안정적으로 서비스가 가능하게 할 수 있다. 또한, 이를 통해 Scale 조정을 하면, 하나의 노드에 여러 개의 컨테이너가 배포되는 것이 아닌, 각 노드당 하나씩 컨테이너가 생기게 할 수 있다

    • 각 노드는 Ip 가 다르다. 외부 사용자가 접속할 때는 로드 밸런서를 통해 각 서버의 Port 를 입력할 필요 없이 접속한다
  • control node ( manager ) 에서 이 worker 들을 관리한다. 우리는 이 control node 에 Docker Swarm 을 사용할 것 이다

    • Docker Swarm 은 전체 Docker Container 에 대한 조율이 가능하다. 이 Docker Swarm 은 Docker 만을 지원한다
    • 이러한 서비스로는 google 의 gke, openstack 의 Magnum, EKS 등이 있다. 이는 모두 지원하는 Runtime 이 다르다. 이러한 Runtime 들을 모두 지원하는 오케스트레이션 툴에는 K8S 가 있다
  • worker node 들을 cluster 로 묶어서 overlay network 를 형성한다. 이를 통해 manager node 에서 다수의 컨테이너를 생성하라고 명령을 내리면, worker node 들이 컨테이너 개수를 나눠서 각각 생성한다

  • 생성된 컨테이너들은 자동으로 manager node 에 join 이 되게 한다. 이때, 사전에 manager node 에서 발행한 token 을 통해 join 을 하며, join 시 manager node 에서 해당 컨테이너를 관리할 수 있다

    • manager 용 token : 백업과 같은 용도로 manager node 를 늘릴 때 사용한다
    • worker 용 token : worker 가 manager 에 join 할 때 사용한다
  • cluster 를 구현 후 두 개의 Overlay Network 가 생성된다. 하나는 컨테이너 배치용 Overlay Network 이다. 이 Network 에 포함된 컨테이너들은 터널링 없이도 서로 통신이 가능하다

  • 만약, 로드 밸런서가 컨테이너가 없는 worker node 에 외부 사용자의 트래픽을 보내도, overlay network 를 통해 다른 node 에 존재하는 컨테이너에 접속하게 해줄 수 있다. 따라서, cluster 된 node 들 중에 컨테이너가 하나라도 있으면, 사용자가 어느 node 에 접속해도 컨테이너에 접속하게 해주어 서비스를 제공할 수 있다

Docker Swarm 의 단점

  • manager node 는 manager 의 역활과 worker 의 역활을 둘 다 수행한다. 이는 manager node 에 높은 부하를 준다. 따라서, label 을 통해 컨테이너를 생성할 node 를 지정하여 생성해야 한다. 혹은 role 을 지정하여 key ( manager , worker ) 에 따라 컨테이너를 생성할 node 를 지정할 수 있다

    --constraint node.role!=manager

2. Roling Update

p. 333

  • 롤링 업데이트 : 도커 스웜 모드 매니저 노드를 통해 현재 실행 중인 서비스 컨테이너의 업데이트를 노드 단위로 점진적으로 적용하는 것
    • 컨테이너 업데이트를 할 때, 다수의 동작중인 컨테이너가 있다면, 이를 그냥 업데이트 하려면 컨테이너를 내리고, 업데이트된 컨테이너를 올려야 한다. 허나, 컨테이너를 내리면 서비스를 제공하지 못하기에 큰 문제가 생긴다
    • 롤링 업데이트는 한 번에 모든 컨테이너를 내리지 않고, 병렬적으로 일정 개수의 컨테이너를 먼저 내리고, 업데이트된 컨테이너를 올린다. 해당 작업이 끝나면 다음 일정 개수의 컨테이너에 동작을 수행시킨다. 이를 통해 service down time 을 줄일 수 있다

3. 구성할 Node 사양

  • 위와 같이 각 node 를 구성할 것이다
profile
멋진 엔지니어가 될 때까지

1개의 댓글

comment-user-thumbnail
2023년 12월 6일

중간 중간 p. 332 p. 333 이런 표기가 있는데 혹시 어떤 건지 알 수 있을까요?
혹시 책이라면 참고하신 도서명 공유 부탁드립니다 !

답글 달기