Sitzungsaffinität festlegen (Dienste)

Auf dieser Seite wird gezeigt, wie Sie die Sitzungsaffinität für die Cloud Run-Dienstüberarbeitung aktivieren.

Standardmäßig ist die Sitzungsaffinität nicht aktiviert, sodass Anfragen vom selben Client von verschiedenen Instanzen verarbeitet werden können, wie hier gezeigt: Image

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: Image

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.

Wenn Sie Cloud Load Balancing verwenden, kann die Sitzungsaffinität des Cloud Run-Dienstes mit der Sitzungsaffinität von globalen und internen Load-Balancern gekoppelt werden.

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

  1. Rufen Sie in der Google Cloud Console Cloud Run auf.

    Öffnen Sie Cloud Run.

  2. Klicken Sie auf Dienst erstellen, wenn Sie einen neuen Dienst für die Bereitstellung konfigurieren. Wenn Sie einen vorhandenen Dienst konfigurieren möchten, klicken Sie auf den Dienst und dann auf Neue Überarbeitung bearbeiten und bereitstellen.

  3. Wenn Sie einen neuen Dienst konfigurieren, füllen Sie die Seite mit den anfänglichen Diensteinstellungen wie gewünscht aus und klicken Sie dann auf Container, Netzwerk, Sicherheit, um die Seite zur Dienstkonfiguration zu maximieren.

  4. Klicken Sie auf den Tab Netzwerk.

    Image

    • Klicken Sie auf das Textfeld Sitzungsaffinität.
  5. Klicken Sie auf Erstellen oder Bereitstellen.

Befehlszeile

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

  1. 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
  2. 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.
  3. 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

  1. Rufen Sie in der Google Cloud Console Cloud Run auf.

    Öffnen Sie Cloud Run.

  2. Klicken Sie auf den gewünschten Dienst, um die Seite Dienstdetails zu öffnen.

  3. Klicken Sie auf den Tab Überarbeitungen.

  4. Im Detailbereich rechts wird die Einstellung für die Sitzungsaffinität auf dem Tab Netzwerk aufgeführt.

Befehlszeile

  1. Verwenden Sie den folgenden Befehl:

    gcloud run services describe SERVICE
  2. Suchen Sie die Einstellung für die Sitzungsaffinität in der zurückgegebenen Konfiguration.