웹어플리케이션서버2014. 7. 24. 11:51

시스템 사용량이 많아 Tomcat 서버를 여러 대로 분할하려고 했으나 재정상 L4 스위치를 구비하기 어려운 경우가 발생하여 S/W적으로 이를 대체할 만한 방법을 찾다보니 Nginx라는 것이 이 역할을 한다는 것을 알고 직접 구성해보았다.

설치방법1

http://blog.naver.com/adventurez/193335400

설치방법2

http://opentutorials.org/module/384/4511

위 블로그를 참조하여 nginx를 설치

Test환경

서버가 한대 밖에 없을 경우

사용자 Browser1 -> nginx(80, 443) -> Tomcat1:8080

사용자 Browser1 -> nginx(80, 443) -> Tomcat2:8090


1. tomcat1/conf/sever.xml에 포트 8080으로 변경

2. tomcat2/conf/server.xml에 포트 8090으로 변경 및 각 포트 정보 아래와 같이 앞에 2를 붙임

   - <Server port="28005" shutdown="SHUTDOWN">

   - <Connector URIEncoding="UTF-8" port="28009" protocol="AJP/1.3" redirectPort="28443"/>

3. 같은 서버에 두 개의 Tomcat Instance를 실행할 경우 Session이 꼬이는 문제가 발생하므로 tomcat2/bin/catalina.sh에 아래와 같이 변경 필요

JAVA_OPTS="-Xms512M -Xmx1024M -Djava.awt.headless=true Dorg.apache.catalina.SESSION_COOKIE_NAME=MYSESSIONID -Dorg.apache.catalina.SESSION_PARAMETER_NAME=myjsessionid"


서버가 여러 대일  경우(서버A, 서버B, 서버C)

* 서버A에 nginx를 두고 나머지 서버B, C에 Tomcat설치 구성

* 서버A스펙이 좋을 경우에는 서버A에 nginx, Tomcat1를 두고 서버B, C에 각각 Tomcat2,3설치 구성도 가능


사용자 Browser1 -> nginx(80, 443) -> Tomcat1

사용자 Browser1 -> nginx(80, 443) -> Tomcat2


1. nginx1.6/conf/nginx.conf에 아래와 같이 수정 필요

upstream myapp1 {

ip_hash;

        server tomcat1 ip;

        server tomcat2 ip;

    }

    server {

        listen tomcat1 ip:80;

        location / {

            proxy_pass http://myapp1;

        }

 }

* 세션 클러스터링을 하지 않을 경우 ip_hash의 옵션을 주어 IP기준 최초 접속한 서버로 계속 연결을 포워딩 시켜줘야 함.
* 세션 클러스터링 구성을 할 경우 굳이 주지 않아도 상관 없음.
 server tomcat1 ip weight=5;와 같이 뒤에 weight옵션을 두면 부하를 수동으로 조정가능함(5의 지정할 경우 1로 지정한 서버보다 5배 접속)


나머진 알아서!


Posted by 미랭군