Docker Swarm 에서 오버레이 네트워크 생성 방법

DockerBeginner
지금 연습하기

소개

Docker Swarm 은 대규모로 컨테이너화된 애플리케이션을 조직하고 관리하는 강력한 도구입니다. Docker Swarm 의 주요 기능 중 하나는 여러 호스트 간에 컨테이너가 안전하고 효율적으로 통신할 수 있도록 하는 오버레이 네트워크를 생성하는 기능입니다. 이 튜토리얼에서는 Docker Swarm 에서 오버레이 네트워크를 생성하고 서비스를 배포하는 과정을 안내합니다.

Docker 오버레이 네트워크 소개

Docker 오버레이 네트워크는 여러 Docker 호스트에 배포된 컨테이너 간의 원활한 통신을 가능하게 하는 Docker Swarm 의 강력한 기능입니다. 이러한 네트워크는 기본적인 물리적 네트워크 인프라를 추상화하는 가상 네트워크 계층을 제공하여 컨테이너가 마치 같은 호스트에서 실행되는 것처럼 연결 및 통신할 수 있도록 합니다.

Docker 오버레이 네트워크 이해

Docker 오버레이 네트워크는 Layer 3 네트워크 위에 Layer 2 가상 네트워크를 생성할 수 있는 VXLAN(Virtual Extensible LAN) 프로토콜을 기반으로 합니다. 이를 통해 컨테이너는 물리적인 위치에 관계없이 동일한 논리적 네트워크에 연결될 수 있습니다.

graph LR
  A[Docker 호스트 1] -- 오버레이 네트워크 --> B[Docker 호스트 2]
  B -- 오버레이 네트워크 --> C[Docker 호스트 3]
  C -- 오버레이 네트워크 --> A

Docker 오버레이 네트워크를 사용하는 주요 이점은 다음과 같습니다.

  1. 멀티 호스트 연결: 컨테이너는 여러 Docker 호스트를 가로질러 서로 통신할 수 있으므로 확장 가능하고 분산된 애플리케이션 배포를 가능하게 합니다.
  2. 자동 서비스 검색: 동일한 오버레이 네트워크에 있는 컨테이너는 Docker Swarm 이 제공하는 내장 DNS 서비스를 사용하여 서로를 검색하고 연결할 수 있습니다.
  3. 로드 밸런싱: Docker Swarm 의 로드 밸런싱 기능은 오버레이 네트워크에서 실행되는 서비스의 여러 복제본에 트래픽을 분산시키는 데 활용될 수 있습니다.
  4. 안전한 통신: Docker 오버레이 네트워크는 암호화를 지원하여 다른 호스트의 컨테이너 간에 안전한 통신을 보장합니다.

오버레이 네트워크 아키텍처

Docker 오버레이 네트워크는 Docker Swarm 클러스터링 및 오케스트레이션 시스템 위에 구축됩니다. 각 Swarm 노드 (매니저 또는 작업자) 는 오버레이 네트워크에 참여하여 전체 네트워크 토폴로지와 라우팅에 기여합니다.

Docker 오버레이 네트워크 아키텍처의 주요 구성 요소는 다음과 같습니다.

  1. VXLAN 터널 엔드포인트 (VTEP): 각 Swarm 노드는 오버레이 네트워크의 컨테이너 간 네트워크 트래픽을 캡슐화하고 역캡슐화하는 역할을 하는 VTEP 를 실행합니다.
  2. 오버레이 네트워크 데이터베이스: Raft 와 같은 분산 데이터베이스는 오버레이 네트워크 구성 및 라우팅 정보를 저장하여 Swarm 클러스터 전반에서 일관성과 가용성을 보장합니다.
  3. 오버레이 네트워크 드라이버: Docker 오버레이 네트워크 드라이버는 오버레이 네트워크의 생성, 구성 및 유지 관리를 담당합니다.

Docker 오버레이 네트워크의 기본 개념과 아키텍처를 이해함으로써 Docker Swarm 환경에서 이러한 네트워크를 더 잘 생성하고 관리할 수 있습니다.

Docker Swarm 에서 오버레이 네트워크 생성

Docker Swarm 에서 오버레이 네트워크를 생성하는 것은 간단한 과정입니다. 이 섹션에서는 오버레이 네트워크를 생성하고 Docker Swarm 환경에서 사용하도록 구성하는 단계를 안내합니다.

필수 사항

오버레이 네트워크를 생성하기 전에 다음 사항을 확인하십시오.

  1. 최소 하나의 매니저 노드와 하나의 작업자 노드가 있는 Docker Swarm 클러스터.
  2. Docker Engine 버전은 17.06 이상이어야 합니다. 이전 버전은 오버레이 네트워크 기능의 전체 범위를 지원하지 않을 수 있습니다.

오버레이 네트워크 생성

Docker Swarm 에서 오버레이 네트워크를 생성하려면 다음 단계를 따르십시오.

  1. Docker Swarm 매니저 노드에 연결합니다.
  2. 다음 명령을 실행하여 오버레이 네트워크를 생성합니다.
docker network create --driver overlay --attachable my-overlay-network

이 예제에서는 my-overlay-network라는 오버레이 네트워크를 --attachable 플래그와 함께 생성합니다. 이 플래그는 독립 실행형 컨테이너가 네트워크에 연결할 수 있도록 합니다.

오버레이 네트워크 확인

오버레이 네트워크를 생성한 후 다음 명령을 사용하여 생성 여부를 확인하고 세부 정보를 검사할 수 있습니다.

## Docker Swarm의 모든 네트워크 목록
docker network ls

## 오버레이 네트워크 세부 정보 검사
docker network inspect my-overlay-network

docker network inspect 명령의 출력은 서브넷, 게이트웨이 및 네트워크에 참여하는 노드 목록을 포함한 오버레이 네트워크 정보를 제공합니다.

오버레이 네트워크에서 서비스 배포

오버레이 네트워크가 생성되면 해당 네트워크에서 서비스를 배포할 수 있습니다. 서비스를 생성할 때 --network 플래그를 사용하여 연결할 네트워크를 지정할 수 있습니다.

docker service create --name my-service --network my-overlay-network nginx:latest

이렇게 하면 my-service라는 새 서비스를 생성하고 my-overlay-network 오버레이 네트워크에 연결합니다.

이러한 단계를 따르면 Docker Swarm 환경에서 오버레이 네트워크를 생성하고 관리하여 여러 호스트에 걸쳐 컨테이너 간의 안전하고 확장 가능한 통신을 가능하게 할 수 있습니다.

오버레이 네트워크에서 서비스 배포

이제 Docker Swarm 에서 오버레이 네트워크를 생성했으므로 이제 그 위에 서비스를 배포할 수 있습니다. 이 섹션에서는 오버레이 네트워크에 서비스를 배포하고 그 기능을 활용하는 방법을 살펴봅니다.

오버레이 네트워크에 서비스 연결

Docker Swarm 에서 새 서비스를 생성할 때 --network 플래그를 사용하여 연결할 네트워크를 지정할 수 있습니다. 이렇게 하면 서비스의 컨테이너가 오버레이 네트워크에 연결되고 동일한 네트워크의 다른 서비스와 통신할 수 있도록 합니다.

docker service create --name my-service --network my-overlay-network nginx:latest

이 예제에서는 my-service라는 새 서비스를 생성하고 my-overlay-network 오버레이 네트워크에 연결합니다.

서비스 검색 및 로드 밸런싱

오버레이 네트워크를 사용하는 주요 이점 중 하나는 Docker Swarm 이 제공하는 내장 서비스 검색 및 로드 밸런싱 기능입니다. 서비스가 오버레이 네트워크에 배포되면 Swarm 의 내부 DNS 서비스를 사용하여 서로를 검색하고 통신할 수 있습니다.

graph LR
  A[서비스 A] -- 오버레이 네트워크 --> B[서비스 B]
  B -- 오버레이 네트워크 --> C[서비스 C]
  C -- 오버레이 네트워크 --> A

Docker Swarm 의 로드 밸런싱 메커니즘은 서비스의 복제본에 트래픽을 자동으로 분산하여 높은 가용성과 확장성을 보장합니다.

안전한 통신

Docker 오버레이 네트워크는 암호화를 지원하여 서로 다른 호스트의 컨테이너 간에 안전한 통신을 보장합니다. 이는 종단 간 암호화가 필요한 민감한 애플리케이션이나 서비스를 배포할 때 특히 중요합니다.

서비스 확장

애플리케이션이 성장함에 따라 더 많은 복제본을 추가하여 서비스를 쉽게 확장할 수 있습니다. Docker Swarm 은 새 복제본에 대한 네트워크 구성 및 로드 밸런싱을 자동으로 처리하여 오버레이 네트워크의 다른 서비스와 원활하게 통신할 수 있도록 합니다.

docker service scale my-service=5

이 명령은 my-service를 5 개의 복제본으로 확장하고, Docker Swarm 은 새 복제본이 오버레이 네트워크에 연결되고 다른 서비스에서 접근할 수 있도록 합니다.

Docker 오버레이 네트워크에 서비스를 배포하면 Docker Swarm 이 제공하는 원활한 연결, 서비스 검색, 로드 밸런싱 및 보안 기능을 활용하여 확장 가능하고 분산된 애플리케이션을 빌드하고 관리하는 작업을 더욱 쉽게 만들 수 있습니다.

요약

이 포괄적인 튜토리얼에서는 확장 가능하고 상호 연결된 Docker 기반 애플리케이션을 구축하는 데 필수적인 단계인 Docker Swarm 에서 오버레이 네트워크를 생성하는 방법을 배웠습니다. 오버레이 네트워크의 기능을 활용하여 컨테이너화된 서비스 간의 원활한 통신을 가능하게 하여 강력하고 효율적인 인프라를 구축할 수 있습니다. 이 가이드에서 얻은 지식을 통해 이제 특정 요구 사항에 맞춰 Docker Swarm 환경을 자신 있게 관리하고 최적화할 수 있습니다.