개인 저장용 블로그

Tomcat Tutorials - 멀티 인스턴스 (2) 본문

미들웨어/Tomcat, Apache

Tomcat Tutorials - 멀티 인스턴스 (2)

우엉잇 2022. 4. 5. 14:19
이번 목차는 멀티 인스턴스 대한 내용입니다. 

 

멀티 인스턴스를 하기 위해서 톰캣에 기본적인 서버 구조와 멀티인스턴스 서버 구조에 대해 확인 할 필요가 있습니다. 

 

기본적인 톰캣 서버 구조 입니다. 

bin 명령어 스크립트들이 있는 디렉터리
conf 설정 파일 디렉터리
lib 라이브러리 디렉터리
logs 로그 디렉터리
temp 임시 파일 디렉터리 
webapps 웹 애플리케이션 deploy 디렉터리
work  .class로 컴파일된 디렉터리

 

멀티 인스턴스로 구성하기 위해서는 다음과 같은 구조로 이루어 집니다. 

 

Tomcat Engine 

  ㄴ bin

  ㄴ lib

  ㄴ ... 등,등

Tomcat Instance 1 

  ㄴ conf 

  ㄴ webapps

  ㄴ work 

  ㄴ logs

Tomcat Instance 2

  ㄴ conf

  ㄴ webapps

  ㄴ work 

  ㄴ logs

 

1. 멀티 인스턴스 구성하기 

 

# 인스턴스 디렉토리 생성 

[tomcat@localhost tomcat]$ pwd
/product/tomcat

[tomcat@localhost tomcat]$ mkdir ptom1
[tomcat@localhost tomcat]$ mkdir ptom2

 

# 설정 파일 복사 및 디렉토리 생성 

- instance 1번 

[tomcat@localhost ptom1]$ cp -R ../apache-tomcat-9.0.62/conf .
[tomcat@localhost ptom1]$ cp -R ../apache-tomcat-9.0.62/webapps .

[tomcat@localhost ptom1]$ mkdir logs
[tomcat@localhost ptom1]$ mkdir work

 

- instance 2번 

[tomcat@localhost ptom2]$ cp -R ../ptom1/* .

 

# server.xml 수정 

각각의 인스턴스의 server.xml에 들어가 다음 ports 을 임의로 변경 해주면 됩니다. 

<Server port="8005" shutdown="SHUTDOWN">
.
.
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
.
.

첫번째로 설정되는 port는 shutdown하기 위해 필요한 port

두번째로 설정되는 port는 실질적으로 tomcat을 호출하는 port

세번째로 설정되는 port는 redirect를 하기위한 port

 

# 기동 스크립트 

[tomcat@localhost bin]$ pwd
/product/tomcat/ptom1/bin

[tomcat@localhost bin]$ ls -lrt
합계 8
-rwx------ 1 tomcat tomcat  216  4월  5 11:19 shutdown.sh
-rwx------ 1 tomcat tomcat 1407  4월  5 13:34 startup.sh

- startup.sh 

빨간색 부분만 환경에 맞춰 수정해주면 된다. 

#!/bin/sh

# start parameter 

export  CATALINA_HOME=/product/tomcat/apache-tomcat-9.0.62
export  CATALINA_BASE=/product/tomcat/ptom1

SERVER_NAME=ptom1  
LOG_DIR=${CATALINA_BASE}/logs
HEAP_DIR=${LOG_DIR}/dump
GC_LOG_HOME=${LOG_DIR}/gc
GC_LOG_FILENM=gc_${SERVER_NAME}_`date "+%Y%m%d%H"`.log

# Server Name 
CATALINA_OPTS="-Denv.servername=${SERVER_NAME} -Denv=product"

# Heap Memory
USER_MEM_ARGS="${USER_MEM_ARGS} -Xms1024m -Xmx1024m"
USER_MEM_ARGS="${USER_MEM_ARGS} -XX:NewSize=256m -XX:MaxNewSize=256m"
USER_MEM_ARGS="${USER_MEM_ARGS} -XX:MaxMetaspaceSize=256m -XX:MetaspaceSize=256m"
USER_MEM_ARGS="${USER_MEM_ARGS} -XX:+UseG1GC"

# GC
USER_MEM_ARGS="${USER_MEM_ARGS} -verbosegc"
USER_MEM_ARGS="${USER_MEM_ARGS} -Xloggc:${GC_LOG_HOME}/${GC_LOG_FILENM}"
USER_MEM_ARGS="${USER_MEM_ARGS} -XX:+PrintGCDetails"
USER_MEM_ARGS="${USER_MEM_ARGS} -XX:+PrintGCTimeStamps"
USER_MEM_ARGS="${USER_MEM_ARGS} -XX:+PrintHeapAtGC"

# Heap Dump
USER_MEM_ARGS="${USER_MEM_ARGS} -XX:+HeapDumpOnOutOfMemoryError"
USER_MEM_ARGS="${USER_MEM_ARGS} -XX:HeapDumpPath=${HEAP_DIR}"

# Change to Urandom
USER_MEM_ARGS="${USER_MEM_ARGS} -Djava.security.egd=file:/dev/./urandom"

export CATALINA_OPTS="${CATALINA_OPTS} ${USER_MEM_ARGS}"

if [ -d ${GC_LOG_HOME} ]; then
   echo "GC_LOGPATH=${GC_LOG_HOME}"
else
   echo "<`date`> Makeing ${GC_LOG_HOME} Directory..."
   mkdir -p ${GC_LOG_HOME}
fi

cd $CATALINA_HOME/bin

./startup.sh

- shutdown.sh

빨간색 부분만 환경에 맞춰 수정해주면 된다. 

#!/bin/sh

export  CATALINA_HOME=/product/tomcat/apache-tomcat-9.0.62
export  CATALINA_BASE=/product/tomcat/ptom1
export  CATALINA_OPTS="-Denv=product -Denv.servername=ptom1"

cd $CATALINA_HOME/bin

./shutdown.sh

# 호출 

인스턴스 1번
인스턴스 2번

 

인스턴스 1번 8081 port, 인스턴스 2번 8082 port가 정상적으로 호출되는것을 확인 할 수 있습니다. 

'미들웨어 > Tomcat, Apache' 카테고리의 다른 글

Tomcat Tutorials - 톰캣 설치 (1)  (0) 2022.04.04