"오늘의 문제를, 내일의 기록으로 남깁니다."

막연한 이론보다, 구체적인 코드가 필요할 때. 직접 겪고 해결한 문제들을 기록합니다. 실무에서 부딪히는 진짜 이슈와, 내가 이해한 방식 그대로 정리한 가이드입니다.

웹개발/서버 운영 & 인프라

Apache + Tomcat 로드밸런싱 구성 방법 (mod_jk vs mod_proxy 실무 설정 예제)

자바를잡아 2025. 6. 26. 19:42
반응형

Apache + Tomcat 로드밸런싱 구성 방법 (mod_jk vs mod_proxy 실무 설정 예제)

Tomcat 서버 여러 대를 운영할 때, 가장 흔하게 쓰는 방식은 Apache + Tomcat 로드밸런싱입니다.
이때 mod_jk와 mod_proxy 중 어떤 모듈을 사용하는지에 따라 성능과 설정 방식이 크게 달라집니다.
이번 글에서는 mod_jk vs mod_proxy의 차이점과 실무 설정 예제를 정리해드립니다.

✅ 목차

  • Apache + Tomcat 아키텍처 기본 구조
  • mod_jk vs mod_proxy 개요 및 차이
  • 실제 설정 예제
  • Sticky Session 여부에 따른 구성
  • 실무에서의 선택 기준

📌 Apache + Tomcat 구조 개요

Apache는 정적 파일 처리 및 요청 분배를 담당하고, Tomcat은 JSP/Servlet 처리를 맡습니다.
다중 Tomcat 인스턴스를 로드밸런싱 하기 위해 Apache는 다음 중 하나의 모듈을 사용합니다:

  • mod_jk: AJP 프로토콜 기반
  • mod_proxy_ajp, mod_proxy_http: HTTP 기반

📌 mod_jk vs mod_proxy 차이점

항목mod_jkmod_proxy
프로토콜AJP (Binary)HTTP
속도더 빠름 (오버헤드 적음)느리지만 설정 간단
설정 난이도복잡 (workers.properties 필요)간단 (httpd.conf 내 설정)
보안AJP 취약점 존재 (CVE-2020-1938)상대적으로 안전
Sticky Session지원지원 (stickysession 파라미터 필요)
추천 환경고성능, 레거시신규 프로젝트, 클라우드

✅ 실무 예제 ① — mod_jk 구성

1. httpd.conf 설정

LoadModule jk_module modules/mod_jk.so
JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel info

2. workers.properties 예시

worker.list=app1, app2, loadbalancer

worker.app1.type=ajp13
worker.app1.host=127.0.0.1
worker.app1.port=8009

worker.app2.type=ajp13
worker.app2.host=127.0.0.1
worker.app2.port=8010

worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=app1,app2
worker.loadbalancer.sticky_session=1

3. URL 매핑

JkMount /* loadbalancer

✅ 실무 예제 ② — mod_proxy 구성

1. httpd.conf 모듈 활성화

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule slotmem_shm_module modules/mod_slotmem_shm.so

2. 설정 예시

<Proxy "balancer://mycluster">
    BalancerMember http://127.0.0.1:8080 route=tomcat1
    BalancerMember http://127.0.0.1:8081 route=tomcat2
    ProxySet stickysession=JSESSIONID
</Proxy>

ProxyPass / balancer://mycluster/
ProxyPassReverse / balancer://mycluster/

📌 Sticky Session이란?

클라이언트가 최초로 접속한 WAS 인스턴스에 계속 연결되도록 만드는 방식입니다.
로그인 세션을 공유하지 않아도 유지 가능하며, 쿠키(JSESSIONID)를 기반으로 Apache가 분기 처리합니다.

✅ 실무 선택 기준 요약

상황추천 방식
속도 최우선 / AJP 사용 중mod_jk
설정 간편 / 가시성 중요mod_proxy
신규 서비스 / 클라우드 환경mod_proxy
레거시 시스템 유지mod_jk (보안 설정 주의)

✅ 마무리

mod_jk과 mod_proxy는 환경과 목적에 따라 선택이 갈립니다.
레거시라면 mod_jk도 충분하지만, 신규 프로젝트에는 mod_proxy 기반의 HTTP 로드밸런싱을 권장합니다.

🔔 다음 글 예고

[Apache, Nginx, Tomcat의 역할 차이 — 언제 뭘 써야 할까?]

반응형