본문 바로가기

Server/Web

Web - Apache를 이용한 로드 밸런서 설정 가이드

728x90

Apache 웹 서버는 웹 사이트나 애플리케이션의 트래픽을 여러 서버에 분산시키는 로드 밸런서로도 사용합니다.

이를 통해 서버의 부하를 줄이고 성능을 향상시키며 고가용성을 보장할 수 있습니다.

 

로드 밸런서란?

로드 밸런서는 네트워크 트래픽을 여러 서버로 분산시키는 역할을 합니다.

 

  • 부하 분산 : 여러 서버에 트래픽을 분산시켜 서버 과부하를 방지합니다.
  • 성능 향상 : 여러 서버가 트래픽을 분담하여 응답 시간이 단축됩니다.
  • 고가용성 : 특정 서버에 문제가 발생해도 다른 서버에서 요청을 처리하여 서비스의 가용성을 높입니다.

1. 모듈 활성화

httpd.conf 파일은 일반적으로 /etc/httpd/conf/httpd.conf 또는 /etc/apache2/httpd.conf에 위치합니다.

# mod_proxy 모듈 활성화
LoadModule proxy_module modules/mod_proxy.so

# mod_proxy_balancer 모듈 활성화
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so

# mod_lbmethod_byrequests 모듈 활성화
LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so

2. 로드 밸런서 설정

<VirtualHost *:80>
    ServerAdmin samso@tistory.com
    DocumentRoot /samso/samsodir/samsoroot

    # 로드 밸런서 설정
    <Proxy "balancer://samsolb">
        BalancerMember http://192.168.1.101:80 loadfactor=1 timeout=5 retry=60 max=50 route=node1
        BalancerMember http://192.168.1.102:80 loadfactor=2 timeout=5 retry=60 max=50 route=node2 status=HotStandby
        ProxySet lbmethod=byrequests stickysession=JSESSIONID nofailover=On
    </Proxy>

    ProxyPass "/app" "balancer://samsolb/"
    ProxyPassReverse "/app" "balancer://samsolb/"
    
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

로드 밸런서 설정 설명

  • balancerMember : 로드 밸런서에 포함될 서버를 지정합니다.
  • ProxySet : 로드 밸런서 풀에 대한 설정을 지정합니다.
  • lbmethod : 로드 밸런싱 방법을 지정합니다.
  • stikeysession : 세션 유지를 위한 쿠키 이름을 지정합니다.
  • ProxyPass : 클라이언트 요청을 로드 밸런서에 전달합니다.
  • ProxyPassReverse : 프록시된 서버의 응답 헤더를 클라이언트에게 전달합니다.

3. BalancerMember 옵션

옵션 설명
status 백엔드 서버의 상태를 설정합니다. [Disabled] [HotStandby] [Ignored]
loadfactor 각 백엔드 서버에 할당되는 부하의 가중치를 지정합니다. [Default : 1]
retry 백엔드 서버가 다운된 후 다시 시도할 때 까지 대기 시간을 지정합니다. [초 단위]
timeout 백엔드 서버로부터 응답을 기다리는 최대 시간을 지정합니다. [초 단위]
route 백엔드 서버로 세션을 고정하는 라우트 정보를 지정합니다.
max 백엔드 서버로 전달되는 최대 동시 연결 수를 지정합니다.
min 백엔드 서버의 최소 연결 수를 지정합니다.
smax 백엔드 서버의 최대 유휴 연결 수를 지정합니다.
ttl 유휴 연결의 최대 생명 시간을 지정합니다. [초 단위]
flushpackets 응답 패킷을 전달 할 때 플러시할지 여부를 지정합니다. [On] [Off]
ping 백엔드 서버로 ping을 보내는 주기를 지정합니다. [초 단위]
pingwait ping 응답을 기다릴 시간을 지정합니다. [초 단위]
keepalive 백엔드 서버와의 keep-alive 연결을 사용할지 여부를 지정합니다. [Defalut : On]

4. 설정 적용

# systemctl restart httpd

 

728x90
반응형