
머리말
최근에 물리적인 하나의 서버에 두 개의 톰캣 서버를 서비스하는 경우가 발생했다. 하나의 물리적 서버에 두 개의 톰캣 서버를 구성하는 이유는 각각의 톰캣 서버가 상호 의존적이지 않게 서비스를 하기 위함이다. 가령, A 서비스를 중단했다고 B 서비스가 중단되면 안 될 일이다. 하지만, 다중 톰캣을 구현하지 않는다면 모든 서비스가 한 개의 톰캣 서버에서 구동되기 때문에 한 번에 다 죽고 사는 공동 운명체를 갖게 된다. 이를 방지하고자 다중 톰캣을 구현하기도 한다. 이러한 이유로 본 포스팅에서 하나의 물리적 서버에서 두 개의 톰캣 서버를 서비스하는 방법을 소개한다. 톰캣의 버전과는 크게 무관한 포스팅이며 서버의 운영체제와도 관계없이 범용적으로 적용이 가능한 방법으로 소개한다.
1. 톰캣 서버의 디렉터리 구조
다중 톰캣을 구성하는 방법에 대해 많은 블로그에서 다양한 방법으로 설명하고 있다. 물론, 틀린 방법은 아니지만 각양각색의 디렉터리 구조 중 어떤 방법이 효율적 일지 판단이 어려울 수 있다. 본 포스팅에서는 다중 톰캣의 의미에 알맞게, 톰캣 서버 확장성에 유리한 디렉터리 구성을 소개한다. 아래와 같은 디렉터리 구조로 톰캣을 구성하면, 디렉터리 구조가 직관적이며 몇 가지의 설정만 바꿔주면 톰캣 서버 증설에 따른 관리가 용이하다는 장점이 있다.
TomcatServer1: C:\Program Files\Apache Software Foundation\TomcatServer1
TomcatServer2: C:\Program Files\Apache Software Foundation\TomcatServer2

2. Apache Tomcat 공식 사이트에서 톰캣 다운로드
아파치 톰캣의 공식 사이트에 접속하면 어렵지 않게 다운로드 가능하다. 아래의 사진과 같이 여러 개의 버전이 존재하지만 자신이 필요로 하는 톰캣 버전으로 다운로드해도 좋다. 톰캣의 코어 영역은 새로운 버전이 릴리즈 돼도 큰 변화가 없을 것으로 예상하기 때문에 다중 톰캣으로 구성하는데 큰 무리가 없다. 본 포스팅에서는 Tomcat 7.0.72 버전을 기준으로 작성되었으며, 공시 홈페이지 리뉴얼에 따라 다운로드 경로는 조금씩 변할 수 있으니 참고 바란다.

각자 원하는 톰캣 버전을 클릭하면 다운로드 페이지로 이동되는데, 모든 버전이 아래와 같이 여러 가지 타입의 패키지로 제공되고 있다. 본인은 Windows Server 64bit 운영체제이기 때문에 64-bit Windows.zip을 다운로드했다. 주의할 점은 Windows 운영체제의 경우 32-bit/64-bit Windows Service Installer 인스톨러 패키지도 제공되는데, 해당 패키지는 설치 마법사로 톰캣을 설치하기 때문에 다중 톰캣을 구현하기 위해 약간의 어려움이 있다. 따라서 인스톨러 패키지가 아닌 압축된 형태로 제공하는 패키지를 다운로드해야 된다.

32-bit/64-bit Windows Service Installer 인스톨러 패키지로 설치하면 안 되는 이유
인스톨러 패키지는 윈도우 서비스 등록하는 과정까지 자동으로 설정이 되기 때문에 수동으로 윈도우 서비스를 등록할 수 있는 bat(sh) 파일은 제공되지 않는다. 경우에 따라서 bat(sh) 파일 따로 구해서 설정은 가능하지만 레지스트리의 가비지가 남을 수 있기 때문에 바람직하지 않다. 어차피 다중 톰캣을 구성을 위해서 세세한 설정이 필요하니, 자동으로 설정해 주는 기능은 포기하고 수동으로 설치하는 zip 패키지를 권장한다.
3. 첫 번째 Tomcat Server Setup
다운로드가 완료되면 첫 번째 톰캣 서버 설치를 시작한다. 설치 마법사(Installer)가 아닌 수동으로 톰캣 서버를 설치하기 때문에 비교적 손이 많이 가지만, 톰캣의 구조를 이해하고 다중 톰캣을 구현하기 위해서는 익숙해질 필요가 있다. 톰캣 서버 설치에 필요한 작업 절차는 아래와 같으니 참고 바란다.
3-1) 톰캣 기본 디렉터리 구성
3-2) conf/server.xml 포트번호 설정
3-3) bin/startup.bat(sh) 및 bin/shutdown.bat(sh) 설정
3-4) bin/service.bat 설정
3-1) 톰캣 기본 디렉터리 구성
쉽게 설명하면 다운로드한 zip 파일의 압축을 해제할 경로를 말한다. 어느 위치이든 상관없으니 관리하기 편한 곳으로 자리 잡으면 된다. 본인은 C:\Program Files\Apache Software Foundation 경로에 Tomcat7Server1 폴더를 생성했다. 압축을 해제한 모습은 아래와 같다.

3-2) conf/server.xml 포트번호 설정
server.xml을 수정하는 이유는 톰캣 서버의 포트번호를 설정해 주기 위함이며, 서로 중복되지 않게만 자신의 입맛대로 설정해 주면 문제없다. 아래의 사진과 같이 빨간색으로 표시한 부분을 변경해 주면 되는데, 본인의 경우 관리를 편하게 하기 위해 기본으로 세팅되어 있는 포트번호에서 앞자리만 전부 7로 바꾸었다. 물론, 현재 상황에서는 첫 번째 톰캣 서버를 설치하는 과정이기 때문에 기본으로 세팅된 포트번호를 그대로 사용해도 충돌 걱정은 없다.

위 사진의 server.xml 설정 파일은 기본 설정에서 주석만 제거한 상태이다.
3-3) bin/startup.bat(sh) 및 bin/shutdown.bat(sh) 설정
startup 및 shutdown 배치파일을 수정하는 이유는 톰캣 서버의 서비스를 구동시키거나 중지시키기 위해 필요한 설정을 위함이다. Linux 운영체제의 경우 필수적으로 설정을 해야 하며, Windows 운영체제의 경우 3-3), 3-4) 중에 한 가지 방법을 선택하면 된다. Windows 운영체제라면 3-4) 방법을 권장한다.
권장하는 이유는 간단하다. Linux 운영체제는 startup.sh 파일을 실행하면 눈에 보이지 않는 백그라운드 영역에서 서비스가 실행되며, 서비스를 중지할 때는 shutdown.sh 파일을 실행하면 서비스가 종료된다. 하지만 Windows 운영체제의 경우 startup.bat 파일을 실행하면 커맨드창이 실행되면서 서비스된다. 실행된 커맨드 창을 항상 유지시켜야 서비스가 가능하기 때문에 운용자의 실수로 서비스가 중단되는 상황이 발생할 수 있다. 그렇기 때문에 Windows 운영체제에서 지원하는 서비스 관리 도구에 서비스를 등록함으로써 백그라운드 영역에서 서비스하는 방법을 권장한다.
Example)
set "CATALINA_HOME=C:\Program Files\Apache Software Foundation\Tomcat7Server1"
set "CATALINA_BASE=C:\Program Files\Apache Software Foundation\Tomcat7Server1"
set "SERVER_NAME=Server1"
set "JAVA_HOME=C:\Program Files\Java\jdk1.7.0_80"
톰캣 환경 변수 값을 세팅해 주는 위치는 아래와 같이 setlocal 바로 위에 기입해 주면 된다. 만약 setlocal이 보이지 않는다면, 제일 위에 있는 @echo와 주석(rem)을 제외하고 가장 위에 적어주면 된다. startup, shutdown 동일한 내용으로 동일한 위치에 작업해 주면 된다.

톰캣 서버 설치를 위해 자바(Java) 설치는 필수 요구사항이다.
3-4) bin/service.bat 설정
앞서 설명한 내용과 같이 service.bat 파일을 수정하는 이유는 Windows 운영체제에서 제공하는 서비스 관리 도구에 톰캣 서비스를 등록하기 위해서다. 서비스 관리 도구에 접근하기 위한 경로는 아래와 같다.
서비스 관리 도구: 제어판 - (시스템 및 보안) - 관리도구 - 서비스

위와 같은 서비스 관리 도구에 톰캣 서비스를 등록하기 위해서, 먼저 service.bat 파일을 수정해야 한다. 총 두 개의 변수를 수정하는데, SERVICE_NAME 변수는 톰캣 서비스 물리명이고 DISPLAYNAME 변수는 톰캣 서비스 논리명이다. Windows 운영체제에 등록된 모든 서비스 중 유일한 값으로 설정해야 한다.
수정하는 위치는 service.bat 파일의 내용 중 SERVICE_NAME 변수명으로 검색을 하면 70번대 라인에 수정해야 될 두 개의 변수가 보인다. 자신의 입맛에 알맞게 서비스명을 수정해 주면 된다. 추가로, 서비스명에 언더바(_)가 들어가면 서버 구동 시 오류가 발생하니 언더바가 들어가지 않는 이름으로 명명해야 한다. 본인의 경우 아래의 사진과 같이 변경했다.

톰캣 서비스명을 지정한 다음 서비스를 등록해야 한다. 커맨드(cmd) 창을 열고 첫 번째 서버가 설치된 경로의 bin 폴더로 이동한다. 위에서 수정한 service.bat 파일을 아래와 같은 명령어로 실행한다.
명령어: service.bat install

위에서 소개한 윈도우 서비스 등록 명령어를 수행하면 윈도우 서비스 관리 도구에 자신이 지정한 이름으로 톰캣 서비스가 등록된 모습을 확인할 수 있다. 이제 윈도우 서비스를 통해 톰캣 서버를 시작 또는 종료할 수 있다.

4. 두 번째 Tomcat Server Setup
두 번째 톰캣 서버를 설치하는 방법은 첫 번째 서버를 설치하는 과정과 동일하다. 추후에 세 번째 또는 네 번째 톰캣 서버를 증설할 때에도 같은 방법으로 쉽게 증설할 수 있다. 설치 과정은 동일하지만 간단히 요약하자면 아래와 같다.
4-1) 톰캣 기본 디렉터리 구성
첫 번째 톰캣 서버 경로와 동일한 위치에 원하는 디렉터리를 생성한다. 가급적 서비스 단위 혹은 넘버링으로 구분할 수 있도록 디렉터리를 관리하는 것이 좋다.
ex) C:\Program Files\Apache Software Foundation\Tomcat7Server2
4-2) conf/server.xml 포트번호 설정
첫 번째 톰캣 서버의 포트번호와 중복되지 않는 값으로 설정한다. 본인의 경우 첫 번째 톰캣 서버는 각 포트번호의 앞자리를 7로 변경했으며, 두 번째 톰캣 서버는 모두 6으로 변경했다.

4-3) bin/startup.bat(sh) 및 bin/shutdown.bat(sh)
첫 번째 톰캣 서버와 동일한 방법으로 변경을 하는데 내용은 두 번째 톰캣 서버의 디렉터리와 이름에 알맞게 수정하도록 한다. 별도의 설명은 필요 없고 아래의 예시와 같이 쉽게 이해할 수 있다.
Example)
set "CATALINA_HOME=C:\Program Files\Apache Software Foundation\Tomcat7Server2"
set "CATALINA_BASE=C:\Program Files\Apache Software Foundation\Tomcat7Server2"
set "SERVER_NAME=Server2"
set "JAVA_HOME=C:\Program Files\Java\jdk1.7.0_80"
4-4) bin/service.bat 설정
마찬가지로 첫 번째 설정한 톰캣 서버와 동일한 방법으로 수정을 하면 되는데, 내용은 두 번째 톰캣 서버에 알맞게 수정해 주도록 한다. 본인의 경우 아래와 같이 서비스 네임을 구분 지었다. 동일하게 서비스 등록을 위한 명령어 service.bat install 수행까지 완료하면 모든 과정이 끝난다.

5. 톰캣 서버의 구동
다중 톰캣을 구성하기 위한 모든 과정은 끝나고 서버 기동으로 테스트만 수행하면 된다. Linux 운영체제는 각 톰캣 서버별로 존재하는 구동 쉘(startup.sh) 스크립트를 실행하면 된다. Windows 운영체제는 구동 배치(startup.bat) 스크립트 또는 윈도우 서비스 관리 도구로 톰캣 서버를 구동한다. 아래의 사진은 Windows 운영체제의 서비스 관리 도구에 다중 톰캣으로 서비스가 등록된 모습이다.

위의 사진과 같이 윈도우 서비스 목록에서 Tomcat7Server1, Tomcat7Server2 다중 톰캣 서비스를 확인할 수 있다. 서비스 구동을 원하는 톰캣 서버를 선택 후 왼쪽의 시작 버튼을 클릭하면 톰캣 서버는 구동된다.

아래의 사진은 서비스 관리 도구에서 톰캣 서버를 모두 실행시킨 후 지정한 포트 번호로 정상 접속이 되는지 확인해 본 결과다. 모두 정상적으로 페이지가 구동되었으며, 서로 독립적인 톰캣 서버기 때문에 한쪽 톰캣 서버가 내려가도 다른 톰캣 서버에는 영향을 미치지 않는다.

꼬리말
요약만 간추려 설명하면 매우 간단한 과정인데, 잘 설명하고 싶은 욕심이 지나쳐 지나치게 장황한 포스팅이 되지 않았나 걱정이 앞선다. 나름의 성심껏 작성한 포스팅이 적게나마 도움이 되길 바라는 마음뿐이다. 본 포스팅의 요약을 간추려 본다면, Tomcat 디렉터리를 통째로 복사 후 server.xml 파일과 startup, shutdown 배치파일을 수정하면 끝이다. 여기에 Windows 운영체제의 경우 서비스 관리 도구에 등록하는 과정만 추가되었다. 본 포스팅에서는 다루지 않았지만 톰캣 서버를 설정하기 위한 옵션은 매우 다양하게 존재한다. 추후 시간이 허락한다면 톰캣 서버에 대한 설정 방법을 소개하는 포스팅을 기약하며, 두개 이상의 톰캣을 설치하는 과정을 소개한 본 포스팅은 여기서 마무리를 짓도록 한다.
소중한 댓글 (0)