1. 미들웨어이야기/04. Nginx

Nginx 백엔드 서버 부하분산 설정

알 수 없는 사용자 2014. 7. 28. 19:52

다수의 upstream 서버를 사용하여 라운드로빈 기능은 구현이 가능하나, 이 upstream 서버들간의 부하를 적절게 설정을 하기 위해서는 다음과 같은 방법을 통한 부하분산(load balancing) 설정이 필요합니다.

 

부하분산을 위해서는 'upstream fair module' 이라는 서드파티 모듈의 설치가 필요합니다.

upstream fair module은 라운드로빈 방식으로 비교적 한가한 서버를 체크하여 그 서버에게 서비스를 요청을 합니다.

 

1. 모듈을 다운로드 합니다.

    wget http://github.com/gnosek/nginx-upstream-fair/tarball/master

 

 2. 엔진엑스를 새 모듈과 함께 컴파일을 합니다.

    tar xvzf ./master

    cd /nginx/src/nginx-1.6.0

 

    #아래의 configuration명령어는 한줄로 입력을 합니다.

    ./configure --with-debug --prefix=/nginx/nginx-1.6 --with-http_ssl_module

     --with-http_realip_module --with-http_stub_status_module

     --add-module=/nginx/src/gnosek-nginx-upstream-fair-a18b409

 

     make

     make install

 

 3. 다음의 설정을 nginx.conf 파일에 추가를 합니다.

 upstream backend {
    server ktds.com:8080;

    server ktds.com:8180;

    server ktds.com:8280;

    fair no_rr;

}

server {

    location / {

        proxy_pass http://backend;

    }

}

 

fair 지시어

  fair : 기본적인 설정이며, 단순한 가중 최소 접속 라운드로빈으로 활성화된 접속자 수가 가장 적은 서버를 라운드로빈 방식으로 선택하여 요청을 보냅니다.

  fair no_rr (no roun-robin) : 라운드로빈 방식을 사용을 하지않고, 부하 양에 따라 다수의 백엔드를 배정하는 경우에 적용할 수 있다. 이 방식은 필요한 만큼의 백엔드를 사용할 수 있도록 보장을 한다.(권장설정 값)

  fair weight_mode=idle no_rr : 최소한의 백엔드 서버 풀 안에서 부하분산을 수행.

  fair weight_mode=peak : 백엔드 서버가 더이상의 요청을 처리를 못한 busy 상태일 경우 클라이언트에 502 에러로 응답을 합니다. 

 

참고 URL : https://nginx.localdomain.pl/wiki/UpstreamFair

 

by 김현수(7월)