Durch den Verbindungsausgleich wird sichergestellt, dass in Bearbeitung befindliche Anfragen zuerst vollständig abgeschlossen werden, bevor eine VM-Instanz aus einer Instanzgruppe oder ein Endpunkt aus Netzwerk-Endpunktgruppen (NEGs) entfernt wird, die zonal sind.
Die Informationen auf dieser Seite gelten nur für Instanzgruppen und die folgenden Arten von NEGs, die zonal sind:
Der Verbindungsausgleich wird in folgenden Fällen angewendet:
- Sie entfernen eine VM oder einen Endpunkt aus einer Backend-Gruppe (Instanzgruppe oder NEG).
- Sie entfernen eine Instanz aus einer verwalteten Instanzgruppe mithilfe eines
resize(),deleteInstances(),recreateInstances(), oderabandonInstances()-Aufrufs. - Sie entfernen eine dynamische NIC aus einer VM, die Teil eines Instanzgruppen-Backends ist.
- Google Cloud löscht eine Instanz im Rahmen des Autoscaling.
- Sie führen mit dem Updater für verwaltete Instanzgruppen eine Aktualisierung der verwalteten Instanzgruppe durch.
Der Verbindungsausgleich wird nicht angewendet, wenn eine Backend-Gruppe (Instanzgruppe oder zonale NEG) aus dem Backend-Dienst eines Load-Balancers entfernt wird.
Funktionsweise des Verbindungsausgleichs
Zum Aktivieren des Verbindungsausgleichs legen Sie im Back-End-Dienst ein Zeitlimit für den Verbindungsausgleich fest. Das Zeitlimit muss zwischen 0 und 3.600 Sekunden liegen.
Nach Ablauf des angegebenen Zeitlimits kann es bis zu 60 Sekunden dauern, bis die Instanz beendet wird.
Im Folgenden finden Sie eine Liste mit Spezifikationen zum Verbindungsausgleich:
Der Verbindungsausgleich ist für Backend-Dienste verfügbar, die Teil der folgenden Load-Balancer sind:
- Externer Application Load Balancer
- Interner Application Load Balancer
- Externer Proxy-Network Load Balancer
- Interner Proxy-Network Load Balancer
- Interner Passthrough-Network Load Balancer
- Backend-Dienst-basierter regionaler externer Passthrough-Network Load Balancer
Sowohl interne Passthrough-Network Load Balancer als auch regionale externe Passthrough-Network Load Balancer unterstützen den Verbindungsausgleich für TCP, UDP und andere Nicht-TCP-Protokolle.
Der Verbindungsausgleich ist auch für Backend-Dienste verfügbar, die Teil von Cloud Service Mesh Bereitstellungen sind.
Wenn ein Zeitlimit für den Verbindungsausgleich festgelegt ist und eine Instanz aus der Instanzgruppe entfernt oder ein Endpunkt aus einer zonalen NEG entfernt wird, Google Cloud verhalten sich Load-Balancer und Cloud Service Mesh so:
An die entfernte Instanz oder den entfernten Endpunkt werden keine neuen Verbindungen gesendet.
Application Load Balancer: Bestehende Anfragen an die VM oder den Endpunkt, die zum Entfernen markiert sind, haben für die angegebene Dauer des Zeitlimits Zeit, abgeschlossen zu werden. Der Load-Balancer sendet keine neuen Verbindungen an diese VM oder diesen Endpunkt. Nach Ablauf des Zeitlimits sendet der Load-Balancer keinen Traffic mehr an die entfernte VM oder den entfernten Endpunkt.
Proxy-Network Load Balancer: Bestehende TCP-Verbindungen zur VM oder zum Endpunkt, die zum Entfernen markiert sind, funktionieren für die angegebene Dauer des Zeitlimits während des konfigurierten Zeitraums für den Verbindungsausgleich weiter. Der Load-Balancer sendet keine neuen Verbindungen an diese VM oder diesen Endpunkt. Nach Ablauf des Zeitlimits bleiben bestehende TCP-Verbindungen zur entfernten VM oder zum entfernten Endpunkt aktiv und der Proxy schließt alle bestehenden TCP-Verbindungen innerhalb von 10 Minuten, dem Standardzeitlimit für Inaktivität.
Passthrough-Network Load Balancer: Für die angegebene Dauer des Zeitlimits für den Verbindungsausgleich werden Pakete, die zu bestehenden Verbindungen gehören, an die VM oder den Endpunkt weitergeleitet, die zum Entfernen markiert sind. Nach Ablauf des Zeitlimits entfernt der Load-Balancer den Eintrag für das Verbindungs-Tracking. Nachdem der Eintrag in der Tabelle für das Verbindungs-Tracking entfernt wurde, werden nachfolgende Pakete für die Verbindung an eine andere Backend-VM oder einen anderen Endpunkt weitergeleitet. Dabei werden die Backend-Auswahl und der Prozess für das Verbindungs-Tracking verwendet. Bei TCP-Verbindungen hat das andere Backend keinen Eintrag für eine bestehende Verbindung. Daher kann es ein TCP-Rücksetzpaket (
RST) senden, um die Verbindung zu schließen und dem Client zu ermöglichen, eine neue Verbindung zum Load-Balancer zu öffnen. Passthrough-Network Load Balancer können selbst keineRST- oderFIN-Pakete senden, um eine Verbindung zu schließen.
Wenn Sie den Verbindungsausgleich für mehrere Back-End-Dienste aktivieren, die dieselben Instanzgruppen oder NEGs verwenden, wird der höchste Zeitlimitwert verwendet. Angenommen, dieselbe Instanzgruppe oder zonale NEG ist ein Backend für zwei Backend- Dienste, wobei ein Backend-Dienst für den Verbindungsausgleich ein Zeitlimit von 100 Sekunden und der andere Backend-Dienst ein Zeitlimit von 200 Sekunden hat. Google Cloud verwendet 200 Sekunden als effektives Zeitlimit für den Verbindungsausgleich, bevor die Verbindungen beendet werden. Wenn das Backend eine verwaltete Instanzgruppe ist, werden Vorgänge zum Löschen der Instanz um mindestens 200 Sekunden verzögert.
Wenn Sie kein Zeitlimit für den Verbindungsausgleich festlegen oder das Zeitlimit für den Verbindungsausgleich auf null (0) gesetzt ist, beendet vorhandene Verbindungen auf der entfernten Instanz oder dem entfernten Endpunkt so schnell wie möglich. Google Cloud
Wenn Sie Verbindungs-Pooling verwenden, stellen Sie möglicherweise fest, dass neue Anfragen, die eine zuvor eingerichtete Verbindung verwenden, weiterhin auf VMs empfangen werden, die per Drain beendet werden. Dies führt zu Verbindungsfehlern, wenn diese VMs letztendlich gelöscht werden.
Verbindungsausgleich aktivieren
Führen Sie folgende Schritte aus, um den Verbindungsausgleich zu aktivieren.
Console
Load-Balancer aktualisieren
- Öffnen Sie in der Google Cloud Console die Seite Load-Balancing.
Gehe zu „Load-Balancing“ - Klicken Sie auf dem Tab Load-Balancer für den Load-Balancer, den Sie aktualisieren möchten, auf „Mehr“ more_vert, und dann auf Bearbeiten .
- Klicken Sie auf Backend-Konfiguration.
- Klicken Sie im Bereich Backend-Konfiguration auf .
- Klicken Sie unten im Bereich Backend-Dienst bearbeiten auf Erweiterte Konfigurationen.
- Geben Sie im Feld Zeitlimit für Verbindungsausgleich einen Wert zwischen
0und3600ein. Bei der Einstellung0wird der Verbindungsausgleich deaktiviert.
Cloud Service Mesh aktualisieren
- Öffnen Sie in der Google Cloud Console die Seite Cloud Service Mesh.
Gehe zu Cloud Service Mesh - Klicken Sie auf den Namen des Dienstes.
- Klicken Sie auf der Seite Dienstdetails auf Bearbeiten .
- Klicken Sie am unteren Ende des Dienstes auf Erweiterte Konfigurationen.
- Geben Sie im Feld Zeitlimit für Verbindungsausgleich einen Wert zwischen
0und3600ein. Bei der Einstellung0wird der Verbindungsausgleich deaktiviert. - Klicken Sie auf Speichern.
gcloud
Aktivieren Sie den Verbindungsausgleich für einen neuen oder vorhandenen Backend-Dienst mithilfe des Flags --connection-draining-timeout. Die folgenden Beispiele zeigen, wie Sie das Zeitlimit für den Verbindungsausgleich ändern:
Für einen vorhandenen globalen oder regionenübergreifenden Load Balancer:
gcloud compute backend-services update BACKEND_SERVICE \ --global \ --connection-draining-timeout=CONNECTION_TIMEOUT_SECS
Für einen vorhandenen regionalen Load-Balancer:
gcloud compute backend-services update BACKEND_SERVICE \ --region=REGION \ --connection-draining-timeout=CONNECTION_TIMEOUT_SECS
Ersetzen Sie die Platzhalter durch gültige Werte:
BACKEND_SERVICE: Der Backend-Dienst, den Sie aktualisieren.REGION: Gegebenenfalls die Region des Backend-Dienstes, den Sie aktualisieren möchten.CONNECTION_TIMEOUT_SECS: Die Wartezeit in Sekunden von0bis3600, bevor bestehende Verbindungen zu Instanzen oder Endpunkten beendet werden. Bei der Einstellung0wird der Verbindungsausgleich deaktiviert. Das Zeitlimit für den Verbindungsausgleich gilt für alle Back-Ends des Back-End-Dienstes.Sie können auch den Befehl
gcloud compute backend-services editverwenden, um einen vorhandenen Backend-Dienst zu aktualisieren.
API
Beim Erstellen oder Aktualisieren einer Instanz oder eines Endpunkts können Sie in der API den Verbindungsausgleich aktivieren. Senden Sie dazu eine Anfrage an den entsprechenden API-URI, damit das Feld connectionDraining in den Anfragetext aufgenommen wird. In den folgenden Beispielen wird gezeigt, wie Sie dieses Attribut durch Bearbeiten eines vorhandenen Back-End-Dienstes festlegen. Informationen zu weiteren erforderlichen Attributen finden Sie in der Dokumentation zum jeweiligen Load-Balancer.
Für einen vorhandenen globalen oder regionenübergreifenden Load Balancer:
PATCH https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices
Für einen vorhandenen regionalen Load Balancer:
PATCH https://www.googleapis.com/compute/v1/projects/PROJECT_ID/region/REGION/backendServices { "name": "BACKEND_SERVICE", "connectionDraining": { "drainingTimeoutSec": CONNECTION_TIMEOUT_SECS } }Ersetzen Sie Folgendes:
PROJECT_ID: Die Projekt-ID, die Ihre Load-Balancer- oder Cloud Service Mesh-Bereitstellung enthält.BACKEND_SERVICE: Der Backend-Dienst, der von Ihrer Load-Balancer- oder Cloud Service Mesh-Bereitstellung verwendet wird.CONNECTION_TIMEOUT_SECS: Die Wartezeit von 0 bis 3.600 Sekunden, bevor Instanzen oder Endpunkte aus der Instanzgruppe oder der NEG entfernt werden. Dieses Zeitlimit gilt für alle Instanzgruppen oder NEGs, auf die vom Backend-Dienst verwiesen wird.
Nächste Schritte
Informationen zu Back-End-Diensten finden Sie unter Übersicht über Back-End-Dienste.