Auf dieser Seite wird gezeigt, wie Sie die Sitzungsaffinität für die Cloud Run-Dienstüberarbeitung aktivieren.
Funktionsweise der Sitzungsaffinität
Standardmäßig ist die Sitzungsaffinität nicht aktiviert, sodass Anfragen vom selben Client von verschiedenen Instanzen verarbeitet werden können, wie hier gezeigt:
Wenn Sie die Sitzungsaffinität aktivieren, leitet Cloud Run sequenzielle Anfragen für einen bestimmten Client an dieselbe Überarbeitungsinstanz weiter. Cloud Run verwendet ein Sitzungsaffinitäts-Cookie mit einer TTL von 30 Tagen und prüft seinen Wert, um mehrere Anfragen desselben Clients zu identifizieren, und leitet alle diese Anfragen an dieselbe Instanz weiter, wie hier gezeigt:
Wichtige Verhaltensweisen
Wie im obigen Diagramm dargestellt, erreicht ein Client mit aktivierter Sitzungsaffinität dieselbe Instanz. Die Instanz kann jedoch Anfragen von verschiedenen Clients empfangen. Sitzungsaffinität bedeutet nicht, dass die Instanz nur einem Client zugeordnet ist.
Aufgrund des Autoscaling-Verhaltens von Cloud Run ist die Sitzungsaffinität eine Best-Effort-Affinität. Wenn die Instanz aus irgendeinem Grund beendet wird oder die maximale Nebenläufigkeit von Anfragen oder die maximale CPU-Auslastung erreicht, wird die Sitzungsaffinität gestört und weitere Anfragen werden an eine andere Instanz weitergeleitet.
Obwohl Sie Clientsitzungsdaten im Arbeitsspeicher von Instanzen speichern können, können Sie nicht davon ausgehen, dass ein Client immer wieder eine Verbindung zur selben Instanz herstellt, auch wenn die Sitzungsaffinität aktiviert ist.
Die Sitzungsaffinität von Cloud Load Balancing und die Sitzungsaffinität von Cloud Run sind zwei separate und unabhängige Implementierungen der Sitzungsaffinität. Sie können die Sitzungsaffinität von Cloud Run für einen Cloud Run-Dienst aktivieren, auch wenn er sich hinter einem Load Balancer befindet. Sie sollten die Cloud Load Balancing-Sitzungsaffinität jedoch nicht für eine serverlose Netzwerk-Endpunktgruppe aktivieren, da dies nicht unterstützt wird.
Sitzungsaffinität und Trafficaufteilung
Sie aktivieren oder deaktivieren die Sitzungsaffinität auf Überarbeitungsebene. Wenn Sie die Sitzungsaffinität für eine Cloud Run-Überarbeitung aktivieren und auch die Trafficaufteilung verwenden, hat die Sitzungsaffinität Vorrang vor jeder Trafficaufteilung. Wenn im Extremfall ein einziger Client, der die Sitzungsaffinität nutzt, für die überwiegende Mehrheit aller Anfragen verantwortlich ist, können alle diese Anfragen unabhängig von der Konfiguration der Trafficaufteilung an eine bestimmte Version weitergeleitet werden.
Wenn Sie die Trafficaufteilung für Versionen aktivieren, bei denen einige der Versionen die Sitzungsaffinität aktiviert haben und andere nicht, führt dies dazu, dass Anfragen allmählich zu den Versionen verschoben werden, bei denen die Sitzungsaffinität aktiviert ist, auch wenn Sie die Konfiguration der Trafficaufteilung nicht explizit ändern. Der Grund dafür ist, dass jede Anfrage, der kein Sitzungsaffinitäts-Cookie angehängt ist, einer zufälligen Aufteilung unterliegt, bei der einige Anfragen schließlich einer Version mit Sitzungsaffinität zugewiesen werden und diese Anfragen dann bei dieser bestimmten Version bleiben.
Wenn Sie die Konfiguration der Trafficaufteilung für einen Cloud Run-Dienst aktualisieren, können nachfolgende Anfragen mit angehängten Sitzungsaffinitätscookies einer anderen Version zugewiesen werden. Cloud Run minimiert die Anzahl der Clients, die an eine neue Version weitergeleitet werden.
Wenn ein Dienst beispielsweise den Traffic zu 90 % / 10 % aufgeteilt hat und die Trafficaufteilung auf 80 % / 20 % aktualisiert wird, werden 10 % des Traffics an die Version weitergeleitet, die nun 20 % des Traffics bearbeitet.
Sitzungsaffinität festlegen
Jede Konfigurationsänderung führt zur Erstellung einer neuen Überarbeitung. Für nachfolgende Überarbeitungen gilt automatisch dieselbe Konfigurationseinstellung, sofern Sie sie nicht explizit aktualisieren.
Sie können die Sitzungsaffinität über die Google Cloud Console, die gcloud-Befehlszeile oder eine YAML-Datei festlegen, wenn Sie einen neuen Dienst erstellen oder eine neue Version bereitstellen:
Console
Rufen Sie in der Google Cloud Console Cloud Run auf.
Klicken Sie auf Container bereitstellen und wählen Sie Dienst aus, um einen neuen Dienst zu konfigurieren. Wenn Sie einen vorhandenen Dienst konfigurieren möchten, klicken Sie auf den Dienst und dann auf Neue Überarbeitung bearbeiten und bereitstellen.
Wenn Sie einen neuen Dienst konfigurieren, füllen Sie die Seite mit den anfänglichen Diensteinstellungen aus und klicken Sie dann auf Container, Volumes, Netzwerk, Sicherheit, um die Seite zur Dienstkonfiguration zu maximieren.
Klicken Sie auf den Tab Netzwerk.
- Klicken Sie auf das Textfeld Sitzungsaffinität.
Klicken Sie auf Erstellen oder Bereitstellen.
gcloud
Verwenden Sie folgenden Befehl, um die Sitzungsaffinität anzugeben:
gcloud run services update SERVICE --session-affinity
Ersetzen
- SERVICE durch den Namen des zu aktualisierenden Dienstes
Mit dem folgenden Befehl entfernen Sie die Sitzungsaffinität:
gcloud run services update SERVICE --no-session-affinity
YAML
Wenn Sie einen neuen Dienst erstellen, überspringen Sie diesen Schritt. Wenn Sie einen vorhandenen Dienst aktualisieren, laden Sie die zugehörige YAML-Konfiguration herunter:
gcloud run services describe SERVICE --format export > service.yaml
Fügen Sie die
run.googleapis.com/sessionAffinity:
-Annotation hinzu:spec: template: metadata: annotations: run.googleapis.com/sessionAffinity: 'BOOL'
Ersetzen
- "BOOL" mit dem Wert "
true
", um die Sitzungsaffinität festzulegen, oder mit "false
", um die Sitzungsaffinität zu entfernen.
- "BOOL" mit dem Wert "
Erstellen oder aktualisieren Sie den Dienst mit dem folgenden Befehl:
gcloud run services replace service.yaml
Einstellungen für die Sitzungsaffinität anzeigen
So rufen Sie die aktuellen Einstellungen für die Sitzungsaffinität für Ihren Cloud Run-Dienst auf:
Console
Rufen Sie in der Google Cloud Console Cloud Run auf.
Klicken Sie auf den gewünschten Dienst, um die Seite Dienstdetails zu öffnen.
Klicken Sie auf den Tab Überarbeitungen.
Im Detailbereich rechts wird die Einstellung für die Sitzungsaffinität auf dem Tab Netzwerk aufgeführt.
gcloud
Verwenden Sie den folgenden Befehl:
gcloud run services describe SERVICE
Suchen Sie die Einstellung für die Sitzungsaffinität in der zurückgegebenen Konfiguration.