1. 개요

Tomcat Connectors (mod_jk)의 workers.properties 이야기이다. Tomcat Connectors지만 실제로는 Apache HTTP Server 측에 위치하고 있기 때문에 Apache HTTP Server 아티클에 게재한다.


2. 설명

workers는 back-end에 위치한 각 Tomcat 인스턴스들을 가리킨다. 이 workers.properties 파일은 Apache HTTP Server에서 연결하고자 하는 Tomcat에 대한 정의 및 설정 파일이다. 

worker.list=lb_tomcat

worker.template.type=ajp13
worker.template.lbfactor=1
worker.template.socket_timeout=300
worker.template.socket_keepalive=True
worker.template.connect_timeout=30000
worker.template.connection_pool_size=64
worker.template.connection_pool_minsize=32
worker.template.connection_pool_timeout=60

worker.tomcat1.reference=worker.template
worker.tomcat1.host=192.168.0.101
worker.tomcat1.port=8009

worker.tomcat2.reference=worker.template
worker.tomcat2.host=192.168.0.102
worker.tomcat2.port=8009

worker.lb_tomcat.type=lb
worker.lb_tomcat.balance_workers=tomcat1,tomcat2
worker.lb_tomcat.sticky_session=True

worker.tomcat1, worker.tomcat2 등 각 worker의 이름은 Tomcat에서 설정한 jvmRoute 값과 동일해야 한다. 만일 이 값이 서로 맞지 않다면 stickyness가 잘 되지 않는 현상이 발생할 수 있다.

보통은 template 방식의 worker 정의를 사용한다. 이 template 방식을 사용하면 공통된 속성은 template으로 만들어 적용할 수 있는 장점이 있다. 이렇게 만든 template 반영은 worker.tomcat1.reference= 와 같이 할 수 있다.


3. lbfactor

lbfactor는 workers, 즉 각 Tomcat 인스턴스의 부하 분산 지수이다. 보통은 1로 설정하여 모든 Tomcat 인스턴스를 균등하게 분산하지만 만일 특정 Tomcat에 더 많은 부하를 넣고자 한다면 이를 수정하여 사용한다.


4. Timeout

socket_timeout, connection_pool_timeoiut의 default 값은 모두 0이다. 0은 infinite이며 이는 곧 무한대기를 의미한다.

만약 WEB-WAS 사이에 방화벽이 있고 방화벽 Timeout이 있다면

  • 방화벽 Timeout에 의해 해당 세션은 끊어진다.
  • 이후 Apache 웹 서버에서 해당 세션을 사용하려고 하면 오류가 발생하고, 웹 서버에서는 끊는다.
  • 하지만 WAS 상에서는 계속 남아있다. 즉, 계속 ESTABLISHED 상태의 Connection이 남게 되고 그 수는 점점 늘어날 것이다.