>백엔드 개발 >PHP 튜토리얼 >Apache 가상 호스트: 로드 밸런서

Apache 가상 호스트: 로드 밸런서

Susan Sarandon
Susan Sarandon원래의
2024-10-11 10:10:30736검색

Apache Virtual Host: Load Balancer

로드 밸런싱은 여러 백엔드 서버에 요청을 분산시켜 시스템 확장성과 가용성을 향상시키는 탁월한 전략입니다. mod_proxy_balancer 모듈을 사용하여 Apache를 로드 밸런서

로 구성할 수 있습니다.

다음은 Apache에서 로드 밸런싱 구현에 대한 전체 가이드입니다.

필수 모듈 활성화

먼저 Apache에서 필수 모듈을 활성화합니다.

sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_balancer
sudo a2enmod lbmethod_byrequests

Apache를 다시 시작하여 모듈을 로드합니다.

sudo systemctl restart apache2

로드 밸런싱을 사용하여 가상 호스트 구성

이제 가상 호스트의 구성 파일을 편집하여 로드 밸런싱 지시어를 추가하세요.

구성 파일 열기:

sudo your_editor /etc/apache2/sites-available/php.conf

여러 백엔드 서버에 걸쳐 로드 밸런싱을 구성하려면 다음 코드 블록을 추가하세요.

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName php.info

    # Load balancer configuration
    <Proxy "balancer://meucluster">
        BalancerMember http://localhost:8080
        BalancerMember http://localhost:8081
        BalancerMember http://localhost:8082
        ProxySet lbmethod=byrequests
    </Proxy>

    ProxyPreserveHost On
    ProxyPass / balancer://meucluster/
    ProxyPassReverse / balancer://meucluster/

    <Directory /var/www/html/php/>
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/php_error_http.log
    CustomLog ${APACHE_LOG_DIR}/php_access_http.log combined
</VirtualHost>

위 요소에 대한 설명:

  • BalancerMember: 백엔드 서버를 정의합니다. 이 경우 포트 8080, 8081, 8082에서 수신 대기하는 세 개의 서버를 구성하고 있습니다. 이 값을 실제 서버로 바꿀 수 있습니다.
  • lbmethod=byrequests: 균형 조정 방법을 정의합니다. byrequests는 요청을 서버 간에 균등하게 분배합니다. 다른 방법은 다음과 같습니다.
    • bytraffic: 트래픽 양에 따라 배분합니다.
    • bybusyness: 활성 연결 수를 기준으로 배포합니다.
    • 하트비트: 고급 상태 모니터링 접근 방식을 사용합니다.

백엔드 서버 추가

위 예에서는 포트 8080, 8081 및 8082의 localhost에서 세 개의 백엔드 서비스가 실행되고 있다고 가정합니다. 이러한 서비스가 실행되고 있는지 확인하세요.

그렇지 않으면 올바른 포트로 백엔드 서버를 구성하거나 Docker 컨테이너를 사용하여 여러 서비스를 시뮬레이션할 수 있습니다.

HTTPS용 SSL 모듈 활성화

HTTPS를 통해 로드 밸런싱을 수행하려면 SSL 가상 호스트(/etc/apache2/sites-available/php-le-ssl.conf)도 추가하여 HTTPS 백엔드 서버 전체에 로드 밸런싱을 수행하세요.

<IfModule mod_ssl.c>
    <VirtualHost *:443>
        ServerAdmin webmaster@localhost
        ServerName php.info
        DocumentRoot /var/www/meu_projeto

        # Configuração do Balanceador de Carga
        <Proxy "balancer://meucluster">
            BalancerMember http://localhost:8080
            BalancerMember http://localhost:8081
            BalancerMember http://localhost:8082
            ProxySet lbmethod=byrequests
        </Proxy>

        ProxyPreserveHost On
        ProxyPass / balancer://meucluster/
        ProxyPassReverse / balancer://meucluster/

        SSLEngine on
        SSLCertificateFile /etc/letsencrypt/live/php.info/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/php.info/privkey.pem
        Include /etc/letsencrypt/options-ssl-apache.conf

        ErrorLog ${APACHE_LOG_DIR}/php_error_https.log
        CustomLog ${APACHE_LOG_DIR}/php_access_https.log combined
    </VirtualHost>
</IfModule>

고급 구성 옵션

서버 가중치 설정

서버에 서로 다른 가중치를 설정할 수 있습니다. 즉, 일부 서버는 다른 서버보다 더 많은 트래픽을 수신합니다. 예:

BalancerMember http://localhost:8080 loadfactor=1
BalancerMember http://localhost:8081 loadfactor=2
BalancerMember http://localhost:8082 loadfactor=1

이 경우 localhost:8081의 서버는 다른 서버보다 두 배 많은 요청을 받게 됩니다.

실패 시간 제한 및 재시도 설정

백엔드 서버의 오류를 감지하기 위해 시간 초과 및 재시도를 설정할 수 있습니다.

<Proxy "balancer://mycluster">
BalancerMember http://localhost:8080 retry=5 timeout=10
BalancerMember http://localhost:8081 retry=5 timeout=10
BalancerMember http://localhost:8082 retry=5 timeout=10
ProxySet lbmethod=byrequests
</Proxy>

로드 밸런서 모니터링 및 관리

로드 밸런서 상태를 모니터링하고 활성/비활성 멤버를 동적으로 관리하려면 밸런서 관리자 인터페이스를 실행하세요.

<Location "/balancer-manager">
SetHandler balancer-manager
Require host localhost
</Location>

이제 http://php.info/balancer-manager에 액세스하여 로드 밸런서 상태를 확인하고 실시간으로 설정을 조정할 수 있습니다.

아파치 다시 시작

구성을 변경한 후 Apache를 다시 시작하여 변경 사항을 적용하세요.

sudo systemctl restart apache2

로드 밸런싱 테스트

이제 http://php.info에 액세스하면 Apache가 정의된 백엔드 서버에 요청을 배포합니다.

상태 점검 구현(선택 사항)

백엔드 서버의 상태를 확인하고 서버가 다운되면 풀에서 자동으로 제거하도록 Apache를 구성할 수 있습니다. 이를 위해 mod_proxy_hcheck 모듈을 사용할 수 있습니다.

먼저 모듈을 활성화합니다.

sudo a2enmod proxy_hcheck
sudo systemctl restart apache2

그런 다음 블록:

<Proxy "balancer://meucluster">
    BalancerMember http://localhost:8080 hcheck=on hcmethod=HEAD
    BalancerMember http://localhost:8081 hcheck=on hcmethod=HEAD
    BalancerMember http://localhost:8082 hcheck=on hcmethod=HEAD
    ProxySet lbmethod=byrequests
</Proxy>

Apache는 이제 자동으로 백엔드 서버를 확인하고 실패할 경우 풀에서 제거합니다.

결론

Apache를 로드 밸런서로 구성하면 여러 백엔드 서버에 트래픽을 분산하여 확장성과 중복성을 보장할 수 있습니다. SSL 및 추가 상태 확인을 사용하면 환경을 안전하고 강력하게 유지하는 데 도움이 됩니다.

위 내용은 Apache 가상 호스트: 로드 밸런서의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.