살며사랑하며

Tomcat 5에서 클러스터링과 로드밸렁싱-실전적용 본문

PROGRAM/JAVA

Tomcat 5에서 클러스터링과 로드밸렁싱-실전적용

drawhan 2008. 1. 28. 09:00

실 전산에서 적용한 방법으로 Fail-Over도 지원이 된다.

가중치 라운드 로빈방식으로 할당비중치를 줄수 있으나 다만 문제는 톰켓이 완전히 죽지 않은 상태... 즉 웹 어플리케이션이 GC나 스타팅이 되지 않은 상태에도 할당이 된다....


PS)당연하겠지만.. 톰켓자체가 죽지 않는 상태이니 그럴꺼란 생각이 든다

 

Apache2.0 + Tomcat 5.5.27 + jk-connect

 

1.workers.properties
# workers.properties
worker.list=tomcatlb,tomcat6,tomcat7

worker.tomcatlb.type=lb
worker.tomcatlb.balanced_workers=tomcat6,tomcat7
worker.tomcatlb.sticky_session=1
worker.tomcatlb.local_worker_only=1
 
worker.tomcat6.port=1901
worker.tomcat6.host=localhost
worker.tomcat6.type=ajp13
worker.tomcat6.lbfactor=1
worker.tomcat6.local_worker=1
worker.tomcat6.socket_timeout=60
worker.tomcat6.socket_keepalive=true
 
#worker.tomcat6.cachesize=10
# END workers.properties
 
#tomcat7.tomcat-test.com
worker.tomcat7.port=1902
worker.tomcat7.host=localhost
worker.tomcat7.type=ajp13
worker.tomcat7.lbfactor=1
worker.tomcat7.local_worker=1
worker.tomcat7.socket_timeout=60
worker.tomcat7.socket_keepalive=true

 

2.http.conf


    ServerAdmin root@tomcat-test.com
    DocumentRoot $APACHE2/htdocs
    #ErrorDocument 404 /jsp/base/404.jsp
    ServerName tomcat6.tomcat-test.com
    ErrorLog "|/usr/local/sbin/cronolog $APACHE2/logs/%Y%m/tomcat6.tomcat-test.com-error_log-%Y%m%d"
    CustomLog "|/usr/local/sbin/cronolog $APACHE2/logs/%Y%m/tomcat6.tomcat-test.com-access_log-%Y%m%d" common
 
    JkMount /jsp/* tomcatlb
    JkMount /servlet/* tomcatlb
    JkMount /admin/* tomcatlb
    JkMount /manager/* tomcatlb
    JkMount /probe/* tomcat6
    JkMount /probe2/* tomcat7
    #JkMount /otherworker/*.jsp remoteworker



 

클러스터링 스케줄링


1)라운드-로빈(round-robin)
라운드-로빈 방식은 로드밸런서에 들어오는 요청 패킷들을 차례대로 실제 서버에 할당하는 방식이 다. 이 방식에서 실제 서버의 현재 부하 상황 등은 고려되지 않는다. 단지 차례대로 할당할 뿐이다. 하지만, 이렇게 하더라도 로드밸런싱을 위해 이전에 사용되던 라운드-로빈 DNS 방식에 의해 서버를 할당하는 방식에 비해서는 우수한데, DNS의 경우는 한번 서버가 지정되면 해당 서버에 수많은 요청 패킷이 몰릴 수 있기 때문이다.

2)가중 라운드-로빈(weighted round-robin)
가중 라운드-로빈 방식은 기본적으로 라운드-로빈 방식인데, 각 서버에 서로 다른 가중치를 주어서 할당하는 방식이다. 이 방식을 사용해야 하는 경우는 실제 서버들이 CPU의 수와 성능, 메모리 용량 등 서로 다른 성능을 가지고 있어서, 각 서버를 동등하게 취급할 수 없는 경우이다.

3)최소 연결(least connection)
최소 연결 방식은 실제 서버들 중에서 현재 가장 적은 수의 요청을 처리하고 있는 서버를 선택하여 요청 패킷을 할당하는 방식이다. 이 방식은 실제 서버의 현재 부하 상황을 동적으로 판단하여 요청을 처리하기 때문에, 앞의 두 방식에 비해서 동적으로 우수한 부하 분산 효과를 얻을 수 있다.

4)가중 최소 연결(weighted least connection)
가중 최소 연결 방식은 기본적으로 최소 연결 방식인데, 가중 라운드-로빈 방식과 마찬가지로 각 서버에 서로 다른 가중치를 주어서 할당하는 방식이다.