본문 바로가기
DevOps/Docker

8. 도커 스웜: 컨테이너 클러스터링 도구 (소개, 튜토리얼)

by 잉크드 2023. 7. 28.
반응형

도커 스웜 소개

도커 스웜은 도커 엔진과 함께 제공되는 클러스터링과 스케줄링을 위한 도구입니다. 여러 개의 도커 호스트를 하나의 가상 호스트로 보이게 만들어 서버 그룹의 리소스를 효과적으로 활용할 수 있습니다. 도커 스웜을 사용하면 서비스에 대한 접근을 자동으로 로드 밸런싱하고, 컨테이너를 다른 도커 호스트로 쉽게 이동시킬 수 있습니다. 이는 효율적인 리소스 관리를 가능하게 하며, 서비스 중단 시간 없이 애플리케이션 업데이트와 유지 보수를 가능하게 합니다.

도커 스웜 튜토리얼

1. 도커 스웜 초기화

도커가 설치된 환경에서 아래 명령어를 입력하여 도커 스웜을 초기화합니다. 해당 명령어를 실행한 호스트는 자동적으로 매니저 노드로 지정됩니다.

docker swarm init

표시한 부분의 명령어를 워커 노드가 될 호스트에서 입력하여, 도커 스웜에 가입할 수 있습니다.

2. 도커 스웜에 워커 노드 추가

정상적으로 추가되었는지 확인하기 위해서 매니저 노드에서 아래 명령어를 입력합니다.

docker node ls

매니저 노드 본인과 추가된 워커 노드를 확인할 수 있습니다.

3. 서비스 생성

이제 서비스를 생성할 차례입니다. 서비스는 클러스터에서 실행되는 작업의 그룹을 뜻합니다. 같은 역할을 하는 도커의 묶음이라고 설명할 수도 있겠네요.

docker service create --name webserver --replicas 3 -p 80:80 nginx
docker service ls

이 명령어를 풀어서 설명해드리겠습니다.

  • --name webserver: 생성되는 서비스의 이름을 'webserver'로 지정합니다.
  • --replicas 3: 'webserver' 서비스의 복제본 수를 3개로 지정합니다. 이렇게 하면 Swarm이 3개의 'nginx' 컨테이너를 클러스터 내의 노드들에 자동으로 분산하여 실행합니다.
  • -p 80:80: 컨테이너의 80번 포트를 호스트의 80번 포트에 바인딩합니다. 이렇게 하면 외부에서 Swarm의 각 노드로 들어오는 80번 포트의 트래픽이 'nginx' 서비스로 자동으로 라우팅됩니다. 이 글의 포트바인딩과 똑같습니다.
  • nginx: 사용할 도커 이미지를 'nginx'로 지정합니다.
  • docker service ls를 통해서 실행중인 서비스를 확인합니다.

검증을 마친 모습입니다.

4. 서비스 모니터링 및 스케일링

# 서비스의 세부 정보 확인
docker service ps [서비스 이름]
# 서비스 스케일링
docker service scale [서비스 이름]=[새로운 복제본 수]
# 롤링 업데이트
docker service update --image [새로운 이미지] [서비스 이름]
# 서비스 로그 확인
docker service logs [서비스 이름]

스케일 아웃에 성공한 걸 확인할 수 있다.

도커 스웜은 기업의 인프라 관리를 효율적으로 하기 위한 중요한 도구입니다. 사실 도커 스웜을 정확하게 다루지 못한다고 문제가 되지 않을 수도 있습니다. 하지만 도커 스웜의 개념에 대해서는 알아둘 필요가 있습니다. 바로 쿠버네티스 때문입니다. 쿠버네티스는 도커 스웜보다 더 복잡한 기능을 제공하며, 더 큰 규모의 시스템에서 사용되곤 합니다. 일반적으로 쿠버네티스는 서비스 간의 의존성 관리, 자세한 네트워킹 및 보안 옵션, 로깅과 모니터링 솔루션 등 보다 세부적이고 고급 기능을 제공합니다. 그러나 이러한 고급 기능들은 더 복잡한 설정과 관리를 필요로 하므로, 처음에는 도커 스웜과 같이 단순하면서도 필요한 기능을 제공하는 도구를 사용하는 것이 좋을 수 있습니다.

댓글