CodeGym /행동 /Docker SELF /서비스 확장

서비스 확장

Docker SELF
레벨 16 , 레슨 2
사용 가능

8.1 명령어 docker compose scale

서비스 스케일링은 동일한 서비스를 실행하는 컨테이너 인스턴스의 수를 늘리거나 줄여서 부하를 관리하고 애플리케이션의 장애 내성을 보장하는 프로세스야. Docker Compose에서는 서비스 스케일링을 위해 이전 버전에서는 docker compose scale 명령어를, 새로운 버전에서는 --scale 파라미터를 사용해.

스케일링의 주요 개념:

  1. 확장성: 현재 부하에 따라 쉽게 서비스 인스턴스 수를 늘리거나 줄일 수 있는 능력.
  2. 장애 내성: 여러 서비스 인스턴스를 실행하면 한 인스턴스가 실패하더라도 전체 서비스가 중단되지 않아.
  3. 부하 분산: 여러 서비스 인스턴스 간 부하를 분산시켜 성능을 최적화.

docker compose scale 명령어 사용법

명령어 문법:


docker compose scale SERVICE=NUM

여기서:

  • SERVICE: 스케일링하려는 서비스 이름.
  • NUM: 실행해야 할 인스턴스 수.

사용 예시:

compose.yaml 파일에 web 서비스 정의가 있다고 가정해 보자.

Yaml

version: '3.8'

services:
  web:
    image: nginx:latest
    ports:
      - "80:80"

web 서비스를 3개의 인스턴스로 실행하려면 다음 명령어를 사용해:

Terminal

docker compose scale web=3

참고: docker compose scale 명령어를 실행하기 전에 docker compose up 명령어를 사용해 서비스를 실행했는지 확인해.

새로운 버전에서 --scale 파라미터 사용

새로운 Docker Compose 버전에서는 docker compose scale 명령어 대신 --scale 파라미터와 up 명령어를 함께 사용해.

Terminal

docker compose up --scale web=3

이 접근 방식이 선호되는 이유는 서비스를 실행하면서 동시에 스케일링할 수 있기 때문이야.

8.2 실습 예제

예제 1: 웹 서버 확장

compose.yaml 파일을 만드세요:

Yaml

version: '3.8'

services:
  web:
    image: nginx:latest
    ports:
      - "80-90:80"

서비스를 실행하고 인스턴스를 3개로 확장하세요:

Terminal

docker compose up --scale web=3

이제 80-90 포트 범위에서 작동하는 Nginx 웹 서버 인스턴스 3개가 생깁니다.

중요! 서비스가 여러 인스턴스로 확장될 경우 포트 범위를 지정해야 합니다, 예를 들어: "80-90:80". 이것은 호스트 머신에서 10개의 포트를 "예약"합니다. 서비스 복제본을 추가하면 해당 범위의 포트가 할당됩니다. 그렇지 않으면 포트가 무작위로 선택되어 복제본에 접근할 수 없게 됩니다.

예제 2: 데이터베이스를 포함한 확장

compose.yaml 파일을 만드세요:

Yaml

version: '3.8'

services:
  web:
    image: nginx:latest
    ports:
      - "80-90:80"
    depends_on:
      - db

  db:
    image: postgres:latest
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password

web 서비스를 4개 인스턴스로 확장하고 실행하세요:

Terminal

docker compose up --scale web=4

이제 PostgreSQL 데이터베이스 하나와 함께 작동하는 Nginx 웹 서버 인스턴스 4개가 생깁니다.

8.3 스케일링 가능한 서비스 관리

서비스를 스케일링한 후에는 Docker Compose 명령어를 사용하여 인스턴스를 관리할 수 있어.

실행 중인 컨테이너 보기

docker compose ps 명령어를 사용하여 모든 실행 중인 컨테이너를 볼 수 있어:

Terminal

docker compose ps

스케일링 가능한 서비스 정지 및 삭제

모든 서비스 인스턴스를 정지하고 삭제하려면 docker compose down 명령어를 사용해:

Terminal

docker compose down

팁과 권장 사항:

  1. 로드 밸런싱: 여러 서비스 인스턴스 간에 트래픽을 분배하려면 로드 밸런서를 사용해. 예를 들어, NginxHAProxy를 사용할 수 있어.
  2. 데이터 저장: 스케일링 가능한 서비스가 생성하는 데이터를 보존하려면, 데이터를 volume이나 외부 저장소에 저장하여 컨테이너를 정지하거나 삭제할 때 데이터 손실을 방지해야 해.
  3. 모니터링: PrometheusGrafana 같은 모니터링 도구를 사용하여 스케일링 가능한 서비스의 성능과 상태를 추적할 수 있어.
  4. 자동 스케일링: Kubernetes 또는 Docker Swarm과 같은 오케스트레이터를 사용하여 부하에 따라 서비스를 자동으로 스케일링하는 것을 고려해 봐.
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION