Richtlinien für den Nachrichtenspeicher konfigurieren

Wenn Sie Nachrichten auf dem globalen Pub/Sub-Endpunkt veröffentlichen, speichert Pub/Sub die Nachrichten automatisch in der nächsten Google Cloud-Region. Wenn Sie steuern möchten, in welchen Regionen Ihre Nachrichten gespeichert und verarbeitet werden, können Sie eine Nachrichtenspeicherrichtlinie für Ihr Thema konfigurieren.

Übersicht über die Nachrichtenspeicherrichtlinie

Sie können eine Nachrichtenspeicherrichtlinie festlegen, wenn Sie ein neues Thema erstellen oder ein Thema über die Console, die Google Cloud CLI oder die REST APIs aktualisieren.

Die Nachrichtenspeicherrichtlinie gilt nur für den Nachrichteninhalt. Die Richtlinie gilt nicht für andere Daten wie Themennamen, Labels oder IAM-Einstellungen (Identity and Access Management).

Pub/Sub speichert Nachrichten, wenn ein Client diese in Pub/Sub veröffentlicht. Eine Nachrichtenspeicherrichtlinie sorgt dafür, dass Pub/Sub Nachrichten nur in den von Ihnen angegebenen Google Cloud-Regionen speichert und verarbeitet, unabhängig davon, woher die Veröffentlichungs- oder Abonnieren-Anfragen stammen. Wenn die Richtlinie mehrere Regionen für Veröffentlichungsvorgänge zulässt, speichert Pub/Sub die Nachricht in einer zulässigen Region, die am nächsten an der Stelle liegt, an der die veröffentlichte Nachricht in das Google Cloud-Netzwerk eingeht.

Wenn Sie eine Nachrichtenspeicherrichtlinie angeben, können Sie enforceInTransit auf True setzen. Mit diesem Flag wird Folgendes geregelt:

  • Veröffentlichungs-, Pull- und StreamingPull-Anfragen, die in einer Region empfangen werden, die in der Nachrichtenspeicherrichtlinie nicht zulässig ist, werden mit dem Fehler FAILED_PRECONDITION abgelehnt.

  • Die Zustellung von Push-Abos erfolgt nur innerhalb der zulässigen Cloud-Regionen. In einigen Fällen kann diese Einschränkung dazu führen, dass die Nachrichtenzustellung für Push-Abos vollständig pausiert wird. Wenn ein Push-Abo einen solchen Status erhält, weil die Push-Standorte durch eine Kombination aus Faktoren wie dem Nachrichtenspeicherort, den zulässigen Regionen und dem Standort der Exportressourcen zu stark eingeschränkt sind, wird dieser Status in Stackdriver sichtbar.

Richtlinien zur Nachrichtenspeicherung für neue Themen

  • Wenn Sie beim Erstellen eines Themas keine Nachrichtenspeicherrichtlinie angeben, wird die Speicherrichtlinie automatisch anhand der geltenden Organisationsrichtlinie zur Beschränkung von Ressourcenstandorten ermittelt. Wenn keine Organisationsrichtlinie in Kraft ist, lässt die Nachrichtenspeicherrichtlinie alle Regionen zu.

  • Ist keine angegebene Nachrichtenspeicherrichtlinie vorhanden, wird das Flag enforceInTransit anhand der geltenden Organisationsrichtlinie Regionen während der Übertragung für Pub/Sub-Nachrichten erzwingen bestimmt. Weitere Informationen zu dieser Organisationsrichtlinie finden Sie unter Einschränkungen für Organisationsrichtlinien.

  • Wenn Sie beim Erstellen eines Themas eine Nachrichtenspeicherrichtlinie angeben, kann die Nachrichtenspeicherrichtlinie nur die Regionen enthalten, die von der effektiven Organisationsrichtlinie Ressourcenstandortbeschränkung zugelassen werden. Wenn keine Organisationsrichtlinien gelten, kann die Nachrichtenspeicherrichtlinie eine beliebige Region enthalten.

Richtlinien zur Nachrichtenspeicherung für vorhandene Themen

  • Wenn eine Organisationsrichtlinie aktualisiert wird, werden die Änderungen nicht automatisch auf vorhandene Themen übertragen. Daher ist es möglich, dass die Nachrichtenspeicherrichtlinie eines vorhandenen Themas nicht mit den neuesten Organisationsrichtlinien übereinstimmt. Weitere Informationen finden Sie unter Unterschiede zwischen Organisations- und Themenrichtlinien verwalten.

  • Wenn die Nachrichtenspeicherrichtlinie eines Themas aktualisiert wird, werden die Änderungen nicht für bereits veröffentlichte Nachrichten übernommen. Nachrichten, die bereits aufgrund einer älteren Richtlinie gespeichert wurden, werden nicht verschoben, um der neuen Richtlinie zu entsprechen. Die Änderungen gelten nur für Nachrichten, die nach der Aktualisierung veröffentlicht wurden.

Ausnahmen

Die Richtlinie gibt eine Liste der zulässigen Google Cloud-Regionsnamen an. Daher werden die folgenden Elemente nicht unterstützt:

  • Ausschlusslisten
  • Zonen oder Standorte mit mehreren Regionen

Wenn Sie eine Nachricht mit einem Reihenfolgeschlüssel veröffentlichen und die Nachrichtenspeicherrichtlinie die nächstgelegene Region ausschließt, gibt der Pub/Sub-Dienst einen Fehler zurück.

Richtlinien für den Nachrichtenspeicher konfigurieren

Es gibt zwei Möglichkeiten, Nachrichtenspeicherrichtlinien für Themen zu konfigurieren:

  • Legen Sie mithilfe einer Organisationsrichtlinie eine Speicherrichtlinie für Nachrichten fest.
  • Konfigurieren Sie beim Erstellen eines Themas eine Nachrichtenspeicherrichtlinie.

Speicherrichtlinie für Nachrichten mithilfe einer Organisationsrichtlinie festlegen

Console

Legen Sie eine Organisationsrichtlinie zur Beschränkung von Ressourcenstandorten fest, um eine Nachrichtenspeicherrichtlinie zu konfigurieren, die für mehrere Themen gilt.

  1. Rufen Sie in der Identity and Access Management-Konsole die Seite Organisationsrichtlinien auf.

    Zu den Organisationsrichtlinien

  2. Wählen Sie den Knoten der Ressourcenhierarchie (Organisation, Ordner oder Projekt) aus, für den Sie eine Organisationsrichtlinie festlegen möchten.

  3. Geben Sie als Filter Beschränkung von Ressourcenstandorten ein.

  4. Klicken Sie auf Google Cloud – Beschränkung von Ressourcenstandorten.

  5. Klicken Sie auf BEARBEITEN.

  6. Fügen Sie nach Bedarf Regionen hinzu oder entfernen Sie sie.

    Diese Einstellungen werden für alle neu erstellten Themen übernommen. Änderungen werden nicht automatisch für vorhandene Themen übernommen. Zum Aktualisieren vorhandener Themen müssen Sie einen Aktualisierungsvorgang ausführen.

Weitere Informationen zu Organisationsrichtlinien finden Sie unter Google Cloud-Ressourcen verwalten.

Beim Erstellen eines Themas eine Nachrichtenspeicherrichtlinie konfigurieren

Console

Wenn Sie die Google Cloud Console verwenden, können Sie beim Erstellen eines Themas keine Nachrichtenspeicherrichtlinie konfigurieren. Stattdessen übernehmen alle neuen Themen automatisch Ihre Organisationsrichtlinie für die Beschränkung von Ressourcenstandorten.

Nachdem Sie ein Thema erstellt haben, können Sie jedoch die zugehörige Nachrichtenspeicherrichtlinie in der Console mit einem Aktualisierungsvorgang ändern.

gcloud-CLI

Verwenden Sie zum Erstellen eines Themas mit einer bestimmten Nachrichtenspeicherrichtlinie den Befehl gcloud pubsub topics create mit dem Flag --message-storage-policy-allowed-regions:

gcloud pubsub topics create TOPIC_ID \
    --message-storage-policy-allowed-regions=REGION1, REGION2

Ersetzen Sie Folgendes:

  • TOPIC_ID: ID oder Name des neuen Themas
  • REGION1, REGION2: eine durch Kommas getrennte Liste unterstützter Google Cloud-Regionen.

REST

Verwenden Sie die Methode projects.topics.create, um ein Thema mit einer Nachrichtenspeicherrichtlinie zu erstellen.

Die Anfrage muss mit einem Zugriffstoken im Header Authorization authentifiziert werden. So rufen Sie ein Zugriffstoken für die aktuellen Standardanmeldedaten für Anwendungen ab: gcloud auth application-default print-access-token.

 POST https://pubsub.googleapis.com/v1/projects/PROJECT_ID/topics/TOPIC_ID
 Authorization: Bearer $(gcloud auth application-default print-access-token)
 Content-Type: application/json --data @response-body.json

Geben Sie im Anfragetext die folgenden Felder an:

{
  "name": "projects/PROJECT_ID/topics/TOPIC_ID",
  "messageStoragePolicy": {
    "allowedPersistenceRegions": ["REGION"],
    "enforceInTransit": true
  }
}

Wobei:

  • PROJECT_ID ist die Projekt-ID.

  • TOPIC_ID ist Ihre Themen-ID.

  • REGION ist die von Ihnen angegebene Region.

Beispielantwort:

{
  "name": "projects/PROJECT_ID/topics/TOPIC_ID",
  "messageStoragePolicy": {
    "allowedPersistenceRegions": [
      "REGION"
    ],
    "enforceInTransit": true
  }
}

Weitere Informationen zum Konfigurieren von Nachrichtenspeicherrichtlinien finden Sie in den folgenden API-Referenzen.

Richtlinien für Nachrichtenspeicher aktualisieren

Console

  1. Öffnen Sie in der Google Cloud Console die Seite Themendetails.

    Themendetails aufrufen

  2. Wählen Sie ein Thema aus, das Sie aktualisieren möchten.

    Sie können mehrere Themen auswählen.

  3. Wählen Sie im Infofeld den Tab Speicherrichtlinie aus.

    Dieser Bereich ist möglicherweise standardmäßig minimiert. Falls es minimiert ist, klicken Sie auf Infofeld anzeigen.

  4. Wählen Sie so viele Regionen wie nötig aus oder heben Sie die Auswahl auf.

  5. Klicken Sie auf Aktualisieren.

gcloud-CLI

Führen Sie den folgenden gcloud pubsub topics update-Befehl aus, um die in der Richtlinie zur Beschränkung von Ressourcenstandorten Ihrer Organisation definierte Nachrichtenspeicherrichtlinie in ein Thema zu übertragen:

gcloud pubsub topics update TOPIC_ID \
    --recompute-message-storage-policy

Zum Aktualisieren der Nachrichtenspeicherrichtlinie eines Themas mit bestimmten Regionen führen Sie den Befehl gcloud pubsub topics update mit dem Flag --message-storage-policy-allowed-regions aus:

gcloud pubsub topics update TOPIC_ID \
    --message-storage-policy-allowed-regions=REGION1, REGION2

Ersetzen Sie Folgendes:

  • TOPIC_ID: die ID des Themas, das Sie aktualisieren
  • REGION1, REGION2: eine durch Kommas getrennte Liste unterstützter Google Cloud-Regionen.

REST

Verwenden Sie die Methode projects.topics.patch, um ein Thema mit einer Nachrichtenspeicherrichtlinie zu aktualisieren.

Die Anfrage muss mit einem Zugriffstoken im Header Authorization authentifiziert werden. So rufen Sie ein Zugriffstoken für die aktuellen Standardanmeldedaten für Anwendungen ab: gcloud auth application-default print-access-token.

 PATCH https://pubsub.googleapis.com/v1/projects/PROJECT_ID/topics/TOPIC_ID
 Authorization: Bearer $(gcloud auth application-default print-access-token)
 Content-Type: application/json --data @response-body.json

Geben Sie im Anfragetext die folgenden Felder an:

{
  "name": "projects/PROJECT_ID/topics/TOPIC_ID",
  "messageStoragePolicy": {
    "allowedPersistenceRegions": ["REGION"], // Replace with your required region
    "enforceInTransit": true
  }
}

Wobei:

  • PROJECT_ID ist die Projekt-ID.

  • TOPIC_ID ist Ihre Themen-ID.

  • REGION ist die von Ihnen angegebene Region.

Beispielantwort:

{
  "name": "projects/PROJECT_ID/topics/TOPIC_ID",
  "messageStoragePolicy": {
    "allowedPersistenceRegions": [
      "REGION"
    ],
    "enforceInTransit": true
  }
}

Weitere Informationen zum Aktualisieren von Nachrichtenspeicherrichtlinien finden Sie in den folgenden API-Referenzen.

Unterschiede zwischen Organisations- und Themenrichtlinien verwalten

Unterschiede zwischen Organisations- und Themenrichtlinien ansehen

Console

In der Google Cloud Console werden alle Unterschiede zwischen der Organisationsrichtlinie und den Nachrichtenspeicherrichtlinien einzelner Themen angezeigt.

So prüfen Sie, ob Themen nicht mit Ihrer Organisationsrichtlinie synchron sind:

  1. Rufen Sie die Seite Themendetails auf.

    Themendetails aufrufen

  2. Wählen Sie ein Thema aus.

  3. Wählen Sie im Infofeld den Tab Speicherrichtlinie aus.

    Dieser Bereich ist möglicherweise standardmäßig minimiert. Falls es minimiert ist, klicken Sie auf Infofeld ansehen.

    Ihre Speicherrichtlinien werden im Steuerfeld zusammen mit allen Unterschieden zwischen Organisations- und Themenrichtlinien angezeigt.

gcloud-CLI

Führen Sie den folgenden Befehl aus, um die aktuelle Richtlinie zu prüfen, die einem Thema zugewiesen ist:

gcloud pubsub topics describe TOPIC_ID

Ersetzen Sie Folgendes:

  • TOPIC_ID: die ID des Themas, das Sie untersuchen.

Unterschiede zwischen Organisations- und Themenrichtlinien beheben

Console

  1. Öffnen Sie in der Google Cloud Console die Seite Themendetails.

    Zu Pub/Sub

  2. Wählen Sie ein Thema aus.

  3. Wählen Sie im Infofeld den Tab Speicherrichtlinie aus.

    Dieser Bereich ist möglicherweise standardmäßig minimiert. Falls es minimiert ist, klicken Sie auf Infofeld anzeigen.

    Ihre Speicherrichtlinien und etwaige Abweichungen werden im Steuerfeld angezeigt.

    Falls Diskrepanzen auftreten, werden im Infofeld drei Optionen zum Synchronisieren der Speicherrichtlinie des Themas mit Ihrer Organisationsrichtlinie angezeigt:

    • Themen ermöglichen das Speichern an nicht zulässigen Speicherorten.

      Aktualisieren Sie, um die Speicherung nur dort zu ermöglichen, wo Ihre Richtlinien dies zulassen.

    • Das Thema lässt das Speichern an einigen zulässigen Speicherorten nicht zu.

      Aktualisieren Sie, um die Speicherung überall dort zu ermöglichen, wo Ihre Richtlinien dies zulassen.

    • Die Themen sind veraltet und enthalten nicht zulässige und zulässige Standorte.

      Aktualisieren Sie, um die Speicherung dort zu erlauben, wo Ihre Richtlinien dies zulassen.

  4. Wähle die entsprechende Option aus, um deine Probleme zu beheben.

  5. Klicken Sie auf Thema aktualisieren.

    Das Dialogfeld Mit Speicherrichtlinie der Organisation synchronisieren wird geöffnet.

  6. Klicken Sie auf Thema aktualisieren.

Monitoring und Fehlerbehebung

Damit Sie besser verstehen, wo Nachrichtendaten gespeichert werden, bietet Pub/Sub Messwerte, die nach Google Cloud-Regionen aufgeschlüsselt sind.

Sie können diese Messwerte für folgende Zwecke verwenden:

  • Mehr Informationen dazu, wie Ihre Daten auf der ganzen Welt verteilt sind.
  • Optimieren Sie den Standort der Publisher- und Abonnentenbereitstellung anhand dieser Daten.

Messwerte zum Nachrichtenspeicher

Anzahl der nicht bestätigten gespeicherten Nachrichten:

subscription/num_unacked_messages_by_region

Menge der gespeicherten Daten:

subscription/unacked_bytes_by_region

Alter der ältesten Nachricht:

subscription/oldest_unacked_message_age_by_region

Analoge Messwerte sind für Themen und Snapshots verfügbar. Darüber hinaus stehen entsprechende Messwerte für bestätigte Nachrichten zur Verfügung, die optional für die erneute Wiedergabe aufbewahrt werden. Beispiel:

subscription/num_retained_acked_messages_by_region

Auswirkungen auf Leistung und Verfügbarkeit

Die Nachrichtenspeicherrichtlinie wirkt sich nicht auf das Gesamt-SLA aus, führt jedoch zu einem Kompromiss bei der Verfügbarkeitskontrolle, wenn Publisher oder Abonnenten außerhalb von Google Cloud oder in Regionen ausgeführt werden, die von der Richtlinie nicht zugelassen werden. Nutzer, die Publisher-Clients innerhalb der von der Nachrichtenspeicherrichtlinie zulässigen Regionen ausführen, bemerken keine Änderungen an der Latenz oder Verfügbarkeit des Dienstes.

Um diese Kompromisse zu verstehen, sollten Sie überlegen, wie Veröffentlichungsanfragen weitergeleitet werden. Im Allgemeinen versucht Pub/Sub, Ihre Nachrichten so nah wie möglich an der Quelle der Anfrage zu speichern. Anfragen, die aus Google Cloud stammen, sind in der Regel an die Pub/Sub-Instanzen in derselben Region gebunden. Wenn ein Publisher in einer einzelnen Region ansässig ist, erhöht sich die Verfügbarkeit nicht, wenn der Nachrichtenspeicherrichtlinie nur weitere Regionen hinzugefügt werden. Bei der Veröffentlichung von außerhalb von Google Cloud wird eine zusätzliche Routingebene verwendet, um die Anfrage an eine nahe gelegene Google Cloud-Region zu senden, in der der Pub/Sub-Dienst verfügbar ist.

Beispiel: Eine Nachrichtenspeicherrichtlinie lässt nur die Region us-central1 zu.

  1. Ein Publisher-Client, der in us-east1 ausgeführt wird, gibt eine Publish-Anfrage aus.
  2. Die Anfrage wird an einen Pub/Sub-Server in us-east1 weitergeleitet.
  3. Anstatt die Daten in us-east1 zu speichern, wird die Anfrage an die nächstgelegene Region weitergeleitet, die von der Nachrichtenspeicherrichtlinie zugelassen wird: us-central1.
  4. Pub/Sub speichert die veröffentlichten Nachrichten in us-central1 und leitet Nachrichten von diesem Speicherort an Abonnenten weiter.

Dieser Mechanismus hat Auswirkungen auf die Anfragelatenz und die allgemeine Systemverfügbarkeit. Da die Anfrage mehr Netzwerk-Links durchläuft, dauert die Ausführung länger und die Wahrscheinlichkeit, dass sie fehlschlägt. Dies bedeutet auch, dass die Abonnenten die Nachricht etwas später sehen, da sie vor dem Versenden in die nächste zulässige Region geleitet werden muss. Wenn die Richtlinie eine einzelne Region zulässt, Ihre Publisher-Anwendungen jedoch in mehreren Regionen ausgeführt werden, ist die verteilte Anwendung nur noch als die einzige zulässige Region verfügbar.

Nächste Schritte