먼저 이전 시간에 nginx를 구성하고 컨테이너에 뿌려주는 방식으로 진행했었다. 다음 과정을 진행하기 위해서는 nginx를 삭제해줘야한다. 왜냐하면 80번 포트를 물고 있기 때문이다.
ubuntu@docker:~$ sudo systemctl stop nginx.service
ubuntu@docker:~$ sudo apt autoremove -y nginx
ubuntu@docker:~$ sudo netstat -nlp | grep 80
Container reverse proxy
이 그림을 보면 Nginx 리버스 프록시가 로드 밸런싱을 통해 클라이언트의 요청을 여러 컨테이너로 분배를 하는 구조로 되어 있다. weight 설정 때문에 Nginx가 각 서버로 트래픽을 분배하는 것을 볼 수 있다. 하지만 트래픽 분배가 조금 다르다. 검색을 해보니 로드 밸런싱 설정은 각 서버의 역할에 따라 비율이 조정된다고 한다.
# 도커 Nginx 컨테이너 실행
ubuntu@docker:~$ docker run -d -p 8001:80 --name=proxy-container nginx:1.25.0-alpine
먼저 -p 8001:80 옵션을 통해 호스트의 8001번 포트를 컨테이너의 80번 포트와 연결하여, 호스트의 포트로 접근이 가능하게 했다.
여기서는 alpine 버전을 사용해서 이전보다 경량화된 컨테이너를 실행했다.
# Nginx 설정 파일 작성
ubuntu@docker:~$ vim nginx.conf
Nginx.conf 설정 파일을 열어 로드 밸런싱과 리버스 프록시를 설정했다. 3개의 백엔드 서버로 트래픽을 분배하도록 설정하였고, 이 서버들은 192.168.56.101 IP에 각각 5001, 5002, 5003 포트로 서비스 된다. 클라이언트가 / 경로로 요청을 보내면 proxy_pass를 통해 backend-alb로 트래픽이 전달된다.
# 설정 파일을 컨테이너로 복사
ubuntu@docker:~$ docker cp nginx.conf proxy-container:/etc/nginx/nginx.conf
Successfully copied 2.05kB to proxy-container:/etc/nginx/nginx.conf
설정한 nginx.conf 파일을 Nginx 컨테이너 내부의 /etc/nginx.nginx.conf 경로로 복사해줬다.
>> 컨테이너 재시작 및 상태 확인
ubuntu@docker:~$ docker restart proxy-container
ubuntu@docker:~$ docker ps | grep proxy-container
# 테스트 (로드 밸런싱 확인)
ubuntu@docker:~$ curl localhost:8001
호스트에서 8001번 포트로 Nginx 리버스 프록시를 테스트했다.
# 가중치(Weight) 적용
ubuntu@docker:~$ vim nginx.conf
upstream backend-alb {
server 192.168.56.103:5001 weight=60;
server 192.168.56.103:5002 weight=20;
server 192.168.56.103:5003 weight=20;
}
ubuntu@docker:~$ docker cp nginx.conf proxy-container:/etc/nginx/nginx.conf
ubuntu@docker:~$ docker restart proxy-container
Nginx.conf 파일을 수정하여 가중치 기반 로드 밸런싱을 설정해줬다. 192.168.56.103 서버에 각 포트마다 트래픽을 분배해줬다. 이렇게 설정을 끝내주고 나서 반드시 변경된 설정 파일을 컨테이너에 적용해줘야하기 때문에 재시작을 해줘야한다.
'OS > Docker' 카테고리의 다른 글
[Docker] Volume - Bind mount 실습 (0) | 2024.10.21 |
---|---|
[Docker] Volume (데이터 보존할 때) (0) | 2024.10.21 |
[Docker] - Nginx를 활용한 프록시 구성 (0) | 2024.10.14 |
[Docker] - Container Proxy (0) | 2024.10.14 |
[Docker] 브리지(Bridge) Network 설정 (4) | 2024.10.08 |