JBoss EAP 6와 Apache HTTP Server를
mod_cluster모듈을 사용하여 연동하는 방법을 정리합니다. 정적인 설정 없이도 WAS의 추가/삭제를 자동으로 감지하는 동적 클러스터링을 구현하며, 멀티캐스트(Advertise) 설정을 중심으로 다룹니다.
0. 사전 준비 (Prerequisites)
- OS: Windows 10 (테스트 환경)
- Web Server: Apache 2.2.x (JBoss EWS 포함 버전 권장)
- Middleware: JBoss EAP 6.4.x
.so)을 사용해야 합니다. JBoss EWS(Enterprise Web Server) 패키지를 사용하면 이미 최적화된 모듈이 포함되어 있습니다.
1. Apache 설정 (Web Server)
Apache에 mod_cluster 관련 모듈을 로드하고, JBoss가 보낸 멀티캐스트 신호를 수신할 수 있도록 설정합니다.
1) 필수 모듈 복사
JBoss EAP 설치 경로에 포함된 mod_cluster 관련 모듈(.so)을 Apache의 modules 디렉토리로 복사합니다.
- 원본 위치:
[EAP_HOME]/modules/system/layers/base/native/lib64/httpd/modules - 복사할 파일:
mod_advertise.somod_manager.somod_proxy_cluster.somod_slotmem.so
2) mod_cluster.conf 작성
httpd.conf에서 include 할 설정 파일을 작성합니다. 핵심은 VirtualHost 내의 ServerAdvertise On 설정입니다.
# 필수 모듈 로드 (순서 중요)
LoadModule slotmem_module modules/mod_slotmem.so
LoadModule manager_module modules/mod_manager.so
LoadModule proxy_cluster_module modules/mod_proxy_cluster.so
LoadModule advertise_module modules/mod_advertise.so
# 공유 메모리 파일 위치 지정
MemManagerFile "C:/Apache/logs/mod_cluster"
# JBoss 상태 관리 및 Advertise 수신 포트
Listen 6666
Order deny,allow
Deny from all
Allow from 127.0.0.1 # 보안상 로컬 접근만 허용 권장
# 멀티캐스트 광고 활성화 (핵심)
ServerAdvertise on
EnableMCPMReceive
# 관리 콘솔 URL
SetHandler mod_cluster-manager
Order deny,allow
Allow from all
2. JBoss 설정 (Middleware)
JBoss가 기동될 때 자신의 정보를 멀티캐스트로 전파하거나, 프록시(Apache) 리스트를 받아오도록 설정합니다.
1) Instance ID 설정 (domain.xml)
Sticky Session을 위해 각 서버 인스턴스에 고유한 ID를 부여해야 합니다. ${jboss.server.name} 변수를 사용하면 편리합니다.
<subsystem xmlns="urn:jboss:domain:web:2.2" default-virtual-server="default-host" instance-id="${jboss.server.name}" native="false">
<connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/>
<connector name="ajp" protocol="AJP/1.3" scheme="http" socket-binding="ajp"/>
...
</subsystem>
2) 소켓 바인딩 (Socket Binding) - 멀티캐스트 주소
동일 네트워크 내에 여러 JBoss 클러스터가 존재할 경우 혼선을 방지하기 위해 멀티캐스트 주소나 포트를 변경해야 합니다.
domain.xml 수정 (socket-binding-group):
<socket-binding-group name="full-ha-sockets" default-interface="public">
...
</socket-binding-group>
-Djboss.modcluster.multicast.address=224.10.1.1
3. 검증 및 테스트
설정 완료 후 Apache -> JBoss 순서로 기동합니다.
1) Apache 관리 콘솔 접속
브라우저에서 http://[Apache_IP]:6666/mod_cluster_manager 로 접속합니다.
- 정상: 하단에 연결된 JBoss Node(Node Name, IP, Port) 리스트가 나타납니다.
- 실패: 리스트가 비어있다면 멀티캐스트 통신이 방화벽에 막혀있거나, Advertise 설정이 잘못된 것입니다.
2) 클러스터링 동작 확인
애플리케이션 호출 시 세션이 유지되는지 확인하고, 한 쪽 노드를 셧다운 시켰을 때 Failover가 일어나는지 테스트합니다.
[그림] mod_cluster 매니저 화면 (노드 인식 성공)
Next Step:
멀티캐스트 사용이 불가능한 클라우드 환경이라면, mod_cluster 설정을 TCP 유니캐스트(Proxy List 지정 방식)로 변경하여 구성하는 방법을 검토해 보십시오.