한 서버내 서로 다른 서비스때문에 톰캣을 분리한다던지, 또는 로드밸런싱을 통산 부하분산을 목적 등으로 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. 톰캣 다운로드 및 설치
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. 서비스를 시작시킨후 각각의 서비스 포트로 접속해서 제대로 동작하는지 확인한다.
출처: http://fruitdev.tistory.com/23?category=558549 [과일가게 개발자]