실제 대용량 서비스에서는 별로 사용될일이 없을것 같은 구성이긴 하지만 테스트 환경에서 필요한 구성일듯 하여 적어봅니다.

 

결론부터 언급하면 하나의 머신에서 톰캣 인스턴스를 여러개 띄우려면 톰캣을 여러개 설치하면 됩니다.

개발환경에서 eclipse 에서도 포트를 달리해 톰캣을 여러개 띄울때처럼 말이죠. 결과적으로는 이와 동일합니다.

 

무식(?)하게 톰캣 디렉토리를 통째로 복사해서 server.xml을 열어 포트를 각각 달리해도 되긴 됩니다만 좀 덜 세련되 보입니다.

 

1. tomcat 을 설치합니다. 기본적으로 jdk 설치후 java path 잡고 압축해제하면 끝.

/usr/local/tomcat 에 설치하도록 하겠습니다.

 

즉 위의 디렉토리는 CATALINA_HOME에 해당합니다.

 

2. CATALINA_BASE를 구분해서 만들어 줍니다.

 

/usr/local/tomcat/server01

/usr/local/tomcat/server02

...

 

3. 각각의 하위디렉토리에  conf, temp, logs, webapps, work 를 만듭니다.

(logs, webapps는 나중에 한곳으로 옮길 예정지만 처음엔 다 만들어 줍니다. 테스트의 확실성을 위해서...)

webapps/ROOT까지 만들어 줍니다.

 

/usr/local/tomcat/server01/conf 에 server.xml, web.xml 을 복사합니다. 원본파일은 CATALINA_HOME/conf/에 존재합니다.

 

4. server.xml파일을 열어 포트정보를 변경합니다.

 

<Server port="8005" shutdown="SHUTDOWN...

<Connector port="8080" protocol="HTTP/1.1" ...

<Connector port="8009" protocol="AJP/1.3" ...

 

개발환경에서는 아파치 연동을 하지 않고 단독으로 사용할 것이기 때문에 AJP/1.3 protocol을 사용하는 Connector는 주석처리해도 됩니다. 나중에 아파치 연동을 이용해서 사용코자 할때 이부분을 enable 시켜주고 대신 HTTP/1.1 protocol부분을 주석처리합니다.

 

5. 이제 start script를 만들어 줍니다.(사실 이부분이 핵심이라고 볼수 있습니다.)

 

vi server01start.sh

 

JAVA_HOME=/usr/java/latest    //jdk 가 설치된 환경에 맞게 변경해줍니다.
JAVA_OPTS="-Xmx1024m -Xms512m"
CATALINA_HOME=/usr/local/tomcat
CATALINA_BASE=/usr/local/tomcat/server01  //<-- 이부분만
export JAVA_HOME JAVA_OPTS CATALINA_HOME CATALINA_BASE

 

$CATALINA_HOME/bin/catalina.sh start 

 

6. 스크립트에 실행옵션을 부여하고(chmod +x server01server.sh) 실행을 합니다.

그리고 변경된 각각의 포트를 통해서 접속테스트를 해봅니다. (webapps/ROOT/index.jsp 만들어야겠죠?)

 

7. 추가작업. instance가 많아질 경우 관리가 불편해집니다. 그래서 server01start.sh server01stop.sh 등의 스크립트를 하나로 관리하돌고 적절하게 스크립트를 만들어 줍니다.

아래 스크립트는 대략 만들어 봤습니다. 좀더 꼼꼼한 설정을 위해서는 좀더 가다듬어야 하겠죠?

if [ "$2" = "start" ] ; then
    echo "Tomcat Start=[$1]"
elif [ "$2" = "stop" ] ;then
    echo "Tomcat Stop=[$1]"
else
    echo "Using tail -f $1/catalina.out"
fi

 

JAVA_HOME=/usr/java/latest
JAVA_OPTS="-Xmx800m -Xms800m"
CATALINA_HOME=/usr/local/tomcat
CATALINA_BASE=/usr/local/tomcat/$1
export JAVA_HOME JAVA_OPTS CATALINA_HOME CATALINA_BASE


if [ "$2" = "log" ]; then
  tail -f $CATALINA_BASE/logs/catalina.out
else
  $CATALINA_HOME/bin/catalina.sh $2
fi

 

 

실행스크립트 :tomcat

이상으로 하나의 서버에 톰캣을 여러개 띄우는 방법을 적어보았습니다.

 

참고사이트는 다음과 같습니다.

http://kief.com/running-multiple-tomcat-instances-on-one-server.html