Probleme beheben

Auf dieser Seite werden verschiedene Fehlerszenarien, die Fehlermeldungen für diese Szenarien und Schritte zur Fehlerbehebung erläutert.

Szenarien für Verbindungsfehler

Wenn bei Ihrer Instanz Verbindungsprobleme auftreten, prüfen Sie die Szenarien in diesem Abschnitt, um herauszufinden, ob eines davon das Problem verursacht.

Ist dies nicht der Fall, stellen Sie eine Telnet-Verbindung zu einem Ihrer Redis-Knoten her und führen Sie einige einfache Redis-Befehle aus, um zu prüfen, ob die Instanz responsiv ist.

  • Wenn der Knoten nicht reagiert, prüfen Sie, ob eines der Fehlerbehebungsprobleme aus den Netzwerkfehlerszenarien die Netzwerkverbindung des Knotens blockiert. Falls nicht, wenden Sie sich an den Google Cloud-Support.

Verbindungsfehler aufgrund von Ressourcen, die in verschiedenen VPC-Netzwerken bereitgestellt werden

Verbindung zu einer Memorystore-Instanz von einer Google Cloud aus herstellen wie z. B. eine Compute Engine-VM, müssen die Ressourcen bereitgestellt werden. sich im selben autorisierten VPC-Netzwerk wie die Redis-Instanz befinden.

Der Versuch, eine Memorystore-Instanz von einer Ressource in einer anderen Region oder einem anderen VPC-Netzwerk aus mit Telnet zu verbinden, führt zu folgender Fehlermeldung:

telnet: Unable to connect to remote host: Connection timed out

Verbindungsfehler durch gelöschtes VPC-Netzwerk-Peering

Beim Erstellen einer Memorystore for Redis-Instanz wird ein VPC-Peering zwischen Ihrem VPC-Netzwerk und einem internen Google-VPC-Netzwerk erstellt.

Das Netzwerk-Peering hat folgendes Format:

redis-peer-############

Wird dieses Netzwerk-Peering gelöscht, führt der Versuch, eine Telnet-Verbindung zur Redis-Instanz herzustellen, zu folgender Fehlermeldung:

telnet: Unable to connect to remote host: Connection timed out

Am einfachsten stellen Sie das gelöschte Netzwerk-Peering wieder her, indem Sie eine neue Memorystore for Redis-Instanz erstellen. Das Erstellen einer neuen Redis-Instanz stellt das gelöschte Netzwerk-Peering wieder her, sodass Sie es löschen können und Ihre ursprüngliche Redis-Instanz über das erforderliche Netzwerk-Peering verfügt.

Firewallregeln blockieren Ihre Instanz-IP-Adressen

Verbindungsprobleme können auftreten, wenn Sie Firewallregeln für ausgehenden Traffic erstellen, die den Redis-Port (6379) oder die IP-Adresse der Instanz blockieren.

Achten Sie darauf, keine Netzwerk-Firewallregeln zu erstellen, die den IP-Bereich Ihrer Redis-Instanzen blockieren.

Fehlerszenarien mit hoher CPU-Auslastung

Redis-Instanz reagiert nicht mehr, weil teure Redis-Befehle nicht ordnungsgemäß verwendet wurden.

Wenn bei Ihrer Redis-Instanz Probleme mit hoher Latenz, hoher Reaktionsfähigkeit oder Verbindungen auftreten, können die Probleme durch die unsachgemäße Verwendung der folgenden teuren Redis-Befehle verursacht werden:

Diese Befehle können die CPU stark belasten. Open-Source-Redis rät davon ab, KEYS in Produktionsumgebungen auszuführen, Sie können jedoch SCAN, eine sicherere Alternative zum Befehl KEYS. Wenn Sie LRANGE verwenden, um alle oder einen großen Teil Ihres Schlüsselraums abzufragen, können leistungsfähige CPU-Ressourcen genutzt werden. Die Verwendung eines komplexen Lua-Scripts mit EVAL kann zu einer hohen CPU-Auslastung führen.

HGETALL und ZRANGE können auch eine sehr große Anzahl von Schlüsseln zurückgeben, was sich negativ auf die Leistung Ihres Servers auswirkt.

Bevor Sie teure Befehle ausführen, sollten Sie die Größe der Daten prüfen Strukturen, die der Befehl abfragt, um sicherzustellen, dass er keine Latenz verursacht.

Wenn Ihre Instanz eine hohe Latenz aufweist oder nicht reagiert, überprüfen Sie Ihre clientseitigen Logs, um festzustellen, ob teure Befehle ausgeführt wurden. Falls ja, notieren Sie sich die Uhrzeit. Verwenden Sie dann Cloud Monitoring, um den Messwert redis.googleapis.com/stats/cpu_utilization aufzurufen. Prüfen Sie, ob Zeiten mit hoher CPU-Auslastung mit denen übereinstimmen, in denen die teuren Befehle ausgeführt wurden.

Wir raten davon ab, den Befehl KEYS in Produktionsumgebungen zu verwenden. Verwenden Sie für EVAL weniger komplexe Lua-Skripts. Reduzieren Sie für LRANGE die Anzahl der Schlüssel im Keyset, die in einem einzigen Vorgang abgefragt werden.

Szenarien für Netzwerkfehler

Der zugewiesene IP-Bereich ist ausgeschöpft oder es gibt eine in Konflikt stehende Route

Wenn Sie Ressourcen innerhalb des IP-Adressbereichs erstellen, der für Memorystore for Redis reserviert ist, können Sie alle Adressen aufbrauchen, was zur folgenden Fehlermeldung führt. Möglicherweise gibt es auch eine Route, die mit der IP-Adresse der Redis-Instanz in Konflikt steht, die Sie erstellen möchten.

In diesen Fällen wird die folgende Fehlermeldung angezeigt:

The IP ranges for the connection do not have enough available IPs. Allocate a new range or expand existing range and try again.

Sie können dieses Problem beheben, indem Sie zusätzliche IP-Adressen zuweisen oder die Abweichung beim Routenkonflikt beseitigen. Weitere Informationen dazu finden Sie unter Ausschöpfung des IP-Adressbereichs.

Sie haben für Ihr Netzwerk keine Verbindung für den Zugriff auf private Dienste eingerichtet

Wenn Ihre Redis-Instanz den Verbindungsmodus für den Zugriff auf private Dienste verwendet und für Ihr Netzwerk keine Verbindung für den Zugriff auf private Dienste besteht, wird möglicherweise folgende Fehlermeldung angezeigt:

Google private service access is not enabled. Enable private service access and try again

Um dieses Problem zu beheben, stellen Sie eine Verbindung für den Zugriff auf private Dienste her.

Das Netzwerk-Peering für den Zugriff auf private Dienste wird gelöscht.

Durch das Herstellen einer Verbindung für den Zugriff auf private Dienste wird eine Netzwerk-Peering-Verbindung namens servicenetworking-googleapis-com erstellt, die auf der Seite VPC-Netzwerk-Peering Ihres Projekts angezeigt wird.

Wenn Sie das Netzwerk-Peering löschen, wird der vorhandene Fehler für vorhandene Redis-Instanzen ausgegeben:

  • telnet: Unable to connect to remote host: Connection timed out

Wenn Sie das Netzwerk-Peering löschen, wird beim Erstellen einer Redis-Instanz der folgende Fehler angezeigt:

  • Private services access is not configured correctly. For steps on how to verify the connection, check the documentation.

Um dieses Problem zu beheben, folgen Sie dem letzten Schritt der gcloud-Anleitung unter Verbindung für den Zugriff auf private Dienste einrichten.

In Konflikt stehende Netzwerk-Flags während der Redis-Instanzerstellung

Wenn Sie sowohl den Parameter --reserved-ip-range als auch den Parameter --connect-mode=private-service-access verwenden, erhalten Sie die folgende Fehlermeldung:

Reserved IP range is not supported for --connect-mode private services access

Verwenden Sie zur Behebung dieses Problems entweder --reserved-ip-range mit --connect-mode=direct-peering oder --connect-mode=PRIVATE_SERVICE_ACCESS.

Sie können nicht beide gleichzeitig verwenden, da der Parameter --reserved-ip-range für den Verbindungsmodus für den Zugriff auf private Dienste nicht unterstützt wird.

Überschreiten des Subnetzwerkkontingents für Ihr Projekt

Die Anzahl der Subnetzwerke, die in Ihrem Projekt erstellt werden können, ist begrenzt. Wenn Sie dieses Kontingent überschreiten, erhalten Sie die folgende Fehlermeldung:

Internal network quota exceeded. Please request higher limit here: https://forms.gle/ZfVduUGq2iSYcYGm8 oder

Unable to create instance. Network quota limit has been reached. Please request higher limit here: https://forms.gle/ZfVduUGq2iSYcYGm8

Füllen Sie zur Behebung dieses Problems das Formular in der Fehlermeldung aus oder wenden Sie sich an den Google Cloud-Support.

Dienstprojekt ist nicht mit dem Hostprojekt verknüpft

Wenn Sie eine freigegebene VPC verwenden, wird Ihr Dienstprojekt nicht an Ihr Hostprojekt angehängt, wenn der folgende Fehler angezeigt wird:

Invalid network name <network-name>. Project <project-name> referenced is not the host project for <service-project-name>.

Hängen Sie Ihr Dienstprojekt an Ihr Hostprojekt an, um dieses Problem zu beheben.

Inkompatible Verwendung des Direct Peering-Verbindungsmodus und des freigegebenen VPC-Netzwerks während der Instanzerstellung

Sie können keine Redis-Instanz in einem Dienstprojekt mit dem Direct Peering-Verbindungsmodus erstellen, während Sie ein freigegebenes VPC-Netzwerk aus dem Hostprojekt für die Instanz festlegen.

Der Verbindungsmodus ist standardmäßig auf direct-peering gesetzt, wenn Sie keinen Wert für --connection-mode festlegen. Wenn Sie während der Instanzerstellung den Direct Peering-Verbindungsmodus verwenden und außerdem ein freigegebenes VPC-Netzwerk aus dem Hostprojekt als Wert für --network auswählen, erhalten Sie die folgende Fehlermeldung:

Authorized_network must exist in the same project as redis instance

Um dieses Problem zu beheben, müssen Sie --connect-mode=PRIVATE_SERVICE_ACCESS in Ihrem Redis-Instanzerstellungsbefehl angeben oder ein autorisiertes VPC-Netzwerk im selben Projekt wie Ihre Redis-Instanz auswählen.

Nicht unterstützte Compute Engine-IP-Adressbereiche

Sie können nicht von Compute Engine-VMs mit einer IP-Adresse im Bereich 172.17.0.0/16 auf Memorystore for Redis zugreifen, da dieser Bereich für eine interne Komponente reserviert ist.

Fehler bei der Verbindung mit Ihrer Redis-Instanz über andere Google Cloud-Ressourcen

Fehler beim Herstellen einer Verbindung zu Ihrer Instanz aus serverlosen Umgebungen, die einen Connector für serverlosen VPC-Zugriff erfordern

Wenn Sie keine Verbindung zu einer Redis-Instanz über eine der serverlosen Umgebungen herstellen können, die einen Serverless VPC Zugriff-Connector erfordern, ist es möglich, dass Sie keinen Serverless VPC Zugriff-Connector für Ihre Umgebung eingerichtet haben.

Weitere Informationen finden Sie im Abschnitt Anforderungen für den Connector für serverlosen VPC-Zugriff.

Fehler beim Herstellen einer Verbindung zu Ihrer Instanz mit einem Google Kubernetes Engine-Cluster

Sie können keine Verbindung zu einer Memorystore for Redis-Instanz von einem GKE-Cluster aus herstellen, wenn VPC-natives/IP-Aliasing in Ihrem Cluster aktiviert ist. Es ist am einfachsten, VPC-natives/IP-Aliasing bei der Erstellung von GKE-Clustern zu aktivieren. Wählen Sie beim Erstellen des Clusters unter "Erweiterte Optionen" die Option VPC nativ aus. Weitere Informationen finden Sie unter VPC-native Cluster erstellen.

Fehlerszenarien für Identity and Access Management (IAM)

Wiederherstellen einer gelöschten Richtlinienbindung für ein Dienstkonto

Memorystore for Redis verwendet die folgenden Dienstkonten zur Verwaltung Ihrer Redis-Instanzen:

  • service-project-number@service-networking.iam.gserviceaccount.com
  • service-project-number@cloud-redis.iam.gserviceaccount.com

Wenn Sie die Richtlinienbindungen für diese Dienstkonten löschen, können Sie keine neuen Instanzen mehr erstellen.

Wenn Sie in diesem Szenario versuchen, eine Redis-Instanz mit gcloud zu erstellen, erhalten Sie möglicherweise die folgende Fehlermeldung:

(gcloud.redis.instances.create) FAILED_PRECONDITION: A required IAM policy might be missing. Please run this command:"gcloud projects add-iam-policy-binding <YOUR-PROJECT-ID> --member='serviceAccount:service-<YOUR-PROJECT-NUMBER>@cloud-redis.iam.gserviceaccount.com' --role='roles/redis.serviceAgent'" and try again.

Führen Sie einen der folgenden Befehle aus, um die Richtlinienbindung für diese Dienstkonten wiederherzustellen. Ersetzen Sie dabei variables durch die entsprechenden Werte. Führen Sie den Befehl aus, der dem gelöschten Dienstkonto zugeordnet ist.

gcloud projects add-iam-policy-binding project-id --member='serviceAccount:service-project-number@service-networking.iam.gserviceaccount.com' --role='roles/servicenetworking.serviceAgent'
gcloud projects add-iam-policy-binding project-id --member='serviceAccount:service-project-number@cloud-redis.iam.gserviceaccount.com' --role='roles/redis.serviceAgent'

Zeitüberschreitungsfehler des Vorgangs

Die folgenden Fehlerszenarien führen zu einer nicht reagierenden Redis-Instanz und/oder zu einer Instanzzeitüberschreitung.

Netzwerkpartitionsfehler

Manchmal können Google Cloud-Ressourcen aufgrund eines Netzwerkpartitionsfehlers in Google Cloud-Servern nicht zonenübergreifend kommunizieren. Dies kann dazu führen, dass die Verbindung der Instanz unterbrochen wird und ein Zeitüberschreitungsfehler auftritt.

Nachdem Google Cloud den Netzwerkpartitionsfehler für die Region oder Zone, in der die Instanz bereitgestellt wird, behoben hat, sollte die Verbindung normal fortgesetzt werden.

In diesem Szenario kann eine Verbindungsfehlermeldung wie die folgende angezeigt werden:

telnet: Unable to connect to remote host: Connection timed out

Wenn Sie die Ursache des Zeitüberschreitungsfehlers nicht ermitteln können, wenden Sie sich an den Google Cloud-Support.

Dienstprojekt und Hostprojekt befinden sich nicht im selben VPC-Dienststeuerungsperimeter

Wenn Sie eine freigegebene VPC und einen VPC-Dienststeuerungsperimeter verwenden und bei Ihrer Redis-Instanzerstellung eine Zeitüberschreitung stattfindet, kann dies darauf hinweisen, dass sich Ihr Dienstprojekt und Ihr Hostprojekt nicht im selben Dienstperimeter befinden. Ihr Dienstprojekt und Ihr Hostprojekt müssen sich im selben Perimeter befinden, damit Ihre Redis-Instanzen mit Verbindungsclients über das freigegebene VPC-Netzwerk kommunizieren können.

Um herauszufinden, ob dieses Problem bei Ihnen auftritt, prüfen Sie die Audit-Logs Ihrer Redis-Instanz auf den folgenden Fehler:

violationReason: "NETWORK_NOT_IN_SAME_SERVICE_PERIMETER"

Um dieses Problem zu beheben, platzieren Sie Ihr Hostnetzwerk und Ihr Dienstnetzwerk im selben Dienstperimeter.

Fehlerbehebung bei Import- und Exportproblemen

Dieser Abschnitt beschreibt einige häufige Probleme, auf die Sie bei der Verwendung von Import und Export für Memorystore for Redis stoßen können.

Die Schaltflächen zum Importieren und Exportieren sind in der Google Cloud Console deaktiviert

Problem: Der in der Konsole angemeldete Nutzer hat nicht die Berechtigungen redis.instances.import und/oder redis.instances.export, die zum Importieren und/oder Exportieren von RDB-Dateien erforderlich sind.

Lösung: Weisen Sie dem Nutzer die Berechtigungen zu und aktualisieren Sie die Seite mit den Instanzdetails.

Der Importvorgang ist abgeschlossen, die Daten wurden jedoch nicht wiederhergestellt.

Wenn ein Importvorgang abgeschlossen ist, die Daten aber nicht wiederhergestellt werden, prüfen Sie zuerst die Google Cloud Console oder die Befehlszeile auf eine Fehlermeldung und beheben Sie alle Probleme, die durch die Fehlermeldung beschrieben werden.

Wenn während des Importvorgangs ein Fehler auftritt, wird die Instanz mit einer leeren RDB-Datei wiederhergestellt. Sie können versuchen, die Daten wiederherzustellen. Importieren Sie dazu dieselbe RDB-Datei oder verwenden Sie eine andere RDB-Datei.

Der Import ist fehlgeschlagen, weil die RDB-Datei zu groß war.

Wenn Sie die Fehlermeldung "Import RDB file gs://bucket/object.rdb size exceeded maximum memory 10GB" erhalten, sollten Sie Ihre Instanz skalieren und den Import noch einmal versuchen. Sie können auch versuchen, eine kleinere RDB-Datei in Ihre Instanz zu importieren.

Probleme mit der Google Cloud CLI beheben

Wenn ein Problem auftritt, bei dem ein gcloud CLI-Befehl nicht verfügbar ist oder wenn sich der Befehl anders verhält, als er dokumentiert ist, versuchen Sie, die gcloud CLI zu aktualisieren:

gcloud components update

Alle laufenden Befehle und Verbindungen für eine Redis-Instanz anhalten

Da Memorystore for Redis ein von Google verwaltetes Produkt ist, gibt es einige Befehle, die in Ihrer Redis-Instanz blockiert werden, um eine sichere und zuverlässige Umgebung bereitzustellen. Einer der eingeschränkten Befehle ist CLIENT, einschließlich CLIENT KILL, zum Stoppen von Befehlen.

Wenn ein Redis-Befehl eine hohe CPU-/RAM-Auslastung verbraucht und Ihre Produktionsumgebung beeinträchtigt, müssen Sie die Instanz neu starten (fürBasisstufe Konfigurationen) oder ein Failover in ein Replikat (für Standard-Stufe-Konfigurationen). Dieser Neustart-/Failover-Vorgang stoppt alle auf dem Redis-Server ausgeführten Befehle und beendet alle laufenden Verbindungen.

Im Folgenden finden Sie Befehle zur Durchführung von Neustarts oder Failovers für jede Memorystore for Redis-Konfiguration.

Befehle in Memorystore for Redis-Instanzen der Basis-Stufe beenden

gcloud redis instances failover INSTANCE_NAME --data-protection-mode=limited-data-loss

Befehle in Memorystore for Redis-Instanzen der Basis-Stufe beenden

Die einzige Möglichkeit, einen Neustart in einer Memorystore for Redis-Instanz durchzuführen, besteht darin, die Konfiguration zu ändern, z. B. das Hochskalieren der Instanz. Unten finden Sie ein Beispiel für einen Befehl, den Sie ausführen können, um Ihre Instanz neu zu starten.

gcloud redis instances update INSTANCE_NAME --region REGION_ID --size NUMBER_GB

Nachdem Sie Ihre Instanz auf eine andere Größe skaliert haben, können Sie einen weiteren Skalierungsvorgang durchführen, um sie wieder auf die ursprüngliche Größe zu bringen.

Probleme mit der Organisationsrichtlinie „Domaineingeschränkte Freigabe“

Abhängig davon, wann die Instanz erstellt wurde, verwendet Memorystore for Redis eine der Dienstkonten in zwei verschiedenen Formaten erstellen. Informationen dazu, welches Dienstkontoformat für Ihre Instanz verwendet wird, finden Sie unter Format für Memorystore for Redis-Dienstkonten.

Es gibt ein bekanntes Problem, bei dem die Organisation iam.allowedPolicyMemberDomains verursacht Fehler bei der Verwendung mit Memorystore for Redis-Instanzen, die das Dienstkonto [PROJECT_NUMBER]-compute@developer.gserviceaccount.com Format.

In folgenden Fällen kann der folgende Fehler auftreten: One or more users named in the policy do not belong to a permitted customer.

Es gibt zwei Möglichkeiten, dieses Problem zu beheben.

Option 1

Sie können eine neue Instanz erstellen. Neu erstellte Instanzen haben das richtige Dienstkontoformat, das mit der Organisationsrichtlinie kompatibel ist. Wenn es für die Verwaltung des Cache-Inhalts wichtig ist, können Sie einen Export durchführen, vorhandenen Daten und einen Import in die neue Instanz. Eine neu erstellte Instanz hat eine neue Dienst-IP-Adresse, die in Ihrer Anwendung konfiguriert werden muss.

Option 2

Wenn es nicht möglich ist, Ihre Memorystore-Instanz neu zu erstellen, folgen Sie die Option Kontozugriff erzwingen Behelfslösung.