Fehlerbehebung bei regionalen Ansichten globaler Ressourcen

In diesem Dokument wird beschrieben, wie Sie Probleme mit der Konsistenz, Replikationsverzögerungen und dem Verhalten von Kontingentmesswerten beheben, wenn Sie globale Ressourcen über Compute Engine-API-Endpunkte für regionale Ansichten abfragen. Weitere Informationen zu regionalisierten Endpunkten mit Lesezugriff finden Sie unter Regionale Ansichten globaler Ressourcen.

Replikationsverzögerungen oder fehlende Ressourcen

Wenn Sie regionale Metadatenendpunkte abfragen, stellen Sie möglicherweise fest, dass neu erstellte globale Ressourcen oder kürzlich aktualisierte Metadatenfelder nicht sofort in regionalen Antworten angezeigt werden.

Regionale Ansichts-APIs verarbeiten Leseanfragen, indem sie ein regionales Replikat mit Lesezugriff der zentralen globalen Datenbank abfragen. Aktualisierungen, die an primären globalen Ressourcen mit standardmäßigen globalen Endpunkten vorgenommen werden, werden asynchron in diese regionalen Replikate repliziert.

Diese asynchrone Replikation bedeutet, dass regionale Ansichten Eventual Consistency sind. Die P99-Replikationslatenz von der zentralen globalen Datenbank zu regionalen Replikaten liegt in der Regel unter 60 Sekunden.

Lösung: Versuchen Sie Folgendes, um dieses Problem zu beheben:

  • Auf Replikation warten: Die meisten Replikationsaktualisierungen werden innerhalb von 60 Sekunden abgeschlossen. Wenn ein automatisiertes Skript oder eine Clientarbeitslast eine neu erstellte Ressource abfragt, muss Ihr Client eine Wiederholungslogik mit exponentiellem Backoff implementieren.
  • Transparenter Fallback: Wenn eine explizite GET Anfrage für eine bestimmte Ressourcen-ID, die auf ein regionales Replikat ausgerichtet ist, zu einem Cache Fehler führt, versucht Compute Engine automatisch einen Fallback-Lesevorgang für die zentrale globale Datenbank innerhalb derselben Transaktion.
  • Globale Endpunkte für starke Konsistenz abfragen: Wenn Ihre Bereitstellung pipeline eine sofortige Read-after-Write-Konsistenz ohne Replikationslatenz erfordert, fragen Sie direkt kanonische globale Endpunkte anstelle von regionalen Ansichten ab. Fragen Sie beispielsweise projects.get, images.get oder images.list ab.

404 Not Found-Antworten

Möglicherweise erhalten Sie den HTTP-Statuscode 404 Not Found, wenn Sie versuchen, ein bestimmtes Image oder eine bestimmte Projektansicht abzurufen.

Ein 404 Not Found-Fehler kann folgende Ursachen haben:

  • Die Zielressource ist in der zentralen globalen Datenbank nicht vorhanden.
  • Die Zielressource wurde in den letzten Sekunden erstellt, die Replikation zum regionalen Replikat ist noch nicht abgeschlossen und die transparente Fallback-Anfrage an die zentrale globale Datenbank hat das Zeitlimit überschritten oder ist fehlgeschlagen.
  • Sie haben in der Anfrage-URL einen ungültigen Parameter für die Region oder eine ungültige Projekt-ID angegeben.

Lösung: Versuchen Sie Folgendes, um dieses Problem zu beheben:

  1. Prüfen Sie, ob die angeforderte Ressource global vorhanden ist, indem Sie eine standardmäßige globale describe oder list Anfrage ausführen, z. B. gcloud compute images describe IMAGE_NAME oder gcloud compute project-info describe --project=PROJECT_ID.
  2. Prüfen Sie den URL-Pfad der Anfrage, um sicherzustellen, dass der String REGION gültig und aktiv ist.
  3. Wenn die Ressource neu erstellt wurde, wiederholen Sie die Anfrage nach 60 Sekunden.

Fehlendes quota-Array in projectViews-Antworten

Wenn Sie eine compute.Project-Ressource mit regionalen projectViews.get-Endpunkten abfragen, wird das quota-Array aus der Antwort ausgeschlossen.

Um die regionale Fehlerisolation und Hochverfügbarkeit aufrechtzuerhalten, liest der projectViews-Endpunkt ausschließlich aus dem regionalen Replikat. Da keine regionsübergreifenden Fanouts ausgeführt werden, um die Kontingentnutzung in allen Zonen zu erfassen, wird das quota-Array ausgeschlossen.

Lösung: So beheben Sie das Problem:

  • Achten Sie darauf, dass Ihre Anwendungen das quota-Array nicht in Antworten erwarten, die von regionalen projectViews-Endpunkten zurückgegeben werden.
  • Wenn Sie eine genaue Kontingentkonfiguration und Echtzeit-Nutzungsmesswerte für alle Regionen und Zonen abrufen möchten, fragen Sie den globalen projects.get-Endpunkt ab oder beobachten Sie die Compute Engine API-Kontingentmesswerte in Cloud Monitoring.

Nächste Schritte