changki123's Foundation

Apache 로드밸런싱 비법서

2024. 11. 5. 22:30 | Apache HTTP Server


728x90

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

 

끝.

728x90