nginx를 설치하면, ngx_http_upstream_module 을 따로 로딩할 필요 없이 사용할 수 있다.

nginx -V 로 보이는 모듈 리스트에서는 보이지 않는다. 


$ /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.6.0
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-11) (GCC)

TLS SNI support enabled

...



nginx.conf 파일을 upstream 및 proxy_pass로 설정한다. 192.168.0.1~2로 reverse proxy 연결을 지원한다(예를 들어 nginx-tomcat 간의 connection을 연결하는 형태). keepalive를 사용하면 keep alive 기능과 동일하다. (time_wait 이 거의 발생하지 않는다.)


http {


  upstream pp-server {

    server 192.168.0.1;

    server 192.168.0.2;

    server 192.168.0.3;

    keepalive 30;

  }


  server {

    listen 80;

    server_name localhost;



    location / {

      proxy_pass http://pp-server;

    }

  }

}



nginx+ (상용 버전)에서는 고급 기능을 쓸 수 있다.



*튜닝 요소

keepalive 사용시 숫자를 잘 정의해야 한다. keepalive를 사용하는 것이 socket close를 최대한 적게 할 수 있다는 장점이 있지만, 너무 작게 설정하면, 작은 수의 socket close를 계속 발생할 수 있다. 

개인적으로 ulimit으로 해서 file socket 개수가 무한대라면, 높은 값(15000)을 주어도 무방한 듯 하다. 

테스트를 통해 확인해보니 너무 작게 주면 그 개수안에서 LRU 정책을 사용하여 socket close가 여전히 발생한다. 많이 줄 수록 socket close는 거의 발생하지 않았다.




* 참조

http://nginx.org/en/docs/http/ngx_http_upstream_module.html






Posted by '김용환'
,