WEB,WAS 및 기술

[WEB/WAS] Tomcat 엔진 하나로 컨테이너 2개 만들기

hunhee44 2025. 12. 31. 11:05

∴이글은 초심자용 글입니다. 

 

목표.Tomcat 엔진 하나로 컨테이너 2개 만들기

안녕하세요

오늘은 Tomcat 엔진 한개로 컨테이너를 2개를 만들어 볼겁니다.

이게 무슨 소리냐

 

한개의 서버에 tomcat을 2개 설치 해야한다면 

tomcat을 2개를 설치하는게 아니라 

1개를 설치해서 인스턴스만 2개로 나눈다는 뜻입니다.

 

*엔진

엔진은 말그대로 컨테이너가 작동할수 있게 도와주는겁니다.

 

*인스턴스/컨테이너 (보통 두개 같은말로 사용합니다)

엔진을 이용해서 프로세스를 띄우고 서버 자원만 있으면 계속 생성할수 있습니다.

 

구조를 보면 이런식일겁니다.

tomcat          엔진

instance1     컨테이너1       8080

instance2     컨테이너2       8090

 

8080 호출 하면 컨테이너1

8090 호출 하면 컨티에너2 이런식으로 나눈다는 얘기입니다.

 

 

*톰켓을 2개 설치하면 되지 왜 이렇게해?

이렇게 말씀하시면 솔직히 할말 없습니다.

하지만 서버는 한정되있고 같은 서버에 was가 몇개 더필요하다고 하면 

관리 하기 편하게 사용할 수 있겠죠?

 

예시로 들자면 저는 instance1, instance2 로 이름을 지었지만

요거를 mis, pms, groupware 등  업무명으로 네이밍을 지으면

편하겠죠

#예시입니다! 보통은 큰업무들은 하나의 서버로 돌리지 않아요

sso1,sso2 등 이렇게 사용하기 용이할겁니다.

 

보통 다중 인스턴스, 다중 컨테이너 등 여러가지 이름으로 불리고 있어요

 

오늘은 그냥 기본페이지를 각 포트번호로 호출만해서 열어볼거라

tomcat설치파일 정도만 하나 있으면 됩니다.

 

제 첫번째글부터 같이 오신분들은 설치파일이 있을겁니다.

 

아니면 tomcat 공식홈페이지에가서 다운로드 하면됩니다.

https://tomcat.apache.org/download-90.cgi

 

Apache Tomcat® - Apache Tomcat 9 Software Downloads

Welcome to the Apache Tomcat® 9.x software download page. This page provides download links for obtaining the latest version of Tomcat 9.0.x software, as well as links to the archives of older releases. Unsure which version you need? Specification version

tomcat.apache.org

 

준비물 apache-tomcat-9.0.113.tar.gz

25년 12월 31일 기준 9.0.113이 9버전 최신이네요

저는 이걸로 받도록 하겠습니다.

받고 서버에 업로드 해줍니다.

 

tomcat 설치파일
설치파일

 

준비끝!

 


 

 

본격적으로 시작하기 앞서서 제 블로그에서

1편부터 함께해온 분들은 파일들이 있을겁니다.

backup 이라는 디렉토리를 생성해서 다 옮겨주도록 하겠습니다.

지저분해서 옮기는겁니다 그냥 두고 하셔도 되요!

 

디렉토리 목록
그전거 백업

 

 

이제 tomcat 압축해제를 해주고 

압축해제한 디렉토리로 이동해서 engine 이란 디렉토리를 만들고 

전부 옮겨주겠습니다.

 

tomcat/engine 디렉토리 생성
engine 디렉토리

 

보통은 tocmat에 들어가면 바로 conf, bin, log 등등

파일들이 바로 있지만 전체를 engine 으로 옮겨  

tomcat/engine/ 위치하게 했습니다.

 

 

이 engine 디렉토리를  instance1, instance2로 복사 해줍니다.

 

instance 생성 화면
인스턴스 생성

 

자 이제 인스턴스 생성까지 완료 했습니다.

인스턴스1번 2번이 엔진을 이용해서 실행이 되게 만들어 주겠습니다.

엔진의 bin, lib를 이용할거니 필요없는것들은 삭제해주겠습니다.

 

필요없는 디렉토리 삭제
instance1번 모습

 

txt, md 라이센스 릴리즈 노트 등 필요 없는건 다 삭제해줬습니다.

깔끔하네요

 

요 친구들을 이제 엔진을 이용해서 시작하게 만들어 주겠습니다.

그럴려면 시작 스크립트를 생성 해줘야됩니다.

 

pwd
/home/hunhee/apache-tomcat-9.0.113/instance1

vi startup.sh

#!/bin/sh

export CATALINA_HOME=/home/hunhee/apache-tomcat-9.0.113/engine
export CATALINA_BASE=/home/hunhee/apache-tomcat-9.0.113/instance1
$CATALINA_HOME/bin/startup.sh


#저장후 종료
wq!

 

시작 스크립트 생성
startup.sh

 

#엔진홈

export CATALINA_HOME=/home/hunhee/apache-tomcat-9.0.113/engine

#인스턴스홈
export CATALINA_BASE=/home/hunhee/apache-tomcat-9.0.113/instance1

 

이렇게 간단하게 작성했습니다. 

 

시작스크립트도 생성해줬으니 종료스크립트도 만들어야겠죠?

pwd
/home/hunhee/apache-tomcat-9.0.113/instance1

vi shutdown.sh

#!/bin/sh

export CATALINA_HOME=/home/hunhee/apache-tomcat-9.0.113/engine
export CATALINA_BASE=/home/hunhee/apache-tomcat-9.0.113/instance1
$CATALINA_HOME/bin/shutdown.sh


#저장후 종료
wq!

 

종료 스크립트 생성
shutdown.sh

스크립트는 미리 실행권한을 주고 갑시다

 

chmod 755 shutdown.sh startup.sh 로 실행권한을 부여 해줬습니다.

 

이친구들을 복사해서 instance2  번으로 옮기고 

 

#인스턴스홈
export CATALINA_BASE=/home/hunhee/apache-tomcat-9.0.113/instance1를

export CATALINA_BASE=/home/hunhee/apache-tomcat-9.0.113/instance2 로만 바꾸면되겠죠?

 

그리고 중요합니다

*중요 인스턴스2번의 포트번호를 변경해줘야 오류안납니다.

저희가 오늘 할것은 8080, 8090 포트번호를 사용해서 2개의 인스턴스를 올리는거였습니다.

8080은 기본포트니 인스턴스1번친구는 그대로 두겠습니다.

인스턴스2번 친구의 포트를 변경해주겠습니다. 

 

pwd
/home/hunhee/apache-tomcat-9.0.113/instance2/conf

vi server.xml

#22 행쪽 셧다운 포트 변경
<Server port="8015" shutdown="SHUTDOWN">
  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  <!-- Security listener. Documentation at /docs/config/listeners.html
  <Listener className="org.apache.catalina.security.SecurityListener" />
  -->
  <!-- APR connector and OpenSSL support using Tomcat Native -->
  <Listener className="org.apache.catalina.core.AprLifecycleListener" />
  
  
  
  				... 중간 생략 ...
                            
                            
#71 행쪽 port 8090 으로 변경
     <Connector port="8090" protocol="HTTP/1.1"
                connectionTimeout="20000"
                redirectPort="8443"
                maxParameterCount="1000"
                />

 

인스턴스2번의 셧다운포트 호출포트

셧다운 포트는 톰켓을 중지시킬때 사용하는 포트입니다.

셧다운 포트, 호출 포트 2개 변경하셔야 됩니다!

 

자이제 2개 전부 실행시키고 확인해 보겠습니다.

같은 페이지가 나오면 달라진걸 모르니 

인스턴스2번 webapps 안의 톰켓 웰컴페이지를 지우고 

index.jsp 를 대충 만들어서 호출해보겠습니다.

index.jsp 테스트용
instance2 번index.jsp

별거없어요

index.jsp에 instance2!  이라고만 만들어줬습니다.

 

자이제 2개 실행시켜주고 호출 해보겠습니다.

ps -ef |grep tomcat 으로 프로세스 검색 하니 2개 잘떠있네요

 

프로세스 검색
톰켓 프로세스

 

포트 검색도 해보겠습니다.

포트 검색
포트검색

호출포트인 8080,8090

셧다운 포트인  8005,8015 두개다 잘떠있네요 

 

이제 브라우저에서 호출 해보겠습니다.

 

tomcat 호출
브라우저 호출

 

http://ip:포트번호로 브라우저 입력하시면

1번 인스턴스는 아무것도 안건드려서 톰켓 기본 페이지가 나오고

2번 인스턴스는 제가 index.jsp 를 임의로 만들어서 불러온겁니다.

 

 

이렇게 1개의 엔진에서 2개의 인스턴스/컨테이너 로 올린것을 확인하실수 있습니다.

디렉토리 구조 화면
구조

 

인스턴스3,4,5 등 서버 자원만 충분하면 인스턴스를 많이 생성할수 있겠죠?

 

다음시간에는 어떤걸 할지 고민하고 또 찾아 오겠습니다.

감사합니다.