Heim >Backend-Entwicklung >PHP-Tutorial >Apache Virtual Host: Load Balancer

Apache Virtual Host: Load Balancer

Susan Sarandon
Susan SarandonOriginal
2024-10-11 10:10:30739Durchsuche

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 die erforderlichen Module

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

Konfigurieren Sie den virtuellen Host mit Lastausgleich

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:

  • BalancerMember: Definiert die Backend-Server. In diesem Fall konfigurieren wir drei Server, die die Ports 8080, 8081 und 8082 überwachen. Sie können diese Werte durch Ihre tatsächlichen Server ersetzen.
  • lbmethod=byrequests: Definiert die Ausgleichsmethode. byrequests verteilt Anfragen gleichmäßig auf die Server. Andere Methoden umfassen:
    • bytraffic: Verteilt basierend auf der Verkehrsmenge.
    • bybusyness: Verteilt basierend auf der Anzahl der aktiven Verbindungen.
    • Herzschlag: Verwendet einen fortschrittlichen Gesundheitsüberwachungsansatz.

Backend-Server hinzufügen

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.

Aktivieren Sie das SSL-Modul für HTTPS

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>

Erweiterte Konfigurationsoptionen

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.

Apache neu starten

Nachdem Sie die Konfigurationsänderungen vorgenommen haben, starten Sie Apache neu, damit die Änderungen wirksam werden:

sudo systemctl restart apache2

Lastausgleich testen

Wenn Sie jetzt auf http://php.info zugreifen, verteilt Apache die Anfragen auf die definierten Backend-Server.

Gesundheitsprüfungen implementieren (optional)

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 hinzu. Block:

<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.

Abschluss

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn