Nginx Load Balancing 적용기

이전 개발 사이트에 있던 백업본 입니다.
개발 사이트에 구현 했었던 Nginx Load Balacing 에 대해서 기록하려 합니다


Nginx 관련 설명은 이전에 작성 했었던 포스팅 글 참조

https://www.owl-dev.me/blog/28




현재 개발 사이트는 '부엉이 개발자' 로 운영 중입니다 만 .Net Core MVC 구조로 만들었던 예전 블로그에는 

라즈베리파이 4대를 가지고 Nginx Load Balancing 을 구축해서 운영 했었습니다. 

당시에 로드밸런싱을 구현했었던 방법을 기록하려 합니다 .




  • 테스트 환경 물리 서버 
Web ServerDB Server






  • 테스트 환경 서버 로직

로드 밸런싱 환경을 구축할때  DB 서버와 Web 서버 구역을 분할해서 구성했었습니다.

DB 서버에 Main Nginx 를 구축해서 각 Web 서버로  분할 해주도록 구성했었고, 각 5000 ,5001, 5002, 5003 포트에 대해서 

접속한 각 웹 서버에 또 한번 Nginx 를 통해서 5000 포트로 Redirect 해주도록 구성했습니다.


 


  • 공유기 Port Fowarding




  • Nginx proxy pass 설정 

- Web Server (211,xxx,xxx)

- Path:  /etc/nginx/sites-available/default



- 5002 포트로 받아온 요청(request) 을 

  5000 포트로 (response) 프록시 설정.



- access_log, error_log 설정을 통한 웹 서버

  로그 확인.



- 4개의 Web Server 모두 동일 구성


  • Nginx Load Balancing 그룹 생성
  • - DB Server (49,xxx,xxx)

    Path:  /etc/nginx/nginx.conf



- http context 속 upstream directives 를 만들어서 

  로드 밸런싱 그룹을 설정해 준다.



- Nginx 에서 제공하는 Load Balancing 기법 3가지

- round-robin : 라운드 로빈 방식으로 동등하게 접속(기본)

- least-conneted: 가장 적게 연결된 서버 중심으로 접속

- ip-hash: 고정 IP 방식으로 동일 서버에만 접속 



- Load Balancing 기법 생략 시, round-robin 적용



- Load Balancing 그룹 명 'servergroup1'


    • Nginx Load Balancing 매핑
    • - DB Server (49,xxx,xxx)

      Path:  /etc/nginx/sites-available/default



- server context 2개를 생성



- 상단 server 는 80port -> 443 port 로 Redirect 설정



- 하단 server 는 proxy_pass 로 nginx.conf 파일에 load 

   balancing 그룹명 'servergroup1' 매핑



      • Load Balancing (round-robin) 시연