Netzwerklastenausgleich

Dieser Leitfaden stellt ein einfaches Lastenausgleich-Szenario vor, bei dem der Datenverkehr über mehrere Webserver auf Compute Engine-Instanzen verteilt werden soll. In diesem Szenario wird eine Layer-3-Lastenausgleichskonfiguration zum Verteilen des HTTP-Verkehrs über fehlerfreie Instanzen eingerichtet. Es werden grundlegende HTTP-Systemdiagnosen konfiguriert, die gewährleisten sollen, dass der Traffic nur an fehlerfreie Instanzen gesendet wird.

Eine Erklärung des Netzwerklastenausgleichs finden Sie unter Netzwerklastenausgleich einrichten.

Voraussetzungen

Installieren Sie das Befehlszeilentool gcloud gemäß der Anleitung auf der Seite Voraussetzungen.

Sie müssen eine statische externe IP-Adresse für das Lastenausgleichsmodul erstellen. Wenn Sie ein von Compute Engine bereitgestelltes Image verwenden, werden die Instanzen automatisch für die Behandlung dieser IP-Adresse konfiguriert. Wenn Sie ein anderes Image verwenden, müssen Sie diese Adresse als Alias auf eth0 oder als Loopback auf den einzelnen Instanzen konfigurieren.

Wenn Sie das Befehlszeilentool gcloud vorher noch nicht ausgeführt haben, müssen Sie zur Authentifizierung zuerst gcloud init ausführen.

In diesem Leitfaden wird davon ausgegangen, dass Sie mit Bash vertraut sind.

Compute Engine konfigurieren

Für dieses Lastenausgleich-Szenario erstellen Sie drei Compute Engine-Instanzen und installieren Apache darauf. Sie fügen eine Firewallregel hinzu, die erlaubt, dass HTTP-Verkehr die Instanzen erreicht.

Alle nachfolgenden Befehle werden auf dem lokalen System ausgeführt und beziehen sich auf eine Bash-Eingabeaufforderung.

  1. Erstellen Sie drei neue VMs in einer bestimmten Zone und setzen Sie für alle das gleiche Tag. In diesem Beispiel wird die Zone auf us-central1-b gesetzt. Durch Setzen des tags-Felds kann, zum Beispiel durch eine Firewallregel, auf all diese Instanzen gleichzeitig verwiesen werden. Mit diesen Befehlen wird außerdem Apache auf den Instanzen installiert und jeder Instanz eine einmalige Homepage zugewiesen.

    gcloud compute instances create www1 \
        --image-family debian-8 \
        --image-project debian-cloud \
        --zone us-central1-b \
        --tags network-lb-tag \
        --metadata startup-script="#! /bin/bash
          sudo apt-get update
          sudo apt-get install apache2 -y
          sudo service apache2 restart
          echo '<!doctype html><html><body><h1>www1</h1></body></html>' | tee /var/www/html/index.html
          EOF"
    
    gcloud compute instances create www2 \
        --image-family debian-8 \
        --image-project debian-cloud \
        --zone us-central1-b \
        --tags network-lb-tag \
        --metadata startup-script="#! /bin/bash
          sudo apt-get update
          sudo apt-get install apache2 -y
          sudo service apache2 restart
          echo '<!doctype html><html><body><h1>www2</h1></body></html>' | tee /var/www/html/index.html
          EOF"
    
    gcloud compute instances create www3 \
        --image-family debian-8 \
        --image-project debian-cloud \
        --zone us-central1-b \
        --tags network-lb-tag \
        --metadata startup-script="#! /bin/bash
          sudo apt-get update
          sudo apt-get install apache2 -y
          sudo service apache2 restart
          echo '<!doctype html><html><body><h1>www3</h1></body></html>' | tee /var/www/html/index.html
          EOF"
    
  2. Erstellen Sie eine Firewallregel, die externen Datenverkehr zu diesen VM-Instanzen erlaubt.

    gcloud compute firewall-rules create www-firewall-network-lb \
        --target-tags network-lb-tag --allow tcp:80
    
  3. Rufen Sie die externen IP-Adressen der Instanzen ab.

    gcloud compute instances list
    
  4. Überprüfen Sie, ob alle Instanzen laufen.

    $ curl http://[EXTERNAL_IP_ADDRESS]
    

Lastenausgleichsdienst konfigurieren

Im nächsten Schritt richten Sie den Lastenausgleichsdienst ein.

  1. Erstellen Sie eine statische externe IP-Adresse für das Lastenausgleichsmodul.

    gcloud compute addresses create network-lb-ip-1 \
        --region us-central1
    

    Ihre VM-Instanzen empfangen Datenpakete, die für diese IP-Adresse bestimmt sind. Wenn Sie ein von Compute Engine bereitgestelltes Image verwenden, werden die Instanzen automatisch für die Behandlung dieser IP-Adresse konfiguriert. Wenn Sie ein anderes Image verwenden, müssen Sie diese Adresse als Alias auf eth0 oder als Loopback auf den einzelnen Instanzen konfigurieren.

  2. Fügen Sie ein HTTP-Systemdiagnose-Objekt hinzu.

    gcloud compute http-health-checks create basic-check
    

    In diesem Beispiel werden die Standardeinstellungen für den Systemdiagnosemechanismus verwendet. Sie können diese Einstellungen jedoch auch selbst anpassen.

  3. Fügen Sie in derselben Region, in der sich die VM-Instanzen befinden, einen Zielpool hinzu. Verwenden Sie die im vorigen Schritt erstellte Systemdiagnose für diesen Zielpool. Für die Funktionsweise von Zielpools ist ein Systemdiagnosedienst erforderlich.

    gcloud compute target-pools create www-pool \
        --region us-central1 --http-health-check basic-check
    
  4. Fügen Sie dem Zielpool Ihre Instanzen hinzu.

    gcloud compute target-pools add-instances www-pool \
        --instances www1,www2,www3 \
        --instances-zone us-central1-b
    

    Instanzen innerhalb eines Zielpools müssen zwar derselben Region angehören, können aber über verschiedene Zonen in dieser Region verteilt sein. So darf ein Zielpool beispielsweise Instanzen in Zone us-central1-f und Instanzen in Zone us-central1-b enthalten, da sie sich in derselben Region, us-central1, befinden.

  5. Fügen Sie eine Weiterleitungsregel hinzu, die für einen externen IP- und Port-Bereich gilt und auf den Zielpool verweist. Für das Feld --address geben Sie entweder die numerische IP-Adresse oder den vollqualifizierten Namen an.

    gcloud compute forwarding-rules create www-rule \
        --region us-central1 \
        --ports 80 \
        --address network-lb-ip-1 \
        --target-pool www-pool
    

Nachdem Sie nun den Lastenausgleichsdienst konfiguriert haben, können Sie Datenverkehr an die Weiterleitungsregel senden und sehen, wie er an verschiedene Instanzen verteilt wird.

Datenverkehr an Instanzen senden

  1. Rufen Sie die externe IP-Adresse der Weiterleitungsregel ab:

    gcloud compute forwarding-rules describe www-rule --region us-central1
    
  2. Greifen Sie mit dem Befehl curl auf die IP-Adresse zu. Die Antwort wechselt nach dem Zufallsprinzip zwischen den drei Instanzen. Wenn die Antwort anfangs erfolglos ist, müssen Sie vor einem erneuten Versuch unter Umständen etwa 30 Sekunden warten, bis die Konfiguration vollständig geladen ist und die Instanzen als fehlerfrei markiert werden:

$ while true; do curl -m1 [IP_ADDRESS]; done
Hat Ihnen diese Seite weitergeholfen? Teilen Sie uns Ihr Feedback mit:

Feedback geben zu...

Compute Engine-Dokumentation