Durch den Verbindungsausgleich wird sichergestellt, dass in Bearbeitung befindliche Anfragen zuerst vollständig abgeschlossen werden, bevor eine VM 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:
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.
Bestehende Anfragen an die entfernte VM oder den entfernten Endpunkt haben für die eingestellte Dauer des Zeitlimits Zeit, abgeschlossen zu werden. Der Load-Balancer sendet keine neuen TCP-Verbindungen an die entfernte VM. Nach dem Erreichen des Zeitlimits werden alle verbleibenden TCP-Verbindungen zur VM beendet.
Der Verbindungsausgleich beginnt, wenn Folgendes passiert:
- Sie entfernen eine VM manuell aus der Instanzgruppe.
- Sie entfernen eine Instanz aus einer verwalteten Instanzgruppe mithilfe eines
resize()
-,deleteInstances()
-,recreateInstances()
- oderabandonInstances()
-Aufrufs. - Eine Instanzgruppe wird aus einem Back-End-Dienst entfernt. Dies wird für interne Passthrough-Network-Load-Balancer nicht unterstützt.
- Google Cloud löscht eine Instanz als Teil des Autoscaling.
- Sie führen mit dem Updater für verwaltete Instanzgruppen eine Aktualisierung der verwalteten Instanzgruppe durch.
- Sie entfernen einen Endpunkt manuell aus einer zonalen NEG.
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 oder NEGs verwenden, wird der höchste Zeitlimitwert verwendet. Angenommen, dieselbe Instanzgruppe oder zonale NEG ist ein Back-End für zwei Back-End-Dienste, wobei ein Back-End-Dienst für den Verbindungsausgleich ein Zeitlimit von 100 Sekunden und der andere Back-End-Dienst ein Zeitlimit von 200 Sekunden hat. Google Cloud verwendet 200 Sekunden als effektives Zeitlimit für den Verbindungsausgleich, sodass vorhandene Verbindungen 200 Sekunden lang bestehen bleiben dürfen, bevor sie von Google Cloud beendet werden. Wenn das Backend eine verwaltete Instanzgruppe ist, werden Vorgänge zum Löschen der Instanz um mindestens 200 Sekunden verzögert.
Im Folgenden finden Sie eine Liste mit Spezifikationen für den Verbindungsausgleich:
Der Verbindungsausgleich ist für Backend-Dienste verfügbar, die Teil der folgenden Load-Balancer sind:
- Globaler externer Application Load Balancer
- Regionaler externer Application Load Balancer
- Klassischer Application Load Balancer
- Externer Proxy-Network Load Balancer
- Regionaler interner Proxy-Network Load Balancer
- Regionsübergreifender interner Proxy-Network Load Balancer
- Regionaler interner Application Load Balancer
- Regionenübergreifender interner Application Load Balancer
- Interner Passthrough-Network Load Balancer
- Backend-Dienst-basierter externer Passthrough-Network-Load-Balancer
Der Verbindungsausgleich ist auch für Back-End-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, verhalten sich Google Cloud-Load-Balancer und Cloud Service Mesh so:
An die entfernte Instanz oder den entfernten Endpunkt werden keine neuen Verbindungen gesendet.
Aktive Sitzungen, die vorhandene Verbindungen auf der entfernten Instanz oder dem entfernten Endpunkt unterstützen, können so lange bestehen bleiben, bis das konfigurierte Zeitlimit für den Verbindungsausgleich erreicht ist. Nach Ablauf des Zeitlimits beendet Google Cloud die vorhandenen Verbindungen auf der entfernten Instanz oder dem entfernten Endpunkt.
Wenn Sie kein Zeitlimit für den Verbindungsausgleich festlegen oder das Zeitlimit für den Verbindungsausgleich auf null (0) gesetzt ist, beendet Google Cloud vorhandene Verbindungen auf der entfernten Instanz oder dem entfernten Endpunkt so schnell wie möglich.
Wenn Sie Verbindungs-Pooling verwenden, stellen Sie möglicherweise fest, dass neue Anfragen, die eine zuvor eingerichtete TCP-Verbindung verwenden, weiterhin auf VMs empfangen werden, die per Drain beendet werden. Dies führt zu Verbindungsfehlern, wenn diese VMs letztendlich gelöscht werden.
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 bei Ihrem Load-Balancer auf Bearbeiten ( ) oder erstellen Sie einen neuen Load-Balancer.
- Klicken Sie auf Back-End-Konfiguration.
- Klicken Sie am unteren Ende des Back-End-Dienstes auf Erweiterte Konfigurationen.
- Geben Sie im Feld Zeitlimit für Verbindungsausgleich einen Wert zwischen
0
und3600
ein. Bei der Einstellung0
wird der Verbindungsausgleich deaktiviert.
Cloud Service Mesh aktualisieren
- Rufen Sie in der Google Cloud Console die Seite Cloud Service Mesh auf.
Cloud Service Mesh aufrufen - Klicken Sie auf den Namen des Dienstes.
- Klicken Sie am unteren Ende des Dienstes auf Erweiterte Konfigurationen.
- Geben Sie im Feld Zeitlimit für Verbindungsausgleich einen Wert zwischen
0
und3600
ein. Bei der Einstellung0
wird der Verbindungsausgleich deaktiviert. - Klicken Sie auf Speichern.
gcloud
Aktivieren Sie den Verbindungsausgleich für einen neuen oder vorhandenen Back-End-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 von
0
bis3600
, bevor bestehende Verbindungen zu Instanzen oder Endpunkten beendet werden. Bei der Einstellung0
wird 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 edit
verwenden, um einen vorhandenen Back-End-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
}
}
Dabei gilt:
PROJECT_ID
ist die Projekt-ID, die die Load-Balancer- oder Cloud Service Mesh-Bereitstellung enthält.BACKEND_SERVICE
ist der Back-End-Dienst, der von Ihrem Load Balancer oder der Cloud Service Mesh-Bereitstellung verwendet wird.CONNECTION_TIMEOUT_SECS
ist 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 Back-End-Dienst verwiesen wird.