Apache Tomcat

Tomcat Multiple Instance 구성 (톰캣 멀티 인스턴스)

aappsroot·2014년 4월 10일·조회 10,540

1. 개요 

하나의 Tomcat 엔진에 여러 인스턴스를 띄우고자 하는 경우가 있습니다. 그에 대한 설명입니다.

우선 Tomcat 환경 변수 중에는 ${CATALINA_BASE} 와 ${CATALINA_HOME} 이라는 환경 변수가 있습니다. 만일, 하나의 Tomcat 엔진에 하나의 인스턴스만 띄운다면 두 환경 변수의 값은 동일합니다. 그러나 여러 인스턴스를 띄우고자 한다면 두 환경 변수의 값은 달라져야 하고, 디렉토리 구성 또한 달라져야 합니다.


2. 디렉토리 구성

2-1. ${CATALINA_HOME}

엔진 레벨의 디렉토리 및 파일입니다. Tomcat 배포 파일을 푼 채 유지를 합니다. 사실은 다음 두 디렉토리만 사용 됩니다.

  • bin
  • lib

2-2. ${CATALINA_BASE}

인스턴스 레벨의 디렉토리 및 파일입니다.

  • bin : 원래 bin 하위 파일 중 *.sh (or *.bat) 파일을 위치시킵니다.
  • logs : 로그 디렉토리
  • conf : 설정 디렉토리
  • temp 
  • work

3. setenv.sh

단, ${CATALINA_BASE}/bin/startup.sh, ${CATALINA_BASE}/bin/shutdown.sh 를 바로 사용하지 않고 별도의 start.sh, stop.sh 를 만들어 사용하는 경우는 ${CATALINA_BASE}/bin 에 인스턴스 특화된 setenv.sh 파일만 있으면 됩니다.

그리고 중요한 것은, Tomcat 기동 시에 ${CATALINA_HOME} 과 ${CATALINA_BASE} 를 환경 변수에 넣어줘야 한다는 것입니다. 공통 환경 파일이나 start.sh, stop.sh 에 넣어주시면 됩니다. 제가 사용하고 있는 공통 환경 파일을 보여드립니다.

< setenv.sh >

#!/bin/bash

export JAVA_HOME=/usr/java
export INST_NAME=node1

CATALINA_HOME=/home/tomcat/7.0.53
CATALINA_BASE=/home/tomcat/7.0.53/servers/${INST_NAME}
export CATALINA_HOME CATALINA_BASE

그리고 start.sh, stop.sh 시작 부분에 setenv.sh 으로 먼저 환경 잡아주시면 됩니다.

Tomcat 을 다운로드 받아서 풀면 다음과 같은 구조로 되어 있습니다. 

drwxr-xr-x@  2 appsroot  staff     68  5 20 04:27 work
drwxr-xr-x@  2 appsroot  staff     68  5 20 04:27 logs
drwxr-xr-x@ 23 appsroot  staff    782  5 20 04:33 lib
drwxr-xr-x@  7 appsroot  staff    238  5 20 04:33 webapps
drwxr-xr-x@  3 appsroot  staff    102  5 20 04:33 temp
drwxr-xr-x@  9 appsroot  staff    306  5 20 04:35 conf
-rw-r--r--@  1 appsroot  staff  16204  5 20 04:35 RUNNING.txt
-rw-r--r--@  1 appsroot  staff   8974  5 20 04:35 RELEASE-NOTES
-rw-r--r--@  1 appsroot  staff   1192  5 20 04:35 NOTICE
-rw-r--r--@  1 appsroot  staff  56812  5 20 04:35 LICENSE

다중 인스턴스 구성을 용이하게 하기 위하여 template 디렉토리를 생성한 후, 그 안에 각 인스턴스 독립적으로 유지할 디렉토리 구조를 만들고 또 옮깁니다.

$ mkdir template
$ mv work logs temp conf webapps template

댓글 5

로그인 후 댓글을 남길 수 있습니다.

  • 몽상가몽상가· 2014년 4월 10일
    아하 좋은정보 감사합니다. 혹시 사례도 들어주실 수 있는지요? 제가 조만간 멀티 인스턴스가 필요할 듯 합니다. ^^
  • appsrootappsroot· 2014년 4월 13일
    몽상가/ 내용에 공통 설정 파일 예제 넣어드렸습니다.
  • sscenic· 2014년 4월 14일
    좋은정보 감사합니다.
  • 몽상가몽상가· 2014년 4월 14일
    오늘 앱스루트님이 알려주신 방법으로 테스트 해보았는데, 잘 동작하더군요. 그런데, 별도의 start.sh 과 stop.sh 을 사용하는 경우에는 start.sh 과 stop.sh 에서 환경변수를 ${CATALINA_HOME}/bin 하위에 있는 *.sh에 넘겨서 사용하면 되므로 ${CATALINA_BASE}/bin 하위에 *.sh 같은 것을 둘 필요가 없는 듯 합니다. ^^
  • appsrootappsroot· 2014년 6월 15일
    몽상가/ 맞습니다. 좋은 의견 고맙습니다.