Tomcat 에서 여러 인스턴스를 관리하는 방법이 있다. CATALINA_HOME 디렉토리에서 필요한 부분만 복제하고 약간의 설정을 수정하여 인스턴스들을 구성할 수 있다. server.xml 파일 하나에 여러 호스트 정보를 등록하여 관리할 수도 있지만 이 경우 Tomcat 을 재구동하면 모든 서비스들이 재구동되는 단점이 있으므로 그다지 추천하지는 않는다.
[CATALINA_HOME]
- Tomcat Engine 디렉토리 : bin, lib
- Tomcat Instance 디렉토리 : conf(설정), logs(로그), webapps(소스), work(jsp구동), temp(임시)
위 내용들 중 Instance 디렉토리를 아래의 절차를 거쳐 별도로 구성해 주면 된다.(Tomcat 설치 생략)
- 필요한 만큼의 Tomcat Instance 디렉토리를 생성한다.
- CATALINA_HOME 으로부터 필요 디렉토리를 복제한다.(conf, webapps)
- server.xml 에서 port 등 환경을 변경한다.
- 인스턴스 실행/중지 스크립트를 만들고 실행한다.
- 방화벽에서 해당 port 를 추가한다.
테스트 환경 : CentOS 7 / Tomcat 8.5
테스트 목표 : 서버 ip 에 특정 포트들에 연결되는 여러 인스턴스 구동
1. Instance 디렉토리 생성
# mkdir -p /app/tomcat
# chown -R tomcat:tomcat /app/tomcat
# su - tomcat
$ cd /app/tomcat
$ mkdir -p instance1/logs
2. CATALINA_HOME 에서 디렉토리 복제
$ cp -a /etc/tomcat8/conf instance1
$ cp -a /etc/tomcat8/webapps instance1
3. server.xml 설정 변경
$ vi instance1/conf/server.xml
$ vi instance1/conf/server.xml
<Server port="8005" shutdown="SHUTDOWN">
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
여기에 shutdown port 와 http 서비스 port / https port 를 바꿔준다. 인스턴스가 3개 라면 8005/8105/8205, 8080/8180/8280, 8443/8444/8445 처럼 포트가 겹치지 않고 기억하기 쉽도록 구성하면 된다.
4. 구동 스크립트 생성
$ vi instance1/startup.sh
#!/bin/sh
export CATALINA_HOME=/etc/tomcat8
export CATALINA_BASE=/app/tomcat/instance1
$CATALINA_HOME/bin/startup.sh
$ vi instance1/startup.sh
#!/bin/sh
export CATALINA_HOME=/etc/tomcat8
export CATALINA_BASE=/app/tomcat/instance1
$CATALINA_HOME/bin/shutdown.sh
$ chmod u+x startup.sh
$ chmod u+x shutdown.sh
이렇게 설정하면 Tomcat 설치 디렉토리에서는 구동 스크립트만 빌려 각각의 인스턴스를 구동할 수 있게 된다. 구성된 instance1 디렉토리를 필요한 만큼 복제한다.
$ cp -a instance1 instance2
$ cp -a instance1 instance3
복제 후에는 이미 진행했던 3,4 번 단계의 각 인스턴스 설정(server.xml, startup.sh, shutdown.sh)을 변경해 준다.
5. 방화벽 해당 port 추가
# firewall-cmd --permanent --zone=public --add-port=8080/tcp
# firewall-cmd --permanent --zone=public --add-port=8180/tcp
# firewall-cmd --permanent --zone=public --add-port=8280/tcp
# firewall-cmd --permanent --zone=public --add-port=8443-8445/tcp
# firewall-cmd --reload
6. 각 인스턴스 구동 후 확인
$ /app/tomcat/instance1/startup.sh
$ /app/tomcat/instance2/startup.sh
$ /app/tomcat/instance3/startup.sh
http://serverIP:instance1port
http://serverIP:instance2port
http://serverIP:instance3port
WRITTEN BY
- 손가락귀신
정신 못차리면, 벌 받는다.