로드 밸런싱은 여러 백엔드 서버에 요청을 분산시켜 시스템 확장성과 가용성을 향상시키는 탁월한 전략입니다. 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>
위 요소에 대한 설명:
위 예에서는 포트 8080, 8081 및 8082의 localhost에서 세 개의 백엔드 서비스가 실행되고 있다고 가정합니다. 이러한 서비스가 실행되고 있는지 확인하세요.
그렇지 않으면 올바른 포트로 백엔드 서버를 구성하거나 Docker 컨테이너를 사용하여 여러 서비스를 시뮬레이션할 수 있습니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!