Apache HTTP Server와 Tomcat을 연동(Interlink)하여 정적 컨텐츠 처리 성능을 높이고 부하 분산(Load Balancing) 환경을 구성합니다. 가장 널리 사용되는
mod_jk모듈의 설치(컴파일)부터workers.properties설정까지의 전체 과정을 다룹니다.
0. 기본 개념 (Concepts)
- mod_jk: Apache가 Tomcat과 통신하기 위해 사용하는 플러그인 모듈입니다.
- AJP (Apache JServ Protocol): 웹 서버와 WAS 간의 효율적인 통신을 위해 최적화된 바이너리 프로토콜입니다. (Tomcat 기본 AJP 포트: 8009)
1. mod_jk 설치 (Compile)
mod_jk는 Apache 배포판에 기본 포함되어 있지 않으므로, 소스를 다운로드하여 컴파일해야 합니다. 이 과정에서 Apache의 확장 도구인 apxs가 필요합니다.
다운로드 및 압축 해제
최신 버전은 Tomcat Connectors 다운로드 페이지에서 확인 가능합니다.
# 1. 소스 다운로드 (버전은 시점에 따라 다를 수 있음)
wget http://apache.mirror.cdnetworks.com/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.41-src.tar.gz
# 2. 압축 해제
tar -zxvf tomcat-connectors-1.2.41-src.tar.gz
Configure 및 컴파일
native 디렉토리로 이동하여 컴파일을 수행합니다. 주의: --with-apxs 옵션에는 현재 설치된 Apache의 apxs 바이너리 절대 경로를 정확히 입력해야 합니다.
cd tomcat-connectors-1.2.41-src/native
# Apache 설치 경로에 맞춰 apxs 경로 지정 (/WAS/apache/bin/apxs)
./configure --with-apxs=/WAS/apache/bin/apxs
# 컴파일 및 설치
make && make install
설치 확인 (Verification)
설치가 완료되면 Apache의 modules 디렉토리에 mod_jk.so 파일이 생성되었는지 확인합니다.
ls -l /WAS/apache/modules/mod_jk.so
2. 워커 설정 (workers.properties)
Apache에게 "어떤 Tomcat 인스턴스와 통신할지" 알려주는 설정 파일입니다. 일반적으로 conf 디렉토리에 생성합니다.
파일 생성
vi /WAS/apache/conf/workers.properties
설정 내용 작성
# Tomcat 및 Java 경로 (환경에 맞게 수정)
workers.tomcat_home="/WAS/tomcat8"
workers.java_home="/usr/bin/java"
ps=/
# 워커 목록 정의 (콤마로 구분하여 다수 정의 가능)
worker.list=test1
# [test1] 워커 상세 설정
worker.test1.port=8009
worker.test1.host=localhost
worker.test1.type=ajp13
# worker.test1.lbfactor=1 (로드밸런싱 시 사용)
worker.test1.port는 Tomcat의 server.xml 내 <Connector protocol="AJP/1.3" ... /> 에 설정된 포트와 일치해야 합니다. (기본값: 8009)
3. Apache 설정 (httpd.conf)
마지막으로 Apache가 mod_jk 모듈을 로드하고, 특정 요청을 Tomcat(워커)으로 보내도록 설정합니다.
파일 수정
vi /WAS/apache/conf/httpd.conf
추가 내용
# 1. mod_jk 모듈 로드
LoadModule jk_module modules/mod_jk.so
<IfModule jk_module>
# 2. 워커 설정 파일 위치 지정
JkWorkersFile "conf/workers.properties"
# 3. 로그 설정 (트러블슈팅을 위해 필수)
JkLogFile "logs/mod_jk.log"
JkLogLevel info
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
JkRequestLogFormat "%w %V %T"
# 4. URL 매핑 (JkMount)
# /* : 모든 요청을 test1 워커(Tomcat)로 전달
# 특정 확장자만 보내려면: JkMount *.jsp test1
JkMount /* test1
</IfModule>
4. 기동 및 연동 테스트
설정이 완료되면 Apache와 Tomcat을 재기동합니다. 순서는 Tomcat 구동 -> Apache 구동 순서를 권장합니다.
설정 검증 (Syntax Check)
# Apache 설정 문법 검사
/WAS/apache/bin/apachectl -t
# "Syntax OK" 출력 확인
서비스 재기동
# Tomcat 재기동
/WAS/tomcat8/bin/shutdown.sh
/WAS/tomcat8/bin/startup.sh
# Apache 재기동
/WAS/apache/bin/apachectl restart
최종 확인
브라우저에서 Apache 포트(보통 80)로 접속했을 때, Tomcat의 페이지가 보인다면 연동에 성공한 것입니다.

Next Step:
연동에 성공했다면 정적 파일(이미지, CSS, JS)은 Apache가 처리하고, 동적 파일(JSP)만 Tomcat이 처리하도록 JkMount와 JkUnMount 설정을 튜닝하여 성능을 최적화해 보세요.