Fehlerbehebung

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

Konnektivitätsfehlerszenarien

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

Ist dies nicht der Fall, wenden Sie Telnet an einen Ihrer Redis-Knoten an 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 in Netzwerkfehlerszenarien die Netzwerkverbindung Ihres Knotens blockiert. Wenden Sie sich andernfalls an den Google Cloud-Support.

Verbindungsfehler, der durch Ressourcen verursacht wird, die in verschiedenen VPC-Netzwerken bereitgestellt werden

Wenn Sie von einer Google Cloud-Ressource wie einer Compute Engine-VM eine Verbindung zu einer Memorystore-Instanz herstellen möchten, müssen die Ressourcen im selben autorisierten VPC-Netzwerk wie die Redis-Instanz bereitgestellt werden.

Wird versucht, von einer Ressource in einer anderen Region oder einem anderen VPC-Netzwerk eine Telnet-Verbindung zu einer Memorystore-Instanz herzustellen, wird die folgende Fehlermeldung angezeigt:

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-############

Wenn dieses Netzwerk-Peering gelöscht ist und Sie versuchen, über Telnet mit der Redis-Instanz zu arbeiten, wird die folgende Fehlermeldung angezeigt:

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

Am einfachsten lässt sich das gelöschte Netzwerk-Peering wiederherstellen, indem Sie eine neue Memorystore for Redis-Instanz erstellen. Beim Erstellen einer neuen Redis-Instanz wird das gelöschte Netzwerk-Peering wiederhergestellt. Sie können es also löschen und Ihre ursprüngliche Redis-Instanz hat das erforderliche Netzwerk-Peering.

Firewallregeln blockieren die IP-Adressen Ihrer Instanz

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

Erstellen Sie keine Netzwerk-Firewallregeln, die den IP-Bereich Ihrer Redis-Instanzen blockieren.

Szenarien für hohe CPU-Auslastungsfehler

Reaktionsfähigkeit von Redis-Instanzen aufgrund nicht ordnungsgemäßer Verwendung teurer Redis-Befehle

Wenn bei der Redis-Instanz hohe Latenz, Reaktionsschnelligkeit oder Verbindungsprobleme auftreten, kann das an unsachgemäßer Verwendung der folgenden teuren Redis-Befehle liegen:

Diese Befehle können zu einer starken CPU-Auslastung Ihrer Instanz führen. In Open-Source-Redis wird die Ausführung von KEYS in Produktionsumgebungen abgeraten. Die Verwendung von LRANGE zur Abfrage des gesamten oder eines großen Teils Ihres Schlüsselbereichs kann eine hohe CPU-Ressourcen in Anspruch nehmen. Die Verwendung eines komplexen Lua-Skripts mit EVAL kann zu einer hohen CPU-Auslastung führen.

Wenn die Latenz Ihrer Instanz hoch ist oder nicht reagiert, prüfen Sie die clientseitigen Logs, um zu überprüfen, ob teure Befehle ausgeführt wurden. Falls ja, notieren Sie sich die Uhrzeit. Verwenden Sie als Nächstes Cloud Monitoring, um den Messwert redis.googleapis.com/stats/cpu_utilization aufzurufen. Prüfen Sie, ob Zeiträume mit hoher CPU-Auslastung mit denselben Zeiträumen übereinstimmen, in denen die teuren Befehle ausgeführt wurden.

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

Szenarien für Netzwerkfehler

Der zugewiesene IP-Bereich ist erschöpft oder eine in Konflikt stehende Route ist vorhanden

Wenn Sie Ressourcen innerhalb des für Memorystore for Redis dedizierten IP-Adressbereichs erstellen, können Sie alle Adressen auslösen, was zu der folgenden Fehlermeldung führt. Alternativ kann es eine Route geben, die mit der IP-Adresse der Redis-Instanz in Konflikt steht, die Sie erstellen möchten.

Diese Szenarien führen zu folgender Fehlermeldung:

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 Diskrepanz im Routenkonflikt beseitigen. Weitere Informationen dazu finden Sie unter Ausschöpfung des IP-Adressbereichs.

Sie haben keine Verbindung zu einem privaten Dienstzugriff für Ihr Netzwerk hergestellt

Wenn Ihre Redis-Instanz den Modus für den Zugriff auf private Dienste verwendet und für Ihr Netzwerk keine Verbindung über private Dienste hergestellt wird, erhalten Sie möglicherweise den folgenden Fehler:

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

Um dieses Problem zu beheben, stellen Sie eine Verbindung zum privaten Zugriff auf Dienste her.

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

Beim Einrichten 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, erhalten Sie für bestehende Redis-Instanzen den folgenden Fehler:

  • 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.

Führen Sie zum Beheben dieses Problems den letzten Schritt der gcloud-Anleitung unter Verbindung für den Zugriff auf private Dienste einrichten aus.

In Konflikt stehende Netzwerk-Flags bei der Redis-Instanzerstellung

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

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

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

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

Überschreitung 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 das Formular in der Fehlermeldung aus oder wenden Sie sich an den Google Cloud-Support, um das Problem zu beheben.

Dienstprojekt nicht an Hostprojekt angehängt

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>.

Um dieses Problem zu beheben, hängen Sie Ihr Dienstprojekt an Ihr Hostprojekt an.

Inkompatible Nutzung 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 vom Hostprojekt für die Instanz festlegen.

Der Verbindungsmodus ist standardmäßig auf direct-peering gesetzt, wenn Sie für --connection-mode keinen Wert festlegen. Wenn Sie beim Erstellen der Instanz den Direct Peering-Verbindungsmodus verwenden und für das Hostprojekt auch ein freigegebenes VPC-Netzwerk als Wert für --network auswählen, wird die folgende Fehlermeldung angezeigt:

Authorized_network must exist in the same project as redis instance

Zum Beheben dieses Problems müssen Sie in Ihrem Redis-Instanzerstellungsbefehl --connect-mode=PRIVATE_SERVICE_ACCESS 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 von Compute Engine-VMs mit IP-Adresse im Bereich 172.17.0.0/16 nicht auf Memorystore for Redis zugreifen, da dieser Bereich für eine interne Komponente reserviert ist.

Fehler beim Herstellen einer Verbindung von anderen GCP-Ressourcen zu Ihrer Redis-Instanz

Fehler beim Herstellen einer Verbindung von Instanzen über serverlose Umgebungen, die einen Connector für serverlosen VPC-Zugriff benötigen

Wenn Sie in einer der serverlosen Umgebungen, die einen Connector für serverlosen VPC-Zugriff benötigen, keine Verbindung zu einer Redis-Instanz herstellen können, haben Sie möglicherweise keinen Connector für serverlosen VPC-Zugriff für Ihre Umgebung eingerichtet.

Weitere Informationen finden Sie unter Anforderungen für Connectors für serverlosen VPC-Zugriff.

Fehler beim Herstellen einer Verbindung zu Ihrer Instanz über einen Google Kubernetes Engine-Cluster

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

IAM-Fehler ( Identity and Access Management)

Gelöschte Richtlinienbindung für ein Dienstkonto wiederherstellen

Memorystore for Redis verwendet die folgenden Dienstkonten zum Verwalten Ihrer Redis-Instanzen:

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

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

Wenn Sie in diesem Szenario versuchen, eine Redis-Instanz mit gcloud zu erstellen, erhalten Sie 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'

Fehler bei Zeitüberschreitung des Vorgangs

Die folgenden Fehlerszenarien führen zu einer Zeitüberschreitung bei nicht reagierenden Redis-Instanzen und/oder Instanz-/Knotenvorgängen.

Fehler bei der Netzwerkpartitionierung

Manchmal können Google Cloud-Ressourcen aufgrund eines Fehlers bei der Netzwerkpartitionierung auf Google Cloud-Servern nicht zonenübergreifend kommunizieren. Dies kann dazu führen, dass die Instanz die Verbindung verliert, was zu einem Zeitüberschreitungsfehler führt.

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

In diesem Szenario wird möglicherweise eine Fehlermeldung bezüglich der Verbindung angezeigt:

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, die sich nicht im selben VPC Service Control-Perimeter befinden

Wenn Sie eine freigegebene VPC und einen VPC Service Control-Perimeter verwenden und es beim Erstellen der Redis-Instanz zu einer Zeitüberschreitung kommt, kann dies darauf hindeuten, dass sich das Dienstprojekt und das Hostprojekt nicht im selben Dienstperimeter befinden. Das Dienstprojekt und das Hostprojekt müssen sich im selben Perimeter befinden, damit die Redis-Instanz über das freigegebene VPC-Netzwerk mit verbindenden Clients kommunizieren kann.

Prüfen Sie in den Audit-Logs der Redis-Instanz, ob dies der Fall ist:

violationReason: "NETWORK_NOT_IN_SAME_SERVICE_PERIMETER"

Um dieses Problem zu beheben, müssen Sie das Hostnetzwerk und das Dienstnetzwerk im selben Dienstperimeter befinden.

Probleme beim Import und Export beheben

In diesem Abschnitt werden einige häufige Probleme beschrieben, die bei der Verwendung von Import und Export für Memorystore for Redis auftreten können.

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

Problem: Der in der Console 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: Gewähren Sie dem Nutzer die Berechtigungen und aktualisieren Sie die Seite mit den Instanzdetails.

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

Wenn ein Importvorgang abgeschlossen ist, die Daten jedoch nicht wiederhergestellt werden, prüfen Sie zuerst entweder die Cloud Console oder die Befehlszeile auf eine Fehlermeldung und beheben Sie alle in der Fehlermeldung beschriebenen Probleme.

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

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

Wenn Sie die Fehlermeldung Import RDB file gs://bucket/object.rdb size outs max max 10GB“ erhalten, sollten Sie Ihre Instanz hochskalieren und den Import wiederholen. Sie können auch versuchen, eine kleinere RDB-Datei in Ihre Instanz zu importieren.

Probleme mit der Google Cloud-Befehlszeile beheben

Wenn ein Problem auftritt, in dem ein gcloud-Befehlszeilenbefehl nicht verfügbar ist oder sich der Befehl anders als die Vorgehensweise unterscheidet, versuchen Sie, die gcloud-Befehlszeile zu aktualisieren:

gcloud components update

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

Da Memorystore for Redis ein von Google verwaltetes Produkt ist, werden einige Befehle in Ihrer Redis-Instanz blockiert, um eine sichere und zuverlässige Umgebung zu bieten. Einer der eingeschränkten Befehle ist CLIENT, das CLIENT KILL zum Anhalten von Befehlen enthält.

Wenn ein Redis-Befehl viel CPU-/RAM-Auslastung verbraucht und Ihre Produktionsumgebung beeinträchtigt, müssen Sie die Instanz neu starten (bei Basisstufen-Konfigurationen) oder ein Failover auf ein Replikat (für Standardstufen-Konfigurationen) ausführen. Durch diesen Neustart-/Failover-Vorgang werden alle auf dem Redis-Server ausgeführten Befehle beendet und alle laufenden Verbindungen beendet.

Nachfolgend finden Sie Befehle für Neustarts und Failovers für jede Memorystore for Redis-Konfiguration.

Befehle in der Memorystore-Instanz der Standardstufe beenden

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

Befehle in der Memorystore-Stufe der Basis-Stufe anhalten

Die einzige Möglichkeit für einen Neustart in einer Memorystore for Redis-Instanz ist das Ändern der Konfiguration, beispielsweise 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 die Instanz auf eine andere Größe skaliert haben, können Sie einen weiteren Skalierungsvorgang ausführen, um sie wieder auf die ursprüngliche Größe zurückzusetzen.