0. 인스턴스를 다중화하는 이유

 

물리적인 1개의 서버를 WAS(톰캣) 로 사용한다고 하자.

단일 인스턴스와 다중 인스턴스로 운영하는 방법이 있을 것이다.

was 서버의 처리량을 10으로 고정하고, 다음 두 가지 케이스를 비교해 보자.

 

Case 1

   -인스턴스 수 : 1

   -인스턴스 당 처리량: 10

 

Case 2

   -인스턴스 수 : 2

   -인스턴스 당 처리량: 5

 

Case 1의 경우, 비교적 강력한 인스턴스를 보유하기 때문에 퍼포먼스가 강하다.

                    반면, 인스턴스 1개가 죽은 경우 서비스 자체가 불가하다. (장애에 취약)

Case 2의 경우, 비교적 퍼포먼스는 약하나, 장애 발생률이 비교적 낮다. (Availability 향상)

 

이처럼, 퍼포먼스를 낮추더라도 Availability를 향상해야 하는 경우 다중 인스턴스로 was를 구성한다.

 

Tomcat 인스턴스 다중화 구성도

이에, 위와 같은 구성도로 Tomcat 인스턴스를 삼중화 하는 설정 방법을 정리한다.

 

 

1. Apache 설정

 

(1) workers.properties 설정

#worker.list=tomcat1, tomcat2, tomcat3
worker.list=balancer
ps=/

# Tomcat1
worker.tomcat1.type=ajp13
worker.tomcat1.host=10.50.50.211
worker.tomcat1.port=8009
worker.tomcat1.lbfactor=1

# Tomcat2
worker.tomcat2.type=ajp13
worker.tomcat2.host=10.50.50.211
worker.tomcat2.port=8109
worker.tomcat2.lbfactor=1

# Tomcat3
worker.tomcat3.type=ajp13
worker.tomcat3.host=10.50.50.211
worker.tomcat3.port=8209
worker.tomcat3.lbfactor=1

worker.balancer.type=lb
worker.balancer.balance_workers=tomcat1, tomcat2, tomcat3
worker.balancer.sticky_session=TRUE

 

설명

-worker.(이름): worker 이름은 정하기 나름이지만 각각 뒷단의 Tomcat 서버를 구분할 수 있는 이름이여야 한다. 이 worker 이름은 나중에 로드밸런싱을 할때에 Tomcat 에도 적용되어지는 이름이기에 잘 설정해야 한다. Load Balancing 구성을 위해서는 worker.list 에 balancer 하나만 놓으면 됨

(tomcat1, tomcat2, tomcat3)


-worker port: 여기서 말하는 port 는 뒷단 Tomcat 서버의 AJP 포트를 말한다.


-worker type: 이건 ajp13  으로 설정하면 된다.


-worker lbfactor: 부하분산을 위한 설정으로 뒷단 Tomcat  서버들에 연결 무게를 설정해준다.

 

(2) uriworkermap.properties 설정

/*.jsp = balancer
/*.do = balancer
/*.json = balancer
/*.js = balancer
/*.css = balancer 

 

(3) mod_jk.conf 설정

JkWorkersFile conf/workers.properties
JkMountFile conf/uriworkermap.properties

JkLogFile logs/mod_jk.log
JkShmFile logs/mod_jk.shm
JkLogLevel info
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"

(4) httpd.conf 설정

LoadModule jk_module modules/mod_jk.so 추가 됐는지 확인
include conf/mod_jk.conf 추가 됐는지 확인

 

 

2. Tomcat 설정

 

(1) Tomcat 폴더 복사

cd /dev_data
cp -r Tomcat Tomcat2
cp -r Tomcat Tomcat3

등의 방식으로...

 

(2) 인스턴스 별 server.xml 수정

포트 변경

   -변경이 필요한 Port 종류

   -server port(8005): 이 서버가 종료(shutdown) 명령을 받을 TCP/IP 포트번호. 이 포트로는 해당 Tomcat이 실행되고 있는 컴퓨터에서만 연결 가능
   -httpd port(8080): Tomcat이 실행하는 http 접속 포트
   -ajp port(8009): Apache와 연결하기 위한 포트
   -redirectport(8443): Coneector가 SSL을 지원하지 않을 때 SSL을 요구하는 요청이 들어오면 해당 port로 redirect

 

(3)  Alias 생성

alias startTomcat1='sh /dev_data/Tomcat/bin/startup.sh'
alias startTomcat2='sh /dev_data/Tomcat2/bin/startup.sh'

alias stopTomcat1='sh /dev_data/Tomcat/bin/shutdown.sh'
alias stopTomcat2='sh /dev_data/Tomcat2/bin/shutdown.sh'

이와 같이 각각의 startup, shutdown alias 생성

 

설정 완료.

 

alias를 통해 톰캣을 올린 후 인스턴스 별 로그를 통해 Load Balancing을 테스트 하면 정상 작동함을 확인할 수 있다.

+ Recent posts