인프라

Apache HTTP 서버와 Tomcat WAS 서버 간의 로드 밸런싱 설정 (mod_jk 사용)

소행성왕자 2025. 3. 7. 15:45

하나의 도메인에서 URL 패턴에 따라 트래픽을 여러 WAS 서버로 분배할 수 있습니다.

예를 들어

http://your-domain/abc와 같은 요청은 aa_ajp13_worker라는 Tomcat 서버로 전달되고

http://your-domain/bb/something과 같은 요청은 bb_ajp13_worker라는 다른 Tomcat 서버로 전달됩니다.

여기서 중요한 점은 JkMount 지시어로 URL 패턴을 정의하여 각 요청이 어떤 서버로 전달될지 결정할 수 있다는 것입니다.

이 방식으로 여러 WAS 서버를 한 도메인 내에서 효율적으로 분배하고 관리할 수 있습니다.

즉, 도메인 하나에서 다양한 URL 경로에 맞춰서 트래픽을 분산시킬 수 있어, 트래픽 분배 및 부하 분산이 가능합니다.

1. mod_jk 설치 및 설정

먼저, mod_jk 모듈이 Apache 서버에 설치되어 있어야 합니다. AlmaLinux 9에서 Apache 서버에 mod_jk를 설치하는 방법은 다음과 같습니다.

sudo dnf install mod_jk

2. mod_jk 설정 파일 작성

mod_jk의 설정은 일반적으로 workers.properties 파일을 사용하여 정의합니다. 이 파일에는 Tomcat 서버들을 등록하고, 트래픽을 어떻게 분배할지에 대한 규칙을 설정합니다.

conf/workers.properties

# workers.properties
worker.list=aa_ajp13_worker, bb_ajp13_worker
# aa_ajp13_worker 설정
worker.aa_ajp13_worker.type=ajp13
worker.aa_ajp13_worker.host=1.1.1.1
worker.aa_ajp13_worker.port=8009
# bb_ajp13_worker 설정
worker.bb_ajp13_worker.type=ajp13
worker.bb_ajp13_worker.host=2.2.2.2
worker.bb_ajp13_worker.port=8009

3. uriworkermap.properties 파일 작성

순서 중요함

/dt/*=bb_ajp13_worker
/*=aa_ajp13_worker

 

3. vhost.conf 파일 작성

<VirtualHost *:80>
ServerName example.com
DocumentRoot /home/aa
<Directory /home/aa>
AllowOverride All
Require all granted
</directory>
# URL 패턴에 따라 WAS 서버로 요청 전달
JkMount /bb/* bb_ajp13_worker
JkMount /* aa_ajp13_worker
</VirtualHost>

4. apache 재시작