CodeGym /행동 /Docker SELF /Overlay 네트워크 학습하기

Overlay 네트워크 학습하기

Docker SELF
레벨 18 , 레슨 1
사용 가능

7.1 overlay 네트워크 학습

overlay 네트워크는 Docker에서 제공하는 분산 네트워크로, 서로 다른 호스트에서 실행되는 컨테이너들이 서로 상호작용할 수 있게 해주는 네트워크야. 보통 Docker Swarm이나 Kubernetes 같은 컨테이너 오케스트레이션에서 사용돼, 서로 다른 노드에서 실행되는 컨테이너들 간의 통신을 보장해. 이번 강의에서는 overlay 네트워크를 생성하고 사용하는 방법, 그리고 그 응용 사례를 살펴볼게.

overlay 네트워크는 기존 네트워크 위에 가상 분산 네트워크를 생성해서 여러 호스트를 하나의 네트워크 공간으로 묶어줘. 이렇게 하면 컨테이너들이 호스트의 물리적 위치와 상관없이, 마치 같은 로컬 네트워크에 있는 것처럼 상호작용할 수 있어.

overlay 네트워크를 사용하는 장점:

  1. 다른 호스트에 있는 컨테이너 간의 통신: 다양한 노드에서 실행되는 컨테이너들 간의 네트워크 상호작용을 보장해.
  2. 격리: 다양한 애플리케이션을 위한 격리된 네트워크 공간을 생성할 수 있어.
  3. 확장성: 작업 중단 없이 동적으로 노드를 추가하거나 제거할 수 있어.

7.2 overlay 네트워크 생성

overlay 네트워크를 생성하려면 먼저 Docker Swarm 클러스터를 초기화해야 해. 이렇게 하면 관리 노드(매니저)가 생성되고 분산 네트워크를 만들 수 있어.

1단계: Docker Swarm 초기화

클러스터의 매니저가 될 호스트에서 명령을 실행해. 이 명령은 Swarm 클러스터를 초기화하고 다른 노드를 클러스터에 추가하기 위한 명령을 출력해.

Terminal

docker swarm init

2단계: 작업 노드를 클러스터에 추가하기

다른 호스트에서 docker swarm init 명령이 출력한 명령을 실행해 클러스터에 추가해. 명령 예:

Terminal

docker swarm join --token <SWARM_TOKEN> <MANAGER_IP>:2377

3단계: overlay 네트워크 생성

클러스터를 초기화한 후에는 다음 명령을 사용해 overlay 네트워크를 생성해:

Terminal

docker network create -d overlay my_overlay_network

4단계: 네트워크 확인

네트워크가 성공적으로 생성되었는지 확인하려면 docker network ls 명령을 실행해. 이 명령은 모든 네트워크 목록을 출력하며, 새로 생성된 overlay 네트워크도 포함돼:

Terminal

docker network ls

출력 예:

Terminal

NETWORK ID     NAME                DRIVER    SCOPE
a1b2c3d4e5     my_overlay_network overlay  swarm

이제 my_overlay_network 네트워크는 분산 애플리케이션에서 사용할 준비가 완료됐어.

7.3 overlay 네트워크 사용

이제 네트워크가 생성되었으니, 이 네트워크에 연결된 컨테이너와 서비스를 실행할 수 있어.

overlay 네트워크를 서비스에 사용하는 예시

Docker Swarm에서 컨테이너를 관리하려면 서비스를 사용할 수 있어. overlay 네트워크에 연결된 몇 가지 서비스를 만들어볼게.

1단계: 웹 서버 서비스 생성

터미널

docker service create --name webserver --network my_overlay_network -p 8080:80 nginx

이 명령어는 webserver라는 이름의 서비스를 생성하고, my_overlay_network 네트워크에 연결해. 웹 서버는 http://localhost:8080에서 접근 가능해.

2단계: 데이터베이스 서비스 생성

터미널

docker service create --name database --network my_overlay_network -e POSTGRES_PASSWORD=mysecretpassword postgres

여기서는 database라는 서비스를 생성하고, 같은 네트워크에 연결한 다음 POSTGRES_PASSWORD 환경 변수를 설정해줘.

3단계: 서비스 간의 연결 확인

각 서비스 간의 연결을 확인하기 위해 임시 컨테이너를 실행해봐:

터미널

docker run -it --network my_overlay_network busybox

컨테이너 안에서 ping 명령어를 사용해서 웹 서버와 데이터베이스에 연결을 확인할 수 있어:

터미널

ping webserver
ping database

설정이 제대로 되었다면, ping 결과에서 성공적인 연결을 보여줄 거야. 이걸로 컨테이너들이 호스트 이름을 통해 상호작용할 수 있다는 걸 확인할 수 있어.

4단계: 서비스 상태 확인

docker service ls 명령어로 생성된 서비스들의 상태를 확인할 수 있어:

터미널

docker service ls

예상 출력 결과는 실행 중인 서비스, 상태, 복제본 수에 대한 정보를 보여줄 거야.

참고: overlay 네트워크는 Swarm 클러스터에 연결된 컨테이너들이 서로 다른 호스트에서 데이터를 교환할 수 있게 해줘.

7.4 overlay 네트워크를 Docker Compose에서 사용하는 예시

Docker Compose는 다중 컨테이너 애플리케이션과 네트워크 관리를 쉽게 만들어줘. docker-compose.yml 파일에서 오버레이 네트워크를 정의하고 컨테이너 간의 통신에 사용할 수 있어.

docker-compose.yml 파일 예시:

Yaml

version: '3.8'

services:
  web:
    image: nginx:latest
    ports:
      - "8080:80"
    networks:
      - my_overlay_network
        
  db:
    image: postgres:latest
    environment:
      POSTGRES_PASSWORD: mysecretpassword
    networks:
      - my_overlay_network
        
networks:
  my_overlay_network:
    driver: overlay
    attachable: true

Docker Compose 실행:

Terminal

docker stack deploy -c docker-compose.yml mystack

이 명령어는 docker-compose.yml 파일을 사용해 스택을 배포하고 my_overlay_network 네트워크에 연결된 서비스를 만들어줄 거야.

실용적인 팁:

  1. 네트워크 모니터링: Docker Swarm 모니터링 도구(Docker Dashboard나 Prometheus 같은)를 사용해서 네트워크 상태와 컨테이너 간의 상호작용을 추적해.
  2. 확장성 관리: 오버레이 네트워크는 노드를 동적으로 추가하거나 제거하는 거 지원해. 애플리케이션 확장을 위해 네트워크 리소스를 올바르게 설정해 둬.
  3. 구성 백업: 실패 상황 발생 시 빠르게 복구하려면 네트워크와 스택 구성을 정기적으로 저장해 둬.
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION