본문 바로가기

Apache / Tomcat

[Linux] Tomcat 다중으로 설치하기

반응형

한 서버내 서로 다른 서비스때문에 톰캣을 분리한다던지, 또는 로드밸런싱을 통산 부하분산을 목적 등으로 Tomcat을 다중으로 설치해야 할 일들이 있다.

오늘은 동일 서버내 tomcat을 다중으로 설치하는 방법에 대해 알아보자.


일단 설치에 앞서서, 동일 서버에서 tomcat 여러개를 사용하려면 내부 사용하는 port를 미리 정리할 필요가 있다.
이미 해당 서버에서 다른 port를 사용할 수 있으므로 설치 전에 정리해두면 도움이 된다.

tomcat 이용시에는 1개의 톰캣에서 보통 3개의 port를 사용한다고 생각하면 된다.
tomcat 내부 포트, apache 연동을 위한 ajp 포트, 서비스 포트 이다.

나는 아래와 같이 포트를 지정했다.


 

tomcat_1

tomcat_2

server port (내부)

8005

18005

ajp1.3 port (내부)

8009

18009

Connector port (외부)

8080

18080



1. 톰캣 다운로드 및 설치

[root@tourWeb1 ~]# cd /usr/local/src
[root@tourWeb1 ~]# wget http://mirror.apache-kr.org/tomcat/tomcat-7/v7.0.55/bin/apache-tomcat-7.0.55.tar.gz
[root@tourWeb1 ~]# tar zxvf apache-tomcat-7.0.55.tar.gz
[root@tourWeb1 ~]# mv apache-tomcat-7.0.55 /user/local/tomcat7_1
[root@tourWeb1 ~]# mv apache-tomcat-7.0.55 /user/local/tomcat7_2



2개의 톰캣을 서로 다른 이름으로 아래와 같이 복사하였다.
  - tomcat 1 : /usr/local/tomcat7_1
  - tomcat 2 : /usr/local/tomcat7_2


2. catalina.sh 파일 수정
   각각 설치된 톰캣의 bin/catalina.sh 파일에 아래 노란색 내용을 추가한다.
   단 경로는 해당 톰캣이 설치되어 있는 경로로 지정할것.

# resolve links - $0 may be a softlink
PRG="$0"

while [ -h "$PRG" ]; do
  ls=`ls -ld "$PRG"`
  link=`expr "$ls" : '.*-> \(.*\)$'`
  if expr "$link" : '/.*' > /dev/null; then
    PRG="$link"
  else
    PRG=`dirname "$PRG"`/"$link"
  fi
done



export CATALINA_HOME=/usr/local/tomcat7_1
export TOMCAT_HOME=/usr/local/tomcat7_1
export CATALINA_BASE=/usr/local/tomcat7_1
CATALINA_PID=/usr/local/tomcat7_1/bin/tomcat.pid




# Get standard environment variables
PRGDIR=`dirname "$PRG




3. server.xml 파일을 열어 미리 정의한 포트대로 변경해 준다.

 - tomcat 1
  

<Server port="8005" shutdown="SHUTDOWN">
  <!-- Security listener. Documentation at /docs/config/listeners.html
  <Listener className="org.apache.catalina.security.SecurityListener" />
  -->
  ...

   <Service name="Catalina">

    <!--The connectors can use a shared executor, you can define one or more named thread pools-->
    <!--
    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
        maxThreads="150" minSpareThreads="4"/>
    -->


    <!-- A "Connector" represents an endpoint by which requests are received
         and responses are returned. Documentation at :
         Java HTTP Connector: /docs/config/http.html (blocking & non-blocking)
         Java AJP  Connector: /docs/config/ajp.html
         APR (HTTP/AJP) Connector: /docs/apr.html
         Define a non-SSL HTTP/1.1 Connector on port 8080
    -->
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    ...


    <!-- Define an AJP 1.3 Connector on port 8009 -->
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />



 - tomcat 1

<Server port="18005" shutdown="SHUTDOWN">
  <!-- Security listener. Documentation at /docs/config/listeners.html
  <Listener className="org.apache.catalina.security.SecurityListener" />
  -->
  ...

   <Service name="Catalina">

    <!--The connectors can use a shared executor, you can define one or more named thread pools-->
    <!--
    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
        maxThreads="150" minSpareThreads="4"/>
    -->


    <!-- A "Connector" represents an endpoint by which requests are received
         and responses are returned. Documentation at :
         Java HTTP Connector: /docs/config/http.html (blocking & non-blocking)
         Java AJP  Connector: /docs/config/ajp.html
         APR (HTTP/AJP) Connector: /docs/apr.html
         Define a non-SSL HTTP/1.1 Connector on port 8080
    -->
    <Connector port="18080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    ...


    <!-- Define an AJP 1.3 Connector on port 8009 -->
    <Connector port="18009" protocol="AJP/1.3" redirectPort="8443" />




4. 서비스를 시작시킨후 각각의 서비스 포트로 접속해서 제대로 동작하는지 확인한다.