Cette page décrit les différents scénarios d'erreur, les messages d'erreur associés et la procédure de dépannage pour résoudre les erreurs.
Scénarios d'erreur de connectivité
Si votre instance rencontre des problèmes de connectivité, consultez les scénarios de cette section pour savoir si l'un d'eux est à l'origine du problème.
Si ce n'est pas le cas, connectez telnet à l'un de vos nœuds Redis et exécutez de simples commandes Redis pour vérifier si l'instance répond ou pas.
- Si le nœud ne répond pas, vérifiez si l'un des problèmes décrits dans la procédure de dépannage liée aux scénarios d'erreur réseau bloque la connexion réseau de votre nœud. Si ce n'est pas le cas, contactez l'assistance Google Cloud.
Erreur de connexion provoquée par des ressources provisionnées dans des réseaux VPC différents
Pour vous connecter à une instance Memorystore à partir d'une ressource Google Cloud, telle qu'une VM Compute Engine, les ressources doivent être provisionnées sur le même réseau VPC autorisé que l'instance Redis.
Toute tentative de connexion à une instance Memorystore à partir d'une ressource située dans une région ou un réseau VPC différent entraîne le message d'erreur suivant :
telnet: Unable to connect to remote host: Connection timed out
Erreur de connexion provoquée par un appairage de réseaux VPC supprimé
La création d'une instance Memorystore pour Redis crée un appairage de VPC entre votre réseau VPC et un réseau VPC interne de Google.
L'appairage de réseaux utilise le format suivant :
redis-peer-############
Si cet appairage de réseaux est supprimé, la tentative de connexion Telnet vers l'instance Redis génère le message d'erreur suivant :
telnet: Unable to connect to remote host: Connection timed out
Le moyen le plus simple de rétablir l'appairage de réseaux supprimé consiste à créer une instance Memorystore pour Redis. La création d'une instance Redis rétablit l'appairage de réseaux supprimé, de sorte que vous puissiez la supprimer et que l'instance Redis d'origine dispose de l'appairage de réseaux dont elle a besoin.
Les règles de pare-feu bloquent les adresses IP de votre instance
Des problèmes de connectivité peuvent survenir si vous créez des règles de pare-feu de sortie qui bloquent le port Redis (6379) ou l'adresse IP de l'instance.
Veillez à ne pas créer de règles de pare-feu de réseau susceptibles de bloquer la plage d'adresses IP de vos instances Redis.
Scénarios d'erreur d'utilisation élevée du processeur
Absence de réponse de l'instance Redis en raison d'une mauvaise utilisation des commandes coûteuses de Redis
Si votre instance Redis rencontre des problèmes de latence élevée, d'absence de réponse ou de connectivité, ceux-ci peuvent être dus à une mauvaise utilisation des commandes coûteuses suivantes de Redis :
Ces commandes peuvent entraîner une pression importante du processeur sur l'instance. Le système Open Source Redis déconseille d'exécuter la commande KEYS
dans les environnements de production. Toutefois, vous pouvez utiliser SCAN
, qui est une alternative plus sûre à la commande KEYS
. L'utilisation de LRANGE
pour interroger tout ou partie d'un sous-ensemble de votre espace de clé peut nécessiter des ressources de processeur élevées.
L'association d'un script Lua complexe avec la commande EVAL
peut entraîner une utilisation élevée du processeur.
HGETALL
et ZRANGE
peuvent également renvoyer un très grand nombre de clés, ce qui a un impact négatif sur les performances de votre serveur.
Avant d'exécuter des commandes coûteuses, vous devez vérifier la taille des structures de données que la commande interroge pour vous assurer qu'elle ne provoque pas de latence.
Si votre instance rencontre un problème de latence élevée ou d'absence de réponse, consultez les journaux côté client pour déterminer si une commande coûteuse a été exécutée. Si oui, notez l'heure.
Ensuite, utilisez Cloud Monitoring pour afficher la métrique redis.googleapis.com/stats/cpu_utilization
. Vérifiez si les périodes d'utilisation élevée du processeur coïncident avec les mêmes périodes d'exécution des commandes coûteuses.
Nous vous déconseillons d'exécuter la commande KEYS
dans les environnements de production. Utilisez des scripts Lua moins complexes avec la commande EVAL
. Pour LRANGE
, réduisez le nombre de clés de la collection de clés interrogée dans une seule opération.
Scénarios d'erreur réseau
La plage d'adresses IP allouée est épuisée ou une route en conflit existe.
Lorsque vous créez des ressources dans la plage d'adresses IP dédiée à Memorystore pour Redis, vous pouvez épuiser toutes les adresses, ce qui entraîne l'affichage du message d'erreur ci-dessous. Il se peut également qu'une route soit en conflit avec l'adresse IP de l'instance Redis que vous essayez de créer.
Ces scénarios génèrent le message d'erreur suivant:
The IP ranges for the connection do not have enough available IPs. Allocate a
new range or expand existing range and try again.
Pour résoudre ce problème, vous pouvez attribuer des adresses IP supplémentaires ou supprimer le conflit de route. Pour en savoir plus, consultez la section Épuisement de la plage d'adresses IP.
Aucune connexion d'accès aux services privés n'est établie pour votre réseau.
Si votre instance Redis utilise le mode de connexion d'accès aux services privés et qu'une connexion d'accès aux services privés n'existe pas pour votre réseau, l'erreur suivante peut s'afficher :
Google private service access is not enabled. Enable private service access and
try again
Pour résoudre ce problème, établissez une connexion d'accès aux services privés.
L'appairage de réseaux pour l'accès aux services privés est supprimé
L'établissement d'une connexion d'accès aux services privés crée une connexion d'appairage de réseaux appelée servicenetworking-googleapis-com
, qui apparaît sur la page Appairage de réseaux VPC de votre projet.
La suppression de l'appairage de réseaux entraîne l'affichage de l'erreur suivante pour les instances Redis existantes :
telnet: Unable to connect to remote host: Connection timed out
La suppression de l'appairage de réseaux entraîne l'affichage de l'erreur suivante lors de la création d'une instance Redis :
Private services access is not configured correctly. For steps on how to verify the connection, check the documentation.
Pour résoudre ce problème, suivez la dernière étape des instructions gcloud de la section Établir une connexion d'accès aux services privés.
Options de mise en réseau en conflit lors de la création d'une instance Redis
Si vous utilisez les paramètres --reserved-ip-range
et --connect-mode=private-service-access
, le message d'erreur suivant s'affiche :
Reserved IP range is not supported for --connect-mode private services access
Pour résoudre ce problème, utilisez soit le paramètre --reserved-ip-range
avec --connect-mode=direct-peering
, soit le paramètre --connect-mode=PRIVATE_SERVICE_ACCESS
.
Vous ne pouvez pas utiliser les deux en même temps, car le paramètre --reserved-ip-range
n'est pas compatible avec le mode de connexion d'accès aux services privés.
Dépassement du quota de sous-réseaux pour votre projet
Le nombre de sous-réseaux pouvant être créés dans votre projet est limité. Si vous dépassez ce quota, le message d'erreur suivant s'affiche :
Internal network quota exceeded. Please request higher limit here: https://forms.gle/ZfVduUGq2iSYcYGm8
ou
Unable to create instance. Network quota limit has been reached. Please request higher limit here: https://forms.gle/ZfVduUGq2iSYcYGm8
Pour résoudre ce problème, remplissez le formulaire dans le message d'erreur ou contactez l'assistance Google Cloud.
Projet de service non associé au projet hôte
Si vous utilisez un VPC partagé, votre projet de service n'est pas associé à votre projet hôte si vous recevez l'erreur suivante :
Invalid network name <network-name>. Project <project-name> referenced is not the host project for <service-project-name>.
Pour résoudre ce problème, associez votre projet de service à votre projet hôte.
Utilisation incompatible du mode de connexion par appairage direct et du réseau VPC partagé lors de la création de l'instance
Vous ne pouvez pas créer d'instance Redis dans un projet de service avec le mode de connexion par appairage direct tout en désignant un réseau VPC partagé à partir du projet hôte pour l'instance.
Le mode de connexion est défini par défaut sur direct-peering
si vous ne définissez pas de valeur pour --connection-mode
. Si vous essayez d'utiliser le mode de connexion par appairage direct lors de la création de l'instance et que vous choisissez également un réseau VPC partagé à partir du projet hôte comme valeur pour --network
, l'erreur suivante s'affiche :
Authorized_network must exist in the same project as redis instance
Pour résoudre ce problème, veillez à spécifier le paramètre --connect-mode=PRIVATE_SERVICE_ACCESS
dans votre commande de création d'instance Redis ou à choisir un réseau VPC autorisé dans le même projet que votre instance Redis.
Plages d'adresses IP Compute Engine non compatibles
Vous ne pouvez pas accéder à Memorystore pour Redis à partir de VM Compute Engine dont l'adresse IP est comprise dans la plage 172.17.0.0/16
, car celle-ci est réservée à un composant interne.
Erreurs de connexion à votre instance Redis à partir d'autres ressources Google Cloud
Erreurs lors de la connexion à votre instance depuis des environnements sans serveur nécessitant un connecteur d'accès au VPC sans serveur
Si vous ne parvenez pas à vous connecter à une instance Redis à l'aide de l'un des environnements sans serveur nécessitant un connecteur d'accès au VPC sans serveur , il est possible que vous n'ayez pas configuré de connecteur d'accès au VPC sans serveur pour votre environnement.
Pour en savoir plus, consultez la section Exigences relatives au connecteur d'accès au VPC sans serveur.
Erreurs lors de la connexion à votre instance à l'aide d'un cluster Google Kubernetes Engine
Vous ne pouvez pas vous connecter à une instance Memorystore pour Redis à partir d'un cluster GKE sans activer le VPC natif/les adresses IP d'alias sur votre cluster. Il est plus simple d'activer le VPC natif/les adresses IP d'alias lors de la création du cluster GKE. Lors de la création du cluster, sélectionnez VPC natif sous Options avancées. Pour en savoir plus, consultez la page Créer des clusters de VPC natif.
Scénarios d'erreur Identity and Access Management (IAM)
Restaurer une liaison de stratégie supprimée pour un compte de service
Memorystore pour Redis utilise les comptes de service suivants pour gérer vos instances Redis :
- service-project-number@service-networking.iam.gserviceaccount.com
- service-project-number@cloud-redis.iam.gserviceaccount.com
La suppression des liaisons de stratégie pour ces comptes de service vous empêche de créer des instances.
Si vous essayez de créer une instance Redis à l'aide de gcloud dans ce scénario, le message d'erreur suivant peut s'afficher :
(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.
Pour rétablir la liaison de stratégie pour ces comptes de service, exécutez l'une des commandes suivantes en remplaçant les variables par les valeurs appropriées. Exécutez la commande associée au compte de service supprimé.
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'
Erreurs de délai d'attente d'une opération
Les scénarios d'erreur suivants entraînent une absence de réponse de l'instance Redis et/ou des délais d'attente d'une opération instance/nœud.
Erreur de partition réseau
Parfois, les ressources Google Cloud ne peuvent pas communiquer entre les zones d'une région en raison d'une erreur de partition réseau sur les serveurs Google Cloud. Cela peut entraîner une perte de connexion de l'instance et renvoyer une erreur de délai d'attente.
Une fois que Google Cloud a résolu l'erreur de partition réseau pour la région ou la zone où votre instance est provisionnée, la connectivité doit reprendre normalement.
Dans ce scénario, un message d'erreur de connectivité peut s'afficher :
telnet: Unable to connect to remote host: Connection timed out
Si vous ne parvenez pas à identifier la cause de l'erreur de délai d'attente, contactez l'assistance Google Cloud.
Projet de service et projet hôte ne faisant pas partie du même périmètre de contrôle de service VPC
Si vous utilisez un VPC partagé et un périmètre de contrôle de service VPC, et que votre opération de création d'instance Redis expire, cela peut indiquer que votre projet de service et votre projet hôte ne se trouvent pas dans le même périmètre de service. Votre projet de service et votre projet hôte doivent se trouver dans le même périmètre pour que votre instance Redis puisse communiquer avec les clients se connectant via le réseau VPC partagé.
Pour vérifier la présence de ce problème, consultez les journaux d'audit de votre instance Redis pour rechercher l'erreur suivante :
violationReason: "NETWORK_NOT_IN_SAME_SERVICE_PERIMETER"
Pour résoudre ce problème, placez votre réseau hôte et votre réseau de service dans le même périmètre de service.
Résoudre les problèmes d'importation et d'exportation
Cette section décrit certains problèmes courants que vous pouvez rencontrer lors de l'utilisation de l'importation et de l'exportation pour Memorystore pour Redis.
Les boutons d'importation et d'exportation sont désactivés dans la console Google Cloud.
Problème : l'utilisateur connecté à la console ne dispose pas des autorisations redis.instances.import
et/ou redis.instances.export
requises pour importer et/ou exporter des fichiers RDB.
Solution : accordez les autorisations à l'utilisateur et actualisez la page des détails de l'instance.
L'opération d'importation est terminée, mais les données n'ont pas été restaurées.
Si une opération d'importation se termine, mais que les données ne sont pas restaurées, recherchez d'abord un message d'erreur dans la console Google Cloud ou la ligne de commande, puis résolvez les problèmes décrits par ce message.
En cas d'échec pendant le processus d'importation, l'instance est récupérée à l'aide d'un fichier RDB vide. Vous pouvez essayer de restaurer les données en important à nouveau le même fichier RDB ou en utilisant un autre fichier RDB.
L'importation a échoué, car le fichier RDB était trop volumineux.
Si le message d'erreur "La taille d'un fichier d'importation RDB gs://bucket/object.rdb dépasse la mémoire maximale de 10 Go" s'affiche, vous devez augmenter la taille de votre instance et relancer l'importation. Vous pouvez également essayer d'importer un fichier RDB plus petit dans votre instance.
Résoudre les problèmes liés à Google Cloud CLI
Si vous rencontrez un problème lié à l'indisponibilité d'une commande de gcloud CLI ou à un comportement de la commande différent de celui documenté, essayez de mettre à jour gcloud CLI:
gcloud components update
Arrêter toutes les commandes et connexions en cours pour une instance Redis
Memorystore pour Redis étant un produit géré par Google, certaines commandes sont bloquées dans votre instance Redis afin de fournir un environnement sûr et fiable. L'une des commandes restreintes est CLIENT
, qui inclut CLIENT KILL
, permettant d'arrêter les commandes.
Si une commande Redis consomme une grande utilisation du processeur ou de la RAM et affecte votre environnement de production, vous devez redémarrer l'instance (pour les configurations de niveau de base), ou basculer vers une instance dupliquée (pour les configurations de niveau Standard). Cette opération de redémarrage/basculement interrompt toutes les commandes en cours d'exécution sur le serveur Redis et met fin à toutes les connexions en cours.
Vous trouverez ci-dessous les commandes permettant d'effectuer des redémarrages ou des basculements pour chaque configuration de Memorystore pour Redis.
Arrêter des commandes dans des instances Memorystore pour Redis de niveau standard
gcloud redis instances failover INSTANCE_NAME --data-protection-mode=limited-data-loss
Arrêter des commandes dans des instances Memorystore pour Redis de niveau de base
Le seul moyen d'effectuer un redémarrage d'une instance Memorystore pour Redis consiste à modifier sa configuration, par exemple un scaling à la hausse. Vous trouverez ci-dessous un exemple de commande que vous pouvez exécuter pour redémarrer votre instance.
gcloud redis instances update INSTANCE_NAME --region REGION_ID --size NUMBER_GB
Après avoir mis à l'échelle votre instance à une autre taille, vous pouvez exécuter une autre opération de scaling pour la ramener à la taille d'origine.
Problèmes liés à la règle d'administration de partage restreint au domaine
En fonction de la date de création de votre instance, Memorystore pour Redis utilise l'un des deux formats de compte de service différents. Pour identifier le format de compte de service utilisé par votre instance, consultez la section Format de compte de service Memorystore pour Redis.
Il existe un problème connu où la règle d'organisation iam.allowedPolicyMemberDomains
génère des erreurs lorsqu'elle est utilisée avec des instances Memorystore pour Redis qui utilisent le format de compte de service [PROJECT_NUMBER]-compute@developer.gserviceaccount.com
.
Dans ces cas, vous pouvez rencontrer l'erreur suivante :
One or more users named in the policy do not belong to a permitted customer.
Vous pouvez résoudre ce problème de deux manières.
Option 1
Vous pouvez créer une instance. Les instances nouvellement créées ont le format de compte de service approprié, qui est compatible avec le règlement de l'organisation. Si vous devez absolument conserver le contenu de votre cache, vous pouvez effectuer une sauvegarde des données existantes par export et une importation dans la nouvelle instance. Notez qu'une instance nouvellement créée dispose d'une nouvelle adresse IP de service qui doit être configurée dans votre application.
Option 2
Si vous ne pouvez pas recréer votre instance Memorystore, suivez la procédure de forçage de l'accès au compte.