본문 바로가기
[개발] Infrastructure/Container

Docker 로드밸런서 구성하기

by Devsong26 2023. 11. 22.

Docker를 사용하여 로드 밸런서와 두 개의 서버(컨테이너)를 연결하는 환경을 구축하는 과정은 다음과 같습니다. 이 예시에서는 Nginx를 로드 밸런서로 사용하고, 두 개의 간단한 웹 서버 컨테이너를 로드 밸런싱합니다.

 

 

1단계: Docker 네트워크 생성

 

먼저, 모든 컨테이너가 서로 통신할 수 있도록 Docker 네트워크를 생성합니다.

docker network create my-network

 

생성된 네트워크는 아래 명령어로 확인할 수 있습니다.

docker network ls

 


2단계: WAS 컨테이너 실행

 

두 개의 WAS를 실행합니다. 이들은 외부에 직접 노출되지 않고, 로드 밸런서를 통해서만 접근 가능합니다.
WAS: https://developer-syubrofo.tistory.com/213

docker run -d --name server1 --network my-network your_app
docker run -d --name server2 --network my-network your_app

 

생성한 도커 컨테이너가 Network에 연결됐는지 확인하는 방법은 아래와 같습니다.

docker network inspect my-network

 

 

3단계: Nginx 로드 밸런서 설정


Nginx를 로드 밸런서로 설정합니다. 이를 위해 먼저 `nginx.conf` 파일을 생성하고, 아래와 같이 로드 밸런싱 설정을 추가합니다.

events {
    worker_connections  1024;
}

http {
  upstream myapp {
    server server1:8080;
    server server2:8080;
  }

  server {
    listen 80;

    location / {
      proxy_pass http://myapp;
    }
  }
}



이 설정은 `server1`과 `server2`에 대한 요청을 균등하게 분산합니다.

 

4단계: Nginx 컨테이너 실행

 

설정한 `nginx.conf` 파일을 사용하여 Nginx 컨테이너를 실행합니다. 이 컨테이너는 외부 포트 80에 노출되며, Docker 네트워크 `my-network`에 연결됩니다.

docker run -d --name nginx-lb -p 80:80 --network my-network -v 절대경로/nginx.conf:/etc/nginx/nginx.conf:ro nginx

 

 

5단계: 테스트 및 확인


브라우저나 `curl` 명령어를 사용하여 로드 밸런서의 IP 주소 또는 도메인에 접근하여 로드 밸런싱이 제대로 작동하는지 확인합니다.

 

 


주의사항

  • 실제 환경에서는 보안 설정, 로그 설정, 고가용성 설정 등을 추가로 고려해야 합니다.
  • Nginx 로드 밸런서의 설정을 변경하려면 `nginx.conf` 파일을 수정하고 Nginx 컨테이너를 재시작하거나 `docker exec` 명령어로 Nginx를 리로드합니다.


이 단계를 통해 Docker를 사용하여 간단한 로드 밸런싱 환경을 구축할 수 있습니다.

'[개발] Infrastructure > Container' 카테고리의 다른 글

Skaffold  (0) 2024.08.10
JIB  (0) 2024.08.10
Docker 이미지 빌드하기  (1) 2023.11.22
도커 기본  (0) 2023.11.12