안녕하세요! 오늘은 Docker Swarm을 사용하여 마이크로서비스 아키텍처를 구축하는 방법에 대해 알아보겠습니다. Docker Swarm은 여러 Docker 호스트를 클러스터로 구성하여 컨테이너를 쉽게 관리할 수 있게 해주는 도구입니다.
1. Docker 설치 및 Swarm 초기화
먼저, 마스터 서버에 Docker를 설치하고 Swarm을 초기화합니다.
#!/bin/bash
dnf install -y docker
systemctl enable --now docker
# Swarm 초기화
docker swarm init --advertise-addr 10.0.1.228
Swarm을 초기화하면 워커 노드를 추가할 수 있는 명령어가 출력됩니다. 이 명령어를 복사해두세요.
2. 워커 노드 추가
워커 노드로 사용할 서버에 접속하여 복사한 명령어를 실행합니다.
docker swarm join --token SWMTKN-1-4uu7ft977083s6zxn6j939lpqv7upypv2sdlm93efdb9vj7yji-6cdxe8dyfr0a7bxsduwwtr3nd 10.0.3.180:2377
3. 노드 상태 확인
마스터 노드에서 다음 명령어를 실행하여 노드 상태를 확인합니다.
docker node ls
4. 마스터 노드 설정
마스터 노드에 컨테이너를 생성하지 않도록 설정합니다.
docker node update --availability pause <Node ID>
5. 오버레이 네트워크 생성
노드 간 컨테이너 통신을 위한 오버레이 네트워크를 생성합니다.
docker network create --driver overlay network
6. 서비스 배포
ECR 이미지를 사용하여 서비스를 배포합니다. DNS 설정과 레지스트리 인증을 위한 옵션을 추가합니다.
docker service create --with-registry-auth --dns 8.8.8.8 --network network -p 8080:8080 --replicas=3 --name getuser 950274644703.dkr.ecr.ap-northeast-2.amazonaws.com/get-user:latest
docker service create --with-registry-auth --dns 8.8.8.8 --network network -p 8081:8080 --replicas=3 --name managed 950274644703.dkr.ecr.ap-northeast-2.amazonaws.com/managed:latest
docker service create --with-registry-auth --dns 8.8.8.8 --network network -p 8082:8080 --replicas=3 --name servercheck 950274644703.dkr.ecr.ap-northeast-2.amazonaws.com/servercheck:latest
마무리
이렇게 하면 Docker Swarm을 사용하여 마이크로서비스 아키텍처를 구축할 수 있습니다. 각 서비스는 3개의 레플리카로 실행되며, 오버레이 네트워크를 통해 서로 통신할 수 있습니다. 또한, 각 서비스는 서로 다른 포트로 외부에 노출되어 있어 쉽게 접근할 수 있습니다.
Docker Swarm을 사용하면 서비스의 확장성과 가용성을 쉽게 관리할 수 있으며, 롤링 업데이트 등의 기능도 활용할 수 있습니다. 이를 통해 효율적이고 안정적인 마이크로서비스 운영이 가능해집니다.
'Linux' 카테고리의 다른 글
| [Linux] SSH 인증 방식(Google OTP, Password) (1) | 2025.01.18 |
|---|---|
| [Linux] Nginx Reverse Proxy를 구성해보자 (7) | 2024.10.21 |