Heim >Backend-Entwicklung >PHP-Tutorial >Apache Virtual Host: Load Balancer
Lastausgleich ist eine hervorragende Strategie zur Verteilung von Anfragen auf mehrere Backend-Server und verbessert so die Skalierbarkeit und Verfügbarkeit des Systems. Apache kann mit dem Modul mod_proxy_balancer als Load Balancer konfiguriert werden.
Hier ist eine vollständige Anleitung zur Implementierung des Lastausgleichs in Apache:
Aktivieren Sie zunächst die erforderlichen Module in Apache:
sudo a2enmod proxy sudo a2enmod proxy_http sudo a2enmod proxy_balancer sudo a2enmod lbmethod_byrequests
Starten Sie Apache neu, um die Module zu laden:
sudo systemctl restart apache2
Bearbeiten Sie nun die Konfigurationsdatei Ihres virtuellen Hosts, um die Lastausgleichsanweisungen hinzuzufügen.
Öffnen Sie die Konfigurationsdatei:
sudo your_editor /etc/apache2/sites-available/php.conf
Fügen Sie den folgenden Codeblock hinzu, um den Lastausgleich über mehrere Backend-Server hinweg zu konfigurieren:
<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>
Erklärung der oben genannten Elemente:
Im obigen Beispiel gehe ich davon aus, dass auf localhost auf den Ports 8080, 8081 und 8082 drei Backend-Dienste ausgeführt werden. Stellen Sie sicher, dass diese Dienste ausgeführt werden.
Andernfalls können Sie Backend-Server mit den richtigen Ports konfigurieren oder Docker-Container verwenden, um mehrere Dienste zu simulieren.
Wenn Sie einen Lastausgleich über HTTPS wünschen, fügen Sie auch den virtuellen SSL-Host (/etc/apache2/sites-available/php-le-ssl.conf) hinzu, um den Lastausgleich über HTTPS-Backend-Server zu ermöglichen:
<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>
Servergewichte festlegen
Sie können unterschiedliche Gewichtungen für Server festlegen, was bedeutet, dass einige Server mehr Datenverkehr empfangen als andere. Beispiel:
BalancerMember http://localhost:8080 loadfactor=1 BalancerMember http://localhost:8081 loadfactor=2 BalancerMember http://localhost:8082 loadfactor=1
In diesem Fall erhält der Server bei localhost:8081 doppelt so viele Anfragen wie die anderen.
Fehler-Timeouts und Wiederholungsversuche festlegen
Sie können Zeitüberschreitungen und Wiederholungsversuche festlegen, um Fehler auf Backend-Servern zu erkennen:
<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>
Überwachen und verwalten Sie den Load Balancer
Um den Zustand des Load Balancers zu überwachen und aktive/inaktive Mitglieder dynamisch zu verwalten, starten Sie die Schnittstelle Balancer Manager:
<Location "/balancer-manager"> SetHandler balancer-manager Require host localhost </Location>
Sie können jetzt auf http://php.info/balancer-manager zugreifen, um den Zustand des Load Balancers anzuzeigen und Einstellungen in Echtzeit anzupassen.
Nachdem Sie die Konfigurationsänderungen vorgenommen haben, starten Sie Apache neu, damit die Änderungen wirksam werden:
sudo systemctl restart apache2
Wenn Sie jetzt auf http://php.info zugreifen, verteilt Apache die Anfragen auf die definierten Backend-Server.
Sie können Apache so konfigurieren, dass der Zustand von Backend-Servern überprüft und diese automatisch aus dem Pool entfernt werden, wenn sie ausfallen. Dazu können Sie das Modul mod_proxy_hcheck verwenden.
Aktivieren Sie zunächst das Modul:
sudo a2enmod proxy_hcheck sudo systemctl restart apache2
Fügen Sie dann die folgende Konfiguration zu Ihrem
<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 überprüft jetzt automatisch die Backend-Server und entfernt sie aus dem Pool, wenn sie ausfallen.
Wenn Apache als Load Balancer konfiguriert ist, können Sie den Datenverkehr auf mehrere Backend-Server verteilen und so Skalierbarkeit und Redundanz gewährleisten. Die Verwendung von SSL und zusätzlichen Integritätsprüfungen trägt dazu bei, die Umgebung sicher und robust zu halten.
Das obige ist der detaillierte Inhalt vonApache Virtual Host: Load Balancer. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!