Apache 웹 서버는 mod_proxy_balancer 모듈을 통해 로드밸런싱 기능을 지원합니다. 특히, 세션 유지 기능을 제공하여, 같은 사용자가 보낸 연속적인 요청을 동일한 백엔드 서버로 전달할 수 있어 사용자 경험을 개선할 수 있습니다. 여기서는 Apache에서 로드밸런싱을 설정하는 과정을 단계별로 설명합니다.
1. Apache 설치 및 모듈 확인
Apache를 설치하고, 필요한 로드밸런서 모듈이 설치되어 있는지 확인합니다.
# sudo dnf install -y httpd
# ls /usr/lib64/httpd/modules/
위 명령어로 mod_proxy.so, mod_proxy_balancer.so 모듈이 설치되어 있는지 확인할 수 있습니다.
2. Apache 설정 파일 수정
Apache 설정 파일(/etc/httpd/conf/httpd.conf)을 편집하여 로드밸런서 설정을 추가합니다. 만약 아래 모듈이 이미 로드되어 있다면, 이 단계는 생략할 수 있습니다.
# 로드 밸런서 모듈 로드
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
3. 로드밸런서 설정
백엔드 서버의 목록과 로드밸런싱 방식을 정의하는 Proxy 설정을 추가합니다. BalancerMember로 백엔드 서버들을 정의하고, 로드밸런싱 방식을 설정할 수 있습니다.
<Proxy "balancer://mycluster">
BalancerMember "http://192.168.1.10/"
BalancerMember "http://192.168.1.11/"
ProxySet lbmethod=byrequests
</Proxy>
ProxyPass "/" "balancer://mycluster/"
ProxyPassReverse "/" "balancer://mycluster/"
여기서 ProxySet lbmethod=byrequests는 기본값인 라운드로빈 방식으로 요청을 분산하는 설정입니다.
4. 방화벽 설정
웹 서버에 접근하기 위해 HTTP 서비스가 허용되도록 방화벽을 설정합니다.
# sudo firewall-cmd --permanent --add-service=http
# sudo firewall-cmd --reload
5. 설정 테스트 및 Apache 재시작
설정을 저장한 후, 구문에 오류가 없는지 테스트합니다.
# sudo apachectl configtest
이후 Apache를 재시작하여 변경 사항을 적용합니다.
# sudo systemctl restart httpd
페이지를 확인하면 192.168.0.1:80, 192.168.0.10:80 잘나온다.
6. 로드밸런싱 방법 추가 설정
Apache는 기본 라운드로빈 외에도 다양한 로드밸런싱 방식을 제공합니다. 이를 설정할 때는 ProxySet 옵션을 수정하여 원하는 방법을 선택할 수 있습니다.
bytraffic: 각 서버로 전달된 트래픽의 양에 따라 로드밸런싱 수행
ProxySet lbmethod=bytraffic
bybusyness: 각 서버의 활성 연결 수(바쁜 정도)를 기준으로 요청 분배
ProxySet lbmethod=bybusyness
heartbeat: mod_heartbeat와 mod_heartmonitor 모듈을 사용하여 서버의 상태를 모니터링하고 가장 상태가 좋은 서버로 요청을 전송
ProxySet lbmethod=heartbeat
끝.
'Apache HTTP Server' 카테고리의 다른 글
Apache로 만드는 나만의 웹 포탈: Virtual Host와 리다이렉션의 마법! (0) | 2024.11.12 |
---|---|
여기부터는 mod_proxy (1) | 2024.11.03 |