Apache 기반 웹 분산 시스템은 Apache HTTP Server가 앞단에서 사용자의 요청을 받아 여러 대의 웹 서버로 분산하는 구조입니다.
전체 구조는 다음과 같습니다.
Internet
│
▼
Apache HTTP Server
(Load Balancer)
│
┌─────────────┼─────────────┐
▼ ▼ ▼
Web1 Web2 Web3
192.168.0.11 192.168.0.12 192.168.0.13
여기서 Apache는 다음과 같은 역할을 합니다.
사용자 요청 수신
요청 분산(Load Balancing)
장애 서버 제외(Fail Over)
Reverse Proxy
SSL 종료(HTTPS)
Apache에서 사용하는 주요 설정 파일
대표적으로 다음 파일들을 사용합니다.
파일 역할
httpd.conf Apache 메인 설정
extra/httpd-vhosts.conf VirtualHost 설정
httpd-proxy.conf Proxy 설정(환경에 따라)
workers.properties mod_jk 사용 시 Tomcat 연동
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
LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so
이 다섯 개가 로드밸런싱의 핵심입니다.
로드밸런서 설정
<Proxy "balancer://cluster">
BalancerMember http://192.168.0.11:80
BalancerMember http://192.168.0.12:80
BalancerMember http://192.168.0.13:80
ProxySet lbmethod=byrequests
</Proxy>
ProxyPass / balancer://cluster/
ProxyPassReverse / balancer://cluster/
이 설정의 의미는
사용자가 접속하면
↓
Apache가
↓
Web1, Web2, Web3 중 하나를 선택하여 전달합니다.
분산 방식
Apache는 여러 알고리즘을 제공합니다.
① byrequests
가장 많이 사용합니다.
사용자1 → WEB1
사용자2 → WEB2
사용자3 → WEB3
사용자4 → WEB1
요청 수 기준으로 분배합니다.
② bytraffic
트래픽 양을 기준으로 분배합니다.
WEB1 500MB
WEB2 100MB
↓
WEB2로 더 많이 보냄
③ bybusyness
현재 가장 한가한 서버로 보냅니다.
④ heartbeat
가장 안정적인 장애 대응 방식입니다.
Apache의 Reverse Proxy
Apache는 직접 페이지를 서비스하지 않고
사용자
↓
Apache
↓
Tomcat
↓
JSP 실행
↓
Apache
↓
사용자
이렇게 중간에서 전달만 하기도 합니다.
실제 기업 구조
Internet
│
Firewall
│
L4 Switch
│
Apache HTTP Server
(Load Balancer)
│
┌──────────────┴──────────────┐
▼ ▼
Apache/Tomcat1 Apache/Tomcat2
│ │
▼ ▼
Database Cluster
대기업에서는 Apache 앞에 L4 스위치를 두고, Apache는 웹 요청을 처리하며, 뒤에는 여러 대의 Tomcat과 데이터베이스 클러스터가 연결되는 구조를 많이 사용합니다.
예전에 정보처리기사, 정보관리기술사, 컴퓨터시스템응용기술사에서는 이 구성을 많이 출제했고, 최근에도 Apache Reverse Proxy, Load Balancing, VirtualHost, ProxyPass, mod_proxy, mod_jk 등의 설정과 동작 원리를 이해하는 것이 중요합니다.