Mutiple Tomcat Load Balancing(Nginx1+TomcatN) 구성
시스템 사용량이 많아 Tomcat 서버를 여러 대로 분할하려고 했으나 재정상 L4 스위치를 구비하기 어려운 경우가 발생하여 S/W적으로 이를 대체할 만한 방법을 찾다보니 Nginx라는 것이 이 역할을 한다는 것을 알고 직접 구성해보았다.
설치방법1
http://blog.naver.com/adventurez/193335400
설치방법2
http://opentutorials.org/module/384/4511
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;
}
}
나머진 알아서!