[Docker] - Nginx를 활용한 프록시 구성

2024. 10. 14. 11:51·OS/Docker

⭐️ Table of Contents

  • Tech 1. Nginx를 활용한 프록시 구성 설정 정의
  • Tech 2. Nginx를 활용한 프록시 구성 설정

 

Tech 1. Nginx를 활용한 프록시 구성 설정 정의


Nginx 프록시 설정 과정


nginx 프록시 설정 과정


클라이언트 Layer


 

클라이언트 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
'OS/Docker' 카테고리의 다른 글
  • [Docker] Volume (데이터 보존할 때)
  • [Docker] Nginx Container reverse proxy
  • [Docker] - Container Proxy
  • [Docker] 브리지(Bridge) Network 설정
Kouji
Kouji
Journey to Becoming a Data & Server Engineer
  • Kouji
    Kouji's Data & Server Journey
    Kouji
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Programming
        • Python
        • SQL
      • Data & AI
        • Data Analysis
        • Ai
      • Cloud(AWS)
      • OS
        • Linux
        • Docker
        • Jenkins
        • Ubuntu
        • Window
        • Kubernates
        • Ansible
      • Network
        • NVIDIA
        • Network[이론]
        • Network[GNS3, Packet]
        • Network[On-Premise]
        • Network [L2, L3]
      • 트러블 슈팅
      • Life
        • My Career Stories
        • Personal
      • 개발 + OS 지식 함양
  • 블로그 메뉴

    • 홈
    • 관리 페이지
    • 글쓰기
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    dns
    네트워크엔지니어링
    화이팅
    L3
    인프라엔지니어
    OS
    네트워크
    라우팅
    보안
    IT
    ubuntu
    오블완
    티스토리챌린지
    AWS
    Linux
    docker
    서버
    스위치
    네트워크관리사
    CISCO
    리눅스
    도커
    알고리즘
    서버엔지니어
    VMware
    인프라
    시스템엔지니어
    네트워크엔지니어
    웹
    클라우드엔지니어
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Kouji
[Docker] - Nginx를 활용한 프록시 구성
상단으로

티스토리툴바