⭐️ Table of Contents
- Tech 1. Nginx를 활용한 프록시 구성 설정 정의
- Tech 2. Nginx를 활용한 프록시 구성 설정
Tech 1. Nginx를 활용한 프록시 구성 설정 정의
Nginx 프록시 설정 과정
클라이언트 Layer
지금까지 Window에서 Ubuntu로 들어 갔다. (같은 네트워크에 1번은 무조건 Window이다.)
Tech 2. Nginx를 활용한 프록시 구성 설정 정의
# 우분투를 통해 호스트에서 Nignx를 설치
ubuntu@docker:~$ sudo apt update -y
ubuntu@docker:~$ sudo apt install -y nginx
ubuntu@docker:~$ sudo nginx -v
ubuntu@docker:~$ sudo systemctl status nginx.service
ubuntu@docker:~$ sudo netstat -nlp | grep 80
ubuntu@docker:~$ curl localhost:80
로컬 호스트에서 Niginx가 정상적으로 작동하는지 확인하기 위해 포트 80 HTTP 요청을 보내었고, 응답이 오면 Nignx가 정상적으로 구동중임을 확인하였다. curl 명령어를 통해 인터넷에서 문서를 받아 가지고 올것이다. 여기서 로컬호스트(ubuntu) 80번 포트에 들어가서 문서를 받아오는 것이다.
# 로드 밸런싱을 구현할 애플리케이션 컨테이너 생성
ubuntu@docker:~$ docker run -it -d -e SERVER_PORT=5001 -p 5001:5001 -h alb-node01 -u root \--name=alb-node01 dbgurum/nginxlb:1.0
ubuntu@docker:~$ docker ps -a | grep alb-node
ubuntu@docker:~$ docker logs alb-node01
alb-node01을 백그라운드에서 실행했다. 호스트 포트 5001을 컨테이너 내부 포트 5001에 바인드를 했고, 컨테이너 호스트명과 이름을 alb-node01로 설정을 해줬다. 이후 컨테이너를 확인하고, 로그를 확인하여 실행 중 문제가 있었는지 확인을 했다.
ubuntu#docker:~$ sudo vi /etc/default/grub
여기서 오류를 확인할 수 있었다. 도커는 기본적으로 Cgroup을 사용해 컨테이너의 리소스를 제어하는데 systemd를 Cgroup 드라이버로 사용할 때 호환성 문제가 발생한 것 같다. 아직 제대로 알지는 못하지만 메로리 제한 설정을 할 대 컨테이너 메모리 리소스를 제한할 때 호환성 문제가 발생한 것 같다. 그래서 Cgroup 에서 systemd로 변경해줬다.
# 컨테이너 재생성
ubuntu@docker:~$ docker run -it -d -e SERVER_PORT=5001 -p 5001:5001 -h alb-node01 -u root \--name=alb-node01 d
221a77c2491acdd84816091fffd5abc9ef3095dc0c39ed5141e9186b8c78bc0c
ubuntu@docker:~$ docker run -it -d -e SERVER_PORT=5002 -p 5002:5002 -h alb-node02 -u root \--name=alb-node02 d
14d4711c3248b5dda78f4f2fd037eda4f48f4ca7c264fb5339763a596bee9d45
ubuntu@docker:~$ docker run -it -d -e SERVER_PORT=5003 -p 5003:5003 -h alb-node03 -u root \--name=alb-node03 d
a1ebd8cdd284a1adc1c4329d70c4c0444f34ba47a1d165b848f35ee06c0b8bd7
각각의 컨테이너를 생성하고 실행했다. 각각 서버 포트를 5001,2,3으로 설정해줬고, 컨테이너 포트 또한 5001,2,3에서 실행했다.
# Nginx 로드 밸런싱 설정
ubuntu@docker:~$ sudo mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.org
ubuntu@docker:~$ sudo vi /etc/nginx/nginx.conf
Nginx를 통해서 로드 밸런싱을 설정했다. mv 명령어를 사용하여 기존의 Nginx 설정 파일을 백업했다. 이후 새로운 Nginx 설정 파일을 vim 명령어를 사용하여 /ect/nginx/nginx.conf 파일을 수정했다. Nginx에서 로드 밸런서가 분배할 서버들의 목록은 5001, 2, 3이다. 다음으로 서버는 클라이언트로부터 받은 요철을 backend-alb 그룹에 정의된 서버들로 전달한다. 이 과정을 그림으로 그려봤다.
ubuntu@docker:~$ sudo systemctl restart nginx.service
ubuntu@docker:~$ sudo systemctl status nginx.service
오타 있는지 확인해주기 변경된 Nginx 설정을 적용하기 위해 Nginx 서비스를 재시작하고 난 후, Nginx의 상태를 확인했다.
결과확인
'OS > Docker' 카테고리의 다른 글
[Docker] Volume (데이터 보존할 때) (0) | 2024.10.21 |
---|---|
[Docker] Nginx Container reverse proxy (0) | 2024.10.14 |
[Docker] - Container Proxy (0) | 2024.10.14 |
[Docker] 브리지(Bridge) Network 설정 (4) | 2024.10.08 |
[Docker] Docker Network란 (1) | 2024.10.07 |