Verbindungsausgleich aktivieren

Durch den Verbindungsausgleich wird sichergestellt, dass in Bearbeitung befindliche Anfragen zuerst vollständig abgeschlossen werden, bevor eine VM aus einer Instanzgruppe entfernt wird.

Zur Aktivierung des Verbindungsausgleichs legen Sie im Back-End-Dienst ein Zeitlimit für den Verbindungsausgleich fest. Das Zeitlimit muss zwischen 1 und 3600 Sekunden liegen.

Bestehende Anfragen an die entfernte VM haben für die eingestellte Dauer des Zeitlimits Zeit, abgeschlossen zu werden. Der Load-Balancer sendet keine neuen Anfragen an die entfernte VM. Nach dem Erreichen des Zeitlimits werden alle verbleibenden Verbindungen zur VM beendet.

Der Verbindungsausgleich beginnt immer dann, wenn Sie eine VM zu einer Instanzgruppe hinzufügen oder daraus entfernen:

Nach Ablauf des angegebenen Zeitlimits kann es bis zu 60 Sekunden dauern, bis die Instanz beendet wird.

Wenn Sie den Verbindungsausgleich für mehrere Back-End-Dienste aktivieren, die dieselben Instanzgruppen verwenden, wird der höchste Zeitlimitwert verwendet. Beispiel: Wenn Back-End-Dienst A ein Zeitlimit von 100 Sekunden und Back-End-Dienst B ein Zeitlimit von 200 Sekunden festlegt, beendet das System Instanzen in der gemeinsam verwendeten Instanzgruppe nach 200 Sekunden.

Einschränkungen

Verbindungsausgleich aktivieren

Console

  1. Öffnen Sie in der Google Cloud Console die Seite "Load-Balancing".
    Zur Seite "Load-Balancing"
  2. Klicken Sie auf die Schaltfläche Bearbeiten für den Load-Balancer oder erstellen Sie einen neuen Load-Balancer.
  3. Klicken Sie auf Back-End-Konfiguration.
  4. Klicken Sie am unteren Ende des Back-End-Dienstes auf Erweiterte Konfigurationen.
  5. Geben Sie im Feld Zeitlimit für Verbindungsausgleich einen Wert zwischen 0 und 3600 ein. Bei der Einstellung 0 wird der Verbindungsausgleich deaktiviert.

gcloud

Aktivieren Sie den Verbindungsausgleich für einen neuen oder vorhandenen Back-End-Dienst mithilfe des Flags --connection-draining-timeout. Geben Sie beispielsweise bei der Aktualisierung eines Back-End-Diensts das Flag mit der Anfrage an:

gcloud compute backend-services update [BACKEND_SERVICE] \
    --connection-draining-timeout [CONNECTION_TIMEOUT_SECS]

Dabei gilt:

  • [BACKEND_SERVICE] ist der Back-End-Dienst für diese Anfrage.
  • [CONNECTION_TIMEOUT_SECS] ist die Wartezeit in Sekunden von 0 bis einschließlich 3600, bevor Instanzen beendet werden. Bei der Einstellung 0 wird der Verbindungsausgleich deaktiviert. Dieses Zeitlimit gilt für alle Instanzgruppen, die Teil des Back-End-Diensts sind.

Wenn Sie Ihre Instanz mithilfe des Unterbefehls backend-services edit aktualisieren, fügen Sie connectionDraining als Teil des Ressourcentexts hinzu:

# You can edit the resource below. Lines beginning with "#" are
# ignored.
#
# If you introduce a syntactic error, you will be given the
# opportunity to edit the file again. You can abort by closing this
# file without saving it.
#
# At the bottom of this file, you will find an example resource.
#
# Only fields that can be modified are shown. The original resource
# with all of its fields is reproduced in the comment section at the
# bottom of this document.

description: ''
healthChecks:
- https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/healthChecks/[HEALTH_CHECK]
port: 80
portName: [PORT_NAME]
protocol: [PROTOCOL]
timeoutSec: 30
connectionDraining:
  drainingTimeoutSec: [CONNECTION_TIMEOUT_SEC]

API

Sie können beim Erstellen oder Aktualisieren einer Instanz in der API einen Verbindungsausgleich aktivieren. Stellen Sie dazu eine Anfrage an den entsprechenden API-URI und beziehen Sie das Feld connectionDraining in den Anfragetext ein. Wenn Sie beispielsweise einen neuen Back-End-Dienst erstellen möchten, stellen Sie eine POST-Anfrage an den folgenden URI:

Für HTTP(S)- oder SSL-Proxy-Load-Balancing:

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/backendServices

Für internen Lastenausgleich:

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/region/[REGION]/backendServices

{  "healthChecks": [
     "https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/healthChecks/[HEALTH_CHECK_NAME]"
    ],
   "name": "[BACKEND_SERVICE]",
   "port": 80,
   "portName": "[PORT_NAME]",
   "protocol": "[PROTOCOL]",
   "timeoutSec": 30,
   "connectionDraining": {
     "drainingTimeoutSec": [CONNECTION_TIMEOUT_SECS]
   }
}

Dabei gilt:

  • [PROJECT_ID] ist die Projekt-ID für diese Anfrage.
  • [BACKEND_SERVICE] ist der Back-End-Dienst für diese Anfrage.
  • [CONNECTION_TIMEOUT_SECS] ist die Wartezeit in Sekunden von 1 bis 3600, bevor Instanzen aus der Instanzgruppe entfernt werden. Dieses Zeitlimit gilt für alle Instanzgruppen, die Teil des Back-End-Diensts sind.

Nächste Schritte

Informationen zu Back-End-Diensten finden Sie unter Back-End-Dienste.