본문 바로가기
개발/DevOps

Docker Swarm이란 무엇일까?

by leedonggeun 2022. 11. 25.

도커 스웜 Docker Swarm

도커 스웜이란?

도커에서 만든 컨테이너 오케스트레이션 툴입니다.
컨테이너 오케스트레이션이란, 여러 호스트의 컨테이너 배포 및 관리, 제어를 자동화하는 것을 의미합니다.
비슷한 예로는 AWS ECS, K8S, Apache Mesos 등이 있습니다.

1. 도커 스웜을 사용하는 이유

도커는 기본적으로 하나의 호스트에서 동작합니다. 하지만 이는 실제 운영 환경에서는 문제가 될 가능성이 있습니다.
예를 들어, 운영 중 서비스의 덩치가 커져 서버 자원이 부족할 때는 어떡해야 할까요?
물론 더 좋은 사양의 서버를 사면 당장은 문제가 되지 않지만, 서버의 구매, 교체 등의 업무는 굉장한 부담입니다.
하지만 도커 스웜은 여러 서버를 하나의 클러스터(군집)로 묶어 자원을 병렬로 확장하게끔 도와주는 역할을 합니다.

즉, 서로 다른 호스트의 여러 컨테이너를 하나로 묶어 마치 하나의 호스트처럼 사용할 수 있도록 도와줍니다.

2. 도커 스웜의 구성

분산 코디네이터, 에이전트 등은 모두 도커 엔진에 내장되어 있습니다.

분류 설명
분산 코디네이터 여러 개의 도커 서버를 하나의 클러스터로 구성하기 위해
각종 정보를 저장 및 동기화
에이전트 각 서버를 제어한다
매니저 노드 클러스터 내의 워커 노드를 관리
무조건 1개 이상 존재해야함
워커 노드의 역할도 포함하고 있다.
워커 노드 컨테이너가 생성되고 관리되는 실제 도커 서버

3. 도커 스웜 학습

3-1. 도커 스웜이 사용하는 포트

2377/TCP :: 클러스터 관리 포트
7946/TCP|UDP :: 노드 간 통신 포트
4789/UDP :: 클러스터에서 사용되는 Ingress 오버레이 네트워크 트래픽 포트

3-2. 도커 스웜 모드 활성화

docker swarm init 명령어를 통해 활성화할 수 있습니다.

[root@server-01 docker]# docker swarm init
Swarm initialized: current node (oy9ouu004wo20207sjonliljz) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-1j@!대충 토큰 내용

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
💡 이더넷이 2개 이상이라 활성화 실패 시에는?

      에러 내용 ::
Error response from daemon: could not choose an IP address to advertise since this system has multiple addresses on different interfaces (172.27.0.00 on eth0 and 10.64.000.00 on eth1)

      해결법 :: docker swarm init --advertise-addr {활성화할 IP}

3-3. 도커 스웜 모드 활성화 확인

docker info 명령어를 통해 활성화됨을 확인할 수 있습니다.
Swarm: active일 경우, 정상적으로 도커 스웜 모드가 활성화된 것입니다.

[root@server-01 docker]# docker info
Client:
 Context:    default
 Debug Mode: false
 Plugins:
  app: Docker App (Docker Inc., v0.9.1-beta3)
  buildx: Docker Buildx (Docker Inc., v0.9.1-docker)
  scan: Docker Scan (Docker Inc., v0.21.0)

....
...
..
.

 Swarm: active
  NodeID: oy9ouu004wo20207sjonliljz
  Is Manager: true
  ClusterID: 0wogjoqmb2gixd2oq75k5qsbo
  Managers: 1
  Nodes: 1
  Default Address Pool: 10.0.0.0/8  
  
  ...
  ..
  .

3-4. 클러스터 확인

docker node ls 명령어를 통해 컨테이너를 확인할 수 있습니다.

[root@server-01 docker]# docker node ls
ID                            HOSTNAME             STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
oy9ouu004wo20207sjonliljz *   server-01   Ready     Active         Leader           20.10.21

3-5. 클러스터 추가

클러스터 추가 대상 호스트에서 docker swarm join --token {TOKEN} 명령어를 이용하여 클러스터를 추가할 수 있습니다.

[root@server-02 docker]# docker swarm join --token {TOKEN}

# 노드 추가에 성공했을 경우
This node joined a swarm as a worker.

4. 마치며...

도커 스웜에 대해 알아보았습니다.
오케스트레이션 중 하나로, 쿠버네티스와 함께 대표되는 툴이므로 조금 더 살펴보아야할 것 같습니다.

댓글