Isolation für Cloud Service Mesh

Auf dieser Seite erfahren Sie, wie Sie Ihr Service Mesh mit einer besseren Anfragenisolation für Ihren Backend-Dienst konfigurieren, indem Sie eine Isolationskonfiguration erstellen.

Diese Funktion bietet zusätzliche Unterstützung für die Isolation der Back-Ends Ihrer Dienste, um regionsübergreifende Überläufe zu verhindern.

Standardmäßig verwendet Cloud Service Mesh den Algorithmus Waterfall nach Region, um zu entscheiden, wohin der Nutzer-Traffic weitergeleitet werden soll. Mit diesem Algorithmus leitet Cloud Service Mesh Traffic an die nächstgelegene Region weiter, bis die Back-Ends ihr konfiguriertes Kapazitätslimit erreicht haben. Danach beginnt der Traffic, in eine weiter entfernte Region überzulaufen.

Mit dieser Funktion wird der Traffic basierend auf Ihrer Frontend-Region und der Konfiguration der Isolation auf die nächstgelegene oder lokale Region beschränkt. Er läuft nicht über, wenn die Kapazität der nächstgelegenen Region erschöpft ist. So können Sie potenzielle kaskadierende Fehler verhindern und potenzielle Ausfälle in derselben Region begrenzen. Andernfalls verwalten Sie Ihre Dienstkonfiguration weiterhin auf globaler Ebene.

Isolationsdiagramm

Ob Sie diese Funktion verwenden sollten, hängt von Ihren tatsächlichen Anwendungsfällen ab. Bevor Sie sie verwenden, sollten Sie die folgenden Aspekte sorgfältig prüfen:

  • Wenn Ihre Back-Ends in einer Region überlastet sind, kann Cloud Service Mesh trotzdem zusätzlichen Traffic an sie senden, auch wenn Back-Ends in anderen Regionen den Traffic verarbeiten können. Das bedeutet, dass jede einzelne Region aufgrund des zusätzlichen Traffics eher überlastet wird. Sie müssen also entsprechend planen.
  • Ihr Traffic wird weiterhin über eine globale Steuerungsebene weitergeleitet. Das bedeutet, dass es immer noch die Möglichkeit global koordinierter Fehler in mehreren Regionen gibt.
  • Diese Funktion wird mit der serviceLbPolicy-Ressource konfiguriert. Alle Einschränkungen gelten weiterhin.
  • Im Isolationsmodus STRICT schlagen Anfragen fehl, wenn es keine Serving-Back-Ends in derselben Region gibt.

Nachdem Sie diese Funktion angewendet haben, gibt es zwei Szenarien:

Nächstgelegene Isolation

Bei der nächstgelegenen regionalen Isolation wird ein Frontend mit collocated Backends nur auf diese Region beschränkt. Wenn am lokalen Standort kein Backend verfügbar ist, wird eine Verbindung zur Backend-Region hergestellt und gleichzeitig die Netzwerklatenz optimiert.

Diagramm der nächstgelegenen Isolation

Strikte Isolation

Bei der strengen regionalen Isolation können Frontend-Standorte nur Backends in der lokalen Region erreichen. Bei Frontends ohne Serving-Backends in der lokalen Region wird der gesamte Traffic verworfen.

Diagramm zur strikten Isolation

Isolation aktivieren

gcloud

Führen Sie die folgenden Schritte aus, um eine Isolationskonfiguration mit der Google Cloud CLI zu erstellen.

  1. Führen Sie den folgenden Befehl aus, um eine serviceLbPolicy zu erstellen:

    gcloud network-services service-lb-policies create my-isolation-policy \
        --isolation-config-granularity=REGION \
        --isolation-config-mode=ISOLATION_MODE \
        --location=global
    

    Ersetzen Sie ISOLATION_MODE durch eine der folgenden Optionen:

    1. NEAREST: Der Traffic wird an die nächstgelegene Region gesendet.
    2. STRICT: Der Traffic schlägt fehl, wenn in derselben Region wie das Frontend keine Serving-Backends verfügbar sind.

    Wenn nicht explizit angegeben, ist NEAREST der Standardwert. Sie können dieses Feld nur angeben, wenn auch das Flag --isolation-granularity festgelegt ist.

    Wenn Sie bereits eine Richtlinie haben, können Sie sie alternativ mit dem folgenden Befehl aktualisieren:

    gcloud network-services service-lb-policies update POLICY_NAME \
        --isolation-config-granularity=REGION \
        --isolation-config-mode=ISOLATION_MODE \
        --location=global
    

    Ersetzen Sie POLICY_NAME durch den Namen Ihrer vorhandenen Richtlinie.

  2. Nachdem eine serviceLbPolicy-Ressource erstellt oder aktualisiert wurde, hängen Sie sie an Ihre backendService-Ressource an:

      gcloud compute backend-services update BACKEND_SERVICE_NAME \
      ‐‐service-lb-policy POLICY_URL
    

    Ersetzen Sie BACKEND_SERVICE_NAME durch den Namen Ihres Backend-Dienstes.

Isolation deaktivieren

Sie haben zwei Möglichkeiten, diese Funktion zu deaktivieren:

  1. Legen Sie den Wert isolationConfigs auf „Ohne Angabe“ fest.
  2. Entfernen Sie ServiceLbPolicy aus dem Dienst, wenn es die einzige Funktion ist, die Sie mit dieser Richtlinie aktiviert haben.

isolationConfigs auf „Nicht angegeben“ setzen

Führen Sie den folgenden Befehl aus, um isolationConfigs auf „nicht angegeben“ zu setzen:

gcloud network-services service-lb-policies update my-isolation-policy \
  --isolation-config-granularity=unspecified \
  --isolation-config-mode=unspecified \
  --location=global

ServiceLbPolicy aus dem Dienst entfernen

Führen Sie den folgenden Befehl aus, um ServiceLbPolicy zu entfernen:

gcloud network-services service-lb-policies delete my-isolation-policy --location=global

Support, Diagnose und Fehlerbehebung

In diesem Abschnitt werden mögliche Probleme beschrieben, die nach dem Aktivieren dieser Funktion auftreten können.

Backends überlastet

Diese Funktion bietet Unterstützung für die Isolation. Der Traffic wird also nicht in eine Remote-Region verschoben, wenn die lokale Region voll ist. Einige Ihrer Back-Ends könnten also überlastet sein, wenn diese Funktion aktiviert ist. Wenn Sie dieses Verhalten nicht wünschen, können Sie die Funktion deaktivieren. Sie können auch die automatische Skalierung aktivieren, um Überlastungen des Back-Ends besser zu bewältigen.

Traffic wurde umgeleitet

Diese Funktion verhindert einen Traffic-Überlauf aufgrund von Kapazitätsüberschreitung. Wenn Ihre Back-Ends also bereits vor der Aktivierung dieser Funktion überlastet waren, wurde der Traffic möglicherweise schon auf eine Remote-Region umgeleitet. In diesem Fall könnte die Aktivierung dieser Funktion dazu führen, dass dieser Traffic wieder verschoben wird.

Traffic wurde nicht umgeleitet

Diese Funktion verhindert einen Traffic-Überlauf aufgrund von Kapazitätsüberschreitung. Wenn Ihre Back-Ends vor der Aktivierung dieser Funktion nicht überlastet waren, kann die nächstgelegene Region wahrscheinlich den gesamten Traffic verarbeiten. In diesem Fall kann es sein, dass sich der Traffic kurzfristig nicht ändert, wenn Sie diese Funktion aktivieren.

Traffic wurde verschoben, nachdem Back-Ends einer Region hinzugefügt oder daraus entfernt wurden

Wenn diese Funktion aktiviert ist, kann der Traffic verschoben werden, wenn einer Region neue Back-Ends hinzugefügt werden. Das ist zu erwarten, da Cloud Service Mesh versucht, Traffic an diese Backends weiterzuleiten, um die Gesamtlatenz des Netzwerks zu optimieren. Wenn die letzten Back-Ends entfernt werden, beginnt Cloud Service Mesh, Traffic an eine Remote-Region zu senden. Auch das ist ein erwartetes Verhalten.

Anfragen fehlgeschlagen

Wenn der Isolierungsmodus STRICT aktiviert ist und keine Back-Ends in derselben Region wie das Frontend bereitgestellt werden, wird erwartet, dass der Traffic fehlschlägt. Wenn das nicht das gewünschte Verhalten ist, müssen Sie dafür sorgen, dass Sie Back-Ends in jeder Region haben, in die Traffic gesendet werden soll.