1. 개요

<Docker 가상 환경 구축 입문>의 <Chapter 9-9. 서비스 스케일링>를 읽고 정리한 내용입니다.


2. 서비스 스케일링

  • Scale out이란 서버의 수를 늘려 전체의 처리 능력을 향상시키는 것.
  • 서버 부하가 높아진 경우, Swarm 모드에서는 서비스의 레플리카 수를 조정하여, 각 노드의 자원을 적절하게 사용할 수 있음.
  • docker service scale이라는 명령어로 Docker Swarm에서의 scale out/in을 할 수 있음.

3. 서비스 스케일링 예제 

  • docker service scale 명령어로는 레플리카 개수를 증가시키거나 감소시킬 수 있음.
  • 노드 개수를 늘리거나 노드 스펙이 향상된 경우, 각 노드의 레플리카 수를 증가시켜 노드의 자원을 효율적으로 사용할 수 있음.
  • 레플리카 수가 2개인 nginx 서비스 생성
    $ docker service create --name web --replicas 2 nginx
    sveg9ogys5h2rdp62427408wr
    overall progress: 2 out of 2 tasks 
    1/2: running   [==================================================>] 
    2/2: running   [==================================================>] 
    verify: Service converged 
    
    $ docker service ls
    ID                  NAME                MODE                REPLICAS            IMAGE               PORTS      
    sveg9ogys5h2        web                 replicated          2/2                 nginx:latest  
  • 생성한 서비스의 레플리카 수를 4개로 스케일 아웃
    $ docker service scale web=4
    web scaled to 4
    overall progress: 4 out of 4 tasks 
    1/4: running   [==================================================>] 
    2/4: running   [==================================================>] 
    3/4: running   [==================================================>] 
    4/4: running   [==================================================>] 
    verify: Service converged 
    
    $ docker service ls
    ID                  NAME                MODE                REPLICAS            IMAGE               PORTS       
    sveg9ogys5h2        web                 replicated          4/4                 nginx:latest
  • 반대로, 레플리카 수를 3개로 스케일 인
    $ docker service scale web=3
    web scaled to 3
    overall progress: 3 out of 3 tasks 
    1/3: running   [==================================================>] 
    2/3: running   [==================================================>] 
    3/3: running   [==================================================>] 
    verify: Service converged 
    
    $ docker service ls
    ID                  NAME                MODE                REPLICAS            IMAGE               PORTS     
    sveg9ogys5h2        web                 replicated          3/3                 nginx:latest