Tomcat 멀티 인스턴스 구성

2025. 2. 4. 11:12WAS/Tomcat


# 테스트 환경

  • OS : Oracle Linux Server release 8.6
  • JDK : 1.8
  • Tomcat ver. : 9.0.89

 

Tomcat을 구성할 때 엔진은 하나로 두고 여러 개의 instances들을 구성하여 사용해야 할 때 필요한 방법이다.

 

 

# CATALINA 속성

Tomcat 공식 문서를 참조하면 2가지 속성이 존재한다.

  1. CATALINA_HOME: Tomcat 설치 경로 즉, Tomcat Engine 경로
  2. CATALINA_BASE: 특정 Tomcat 인스턴스의 런타임 구성의 경로 즉, 구성한 멀티 인스턴스 중 하나의 경로

위와 같이 2개의 속성으로 구분할 경우 

 

CATALINA_HOME에는 바이너리 파일과 같은 정적 소스가 포함되고

CATALINA_BASE에는 conf 파일, log 파일, application 파일 및 기타 런타임 요구 사항들이 포함된다.

 

 

# 멀티 인스턴스 구성 시 장점

  1. CATALINA_BASE 경로만 수정해 주게 되며 엔진 경로는 하나이고 여러 인스턴스들을 쉽게 구성할 수 있다.
  2. CATALINA_HOME에 lib 폴더가 위치하여 각 BASE들이 참조하기 때문에 Tomcat version 업그레이드 작업이 쉬워진다.

 

 

# 구성 방법

1. 엔진 및 인스턴스 경로 구성

CATALINA_HOME : /test/tomcat/tomcat9.0.89

CATALINA_BASE : /test/tomcat/server1, /test/tomcat/server2

 

 

CATALINA_BASE엔 아래의 디렉터리들이 위치하게 된다.

  1. 각 인스턴스별 설정을 위한 conf 디렉토리
  2. 각 인스턴스별 로그 작성을 위한 logs 디렉터리
  3. 각 인스턴스별 애플리케이션 배포를 위한 webapps, work 디렉터리
  4. 각 인스턴스별 임시파일 저장을 위한 temp 디렉터리
  5. 각 인스턴스별 start, stop 스크립트

 

 

2. 각 인스턴스 별 스크립트 작성

server1의 start, stop 스크립트

## start.sh
CATALINA_HOME=/test/tomcat/tomcat9.0.89
CATALINA_BASE=/test/tomcat/server1
JAVA_HOME=/usr/java/jdk1.8.0_321

export CATALINA_HOME CATALINA_BASE JAVA_HOME

${CATALINA_HOME}/bin/startup.sh

## stop.sh
CATALINA_HOME=/test/tomcat/tomcat9.0.89
CATALINA_BASE=/test/tomcat/server1
JAVA_HOME=/usr/java/jdk1.8.0_321

export CATALINA_HOME CATALINA_BASE JAVA_HOME

${CATALINA_HOME}/bin/shutdown.sh

 

 

server2의 start, stop 스크립트

 

## start.sh
CATALINA_HOME=/test/tomcat/tomcat9.0.89
CATALINA_BASE=/test/tomcat/server2
JAVA_HOME=/usr/java/jdk1.8.0_321

export CATALINA_HOME CATALINA_BASE JAVA_HOME

${CATALINA_HOME}/bin/startup.sh

## stop.sh
CATALINA_HOME=/test/tomcat/tomcat9.0.89
CATALINA_BASE=/test/tomcat/server2
JAVA_HOME=/usr/java/jdk1.8.0_321

export CATALINA_HOME CATALINA_BASE JAVA_HOME

${CATALINA_HOME}/bin/shutdown.sh

 

 

 

3. start, shutdown port 변경

각 인스턴스 홈 경로에 존재하는 server.xml 파일 내에 작성되어 있는 시작 및 정지 port를 겹치지 않게 설정

 

server1 - 8080 / 8005

 <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443"
               maxParameterCount="1000"
<Server port="8005" shutdown="SHUTDOWN">
  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  <!-- Security listener. Documentation at /docs/config/listeners.html
  <Listener className="org.apache.catalina.security.SecurityListener" />

 

server2 - 8081 / 8006

 <Connector port="8081" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443"
               maxParameterCount="1000"
<Server port="8006" shutdown="SHUTDOWN">
  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  <!-- Security listener. Documentation at /docs/config/listeners.html
  <Listener className="org.apache.catalina.security.SecurityListener" />

 

 

4. 기동 및 정지 TEST

server1

server1 start log

 

server1 process

 

8080, 8005 port LISTEN 확인

 

 

server2

server2 start log

 

server2 process

 

8081, 8006 port LISTEN 확인

 

 

 

참고자료

https://tomcat.apache.org/tomcat-9.0-doc/introduction.html#CATALINA_HOME_and_CATALINA_BASE

 

Apache Tomcat 9 (9.0.98) - Introduction

Before you start using CATALINA_BASE, first consider and create the directory tree used by CATALINA_BASE. Note that if you do not create all the recommended directories, Tomcat creates the directories automatically. If it fails to create the necessary dire

tomcat.apache.org

 

'WAS > Tomcat' 카테고리의 다른 글

Tomcat DataSource 생성  (0) 2025.02.05
Jakarta EE 변경점  (0) 2025.01.06
Tomcat 버전 및 EOS 날짜  (0) 2025.01.06
Tomcat에 Application 배포하기  (0) 2025.01.02