꿀똥벌레
꿀똥벌레 개발 블로그
꿀똥벌레
전체 방문자
오늘
어제
  • 분류 전체보기 (90)
    • JAVA (17)
    • SPRING (14)
    • Elasticsearch (4)
    • GRADLE (2)
    • HTML, CSS (0)
    • JAVASCRIPT (0)
    • GIT (1)
    • Vue.js (1)
    • server (1)
    • Python (0)
    • IT리뷰 (0)
    • 인프라 (6)
    • IOS (21)
    • 디자인패턴 (20)
    • Kafka (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • persistent connection
  • connectionRequestTimeout
  • maxConnTotal
  • spring integration
  • mappings
  • spring
  • ES
  • elasticsearch
  • 스프링 인테그레이션
  • Index Template
  • Index
  • SWIFT
  • 스프링 인티그레이션
  • java
  • maxConnPerRoute
  • KEEPALIVE
  • 인덱스 템플릿
  • persistence connection
  • 엘라스틱서치
  • springintegration

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
꿀똥벌레

꿀똥벌레 개발 블로그

server

톰캣 멀티 인스턴스 생성 방법

2020. 11. 9. 21:07
기본적으로 멀티인스턴스(Multi Instance) 를 사용한다는 것은 톰캣에서 공유 가능한 엔진부분은 공유하여 사용하고, 설정파일과 같은 부분은 별도로 생성하여 하나의 톰캣 엔진으로 여러개의 인스턴스를 띄우는 것이다.

 

톰캣의 Engine부분: bin, lib

톰캣의 Instance 부분: conf, logs, temp, work, webapps

 

여러개의 인스턴스를 띄우기 위해서는 "톰캣 Instance" 부분을 복사하여 사용해야 합니다.

 

1. 우선 멀티 인스턴스를 사용하기 위해 필요한 구조를 복사합니다.

저같은 경우에는 /home/app/tomcat8.5/instances 라는 디렉토리를 생성하고 하위에 

instance1, instance2 디렉토리를 생성 하였습니다.

 

cp -a conf /home/app/tomcat8.5/instances/instance1

cp -a webapps /home/app/tomcat8.5/instances/instance1

mkdir /home/app/tomcat8.5/instances/instance1/logs

mkdir /home/app/tomcat8.5/instances/instance1/work

chown "소유자계정":"소유그룹" -R "권한부여할 디렉토리"

 

cp -a conf /home/app/tomcat8.5/instances/instance2

cp -a webapps /home/app/tomcat8.5/instances/instance2

mkdir /home/app/tomcat8.5/instances/instance2/logs

mkdir /home/app/tomcat8.5/instances/instance2/work

chown "소유자계정":"소유그룹" -R "권한부여할 디렉토리"

 

 

2. 각 인스턴스의 conf 디렉토리 하위에 server.xml을 수정합니다.

각 인스턴스가 사용할 포트를 변경하기 위함입니다.

  • Shutdown port: 이 포트는 톰캣을 셧다운하는데 사용되어 집니다. shutdown.sh 스크립트가 호출되면 이 포트로 시그널을 보냅니다. 
  • Connector port: 이 포트는 외부 접속시 접속할 포트 입니다. http well known 포트는 80이죠!
  • Ajp port: 이 포트는 Apache와 같은 웹서버가 Tomcat 과 커뮤니케이션을 위해서 사용되어 집니다.
  • Redirect port: SSL 접속 요청이 들어올경우에 Catalina 는 자동적으로 이 포트로 redirect 합니다.
  • 당연하지만 각 톰캣 인스턴스는 포트가 달라야 합니다.

 

<!-- SHUTDOWN 포트 -->
<Server port="8105" shutdown="SHUTDOWN">
  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />

<!-- http접속 포트 -->
<Connector port="80" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="81443" />

<!-- AJP 포트 -->
<Connector port="8109" protocol="AJP/1.3" redirectPort="81443" />
 

 

3. start, shutdown 쉘스크립트 작성

 

인스턴스를 나누었으니 당연히 인스턴스를 올리고 내리는 쉘 스크립트 또한 별도 설정이 필요합니다.

export CATALINA_HOME=/home/centos/app/tomcat8.5
export CATALINA_BASE=/home/centos/app/tomcat8.5/instances/instance1
./startup.sh

다른 옵션들은 별도로 검색하여 사용하시길 바랍니다.

CATALINA_BASE를 인스턴스 경로로 잡아주고 원래 톰캣엔진의 서버 시작 스크립트인 startup.sh를 실행해줍니다.

  • instance2번인경우 CATALINA_BASE 에 instance2를 넣으면 됩니다.
  • shutdown작성시에는 하단에 ./startup.sh 만 shutdown.sh로 변경하면 됩니다.
  • 경로를 ./로 설정하였으니 해당 쉘스크립트 파일은 톰캣 기본 bin 경로에 startup.sh와 같이 위치해야 합니다.

 

    꿀똥벌레
    꿀똥벌레
    개발자 꿀똥벌레 입니다.

    티스토리툴바