AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

NGINX를 사용한 역프록시 설정 및 Docker Swarm 미세서비스 구성

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

DevOps

대상자

  • 개발자/DevOps 엔지니어: Docker Swarm과 역프록시 설정에 관심 있는 초보자 및 중급자
  • 난이도: 중간 (Docker 기본 지식 및 YAML 구성 이해 필요)

핵심 요약

  • Docker Swarm 초기화docker swarm init 명령어로 수행하며, 워커 노드는 docker swarm join으로 추가해야 함
  • docker-compose.yml 파일에서 역프록시 서비스(haproxy)는 80:8080 포트로 배포되며, 3개의 미세서비스(survey, auth, stats)는 노드 라벨 기반으로 배포됨
  • 리소스 제한리플리카 수는 환경에 따라 resourcesdeploy.replicas 항목을 조정해야 함

섹션별 세부 요약

1. Docker Swarm 초기화

  • docker swarm init 명령어로 Swarm 모드를 활성화
  • 워커 노드는 docker swarm join --token :2377 명령어로 추가
  • 노드 라벨 추가: docker node update --label-add db=true NODE_ID (데이터베이스 노드) 또는 worker=true NODE_ID (워커 노드)

2. `docker-compose.yml` 파일 구성

  • 데이터베이스 서비스(mongo:latest)는 node.labels.db == true 라벨 기반으로 배포
  • 미세서비스(survey, auth, stats)는 각각 3, 3, 2 리플리카로 배포되며, 워커 노드에 할당
  • 역프록시(haproxy)는 80:8080 포트로 배포되며, node.role == manager 라벨 기반으로 실행
  • 시각화 도구(visualizer)는 8080:8080 포트로 배포되며, node.role == manager 라벨 기반으로 실행

3. 스택 배포 및 주의사항

  • docker stack deploy -c docker-compose.yml mystack 명령어로 스택 배포
  • 필수 조건: 모든 이미지가 로컬 또는 레지스트리에 미리 빌드되어 있어야 함
  • haproxy 서비스는 미세서비스의 역프록시 역할 수행
  • visualizer 서비스는 Docker Swarm 클러스터의 시각화 UI 제공

결론

  • 역프록시 설정 시 haproxy 서비스의 포트 매핑(80:8080)과 노드 라벨 기반 배포를 반드시 확인해야 함
  • 리소스 제한(resources.limits)과 리플리카 수(deploy.replicas)는 환경에 맞게 조정해야 하며, 이미지 빌드 완료 후 배포해야 성공 가능
  • docker-compose.yml 파일에서 depends_on 설정을 통해 서비스 의존성을 명시적으로 관리해야 함