Cette page décrit les différents problèmes, les messages d'erreur associés et la procédure de dépannage pour résoudre les erreurs.
Problèmes de connectivité
Si votre instance Memorystore pour Redis rencontre des problèmes de connectivité, consultez les problèmes de cette section pour savoir si l'un d'eux est à l'origine du problème.
Si aucun problème de cette section ne correspond au vôtre, connectez telnet à l'un de vos nœuds Redis et exécutez des commandes Redis pour vérifier si l'instance répond.
Si le nœud ne répond pas, vérifiez si l'un des problèmes réseau bloque la connexion réseau de votre nœud. Si aucun de ces problèmes ne résout le problème, contactez l'assistance Cloud Customer Care.
Vous provisionnez des ressources dans différents réseaux VPC.
Pour vous connecter à une instance Memorystore pour Redis à partir d'une ressource Google Cloud , telle qu'une VM Compute Engine, vous devez provisionner les ressources sur le même réseau VPC autorisé que l'instance.
Toute tentative de connexion Telnet à une instance à 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
Vous supprimez un appairage de réseaux VPC.
Lorsque vous créez une instance Memorystore pour Redis, vous créez 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 génère le message d'erreur suivant :
telnet: Unable to connect to remote host: Connection timed out
Pour rétablir l'appairage de réseaux supprimé, créez une autre instance. Supprimez ensuite cette instance. Votre instance d'origine dispose désormais de l'appairage de réseau dont elle a besoin.
Vous créez des règles de pare-feu qui bloquent les adresses IP de votre instance.
Si vous créez des règles de pare-feu de sortie qui bloquent le port (6379) ou l'adresse IP de votre instance Memorystore pour Redis, vous risquez de rencontrer des problèmes de connectivité. Ne créez pas de règles de pare-feu réseau qui bloquent la plage d'adresses IP de votre instance.
Problèmes d'utilisation du processeur
Cette section explique les problèmes d'utilisation du processeur que votre instance Memorystore pour Redis peut rencontrer.
Votre instance rencontre un problème de latence élevée ou ne répond pas.
Si votre instance Memorystore pour Redis présente une latence élevée ou ne répond pas, cela peut être dû à l'utilisation des commandes Redis gourmandes en ressources suivantes :
Ces commandes peuvent entraîner une pression importante du processeur sur l'instance. Nous vous recommandons de ne pas exécuter la commande KEYS dans les environnements de production. Utilisez plutôt SCAN, car cette commande utilise moins de ressources que 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. Pour résoudre ce problème, nous vous recommandons de réduire le nombre de clés de la collection de clés que vous interrogez dans une seule opération.
L'association d'un script Lua complexe avec la commande EVAL peut également entraîner une utilisation élevée du processeur. Nous vous recommandons d'utiliser des scripts Lua moins complexes.
HGETALL et ZRANGE peuvent renvoyer un grand nombre de clés, ce qui nuit aux performances de votre serveur. Au lieu de HGETALL, nous vous recommandons d'exécuter la commande HSCAN. De plus, avant d'utiliser ZRANGE, nous vous recommandons de limiter la taille de la plage que vous utilisez pour une requête.
Avant d'exécuter une commande gourmande en ressources, vérifiez la taille des structures de données interrogées par la commande pour vous assurer qu'elle n'entraîne pas de latence.
Si votre instance rencontre un problème de latence élevée ou d'absence de réponse, procédez comme suit :
- Consultez vos journaux côté client pour déterminer si des commandes gourmandes en ressources ont été exécutées. Si c'est le cas, notez la date et l'heure.
- 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 gourmandes en ressources.
L'espace du tampon de sortie de votre instance est insuffisant.
Si le tampon de sortie de votre instance Memorystore pour Redis manque d'espace, procédez comme suit :
- Définissez une valeur plus petite pour le paramètre
maxmemory-gb. - Utilisez la règle
maxmemoryallkeys-lru.
Si la mémoire de votre instance est saturée et qu'une nouvelle écriture arrive, Memorystore pour Redis évince les clés afin de libérer de l'espace pour l'écriture, en fonction de la règle maxmemory de votre instance. La règle allkeys-lru supprime les clés les moins récemment utilisées (LRU, least recently used) de la collection de clés.
Nous vous recommandons de surveiller la maxmemory et la mémoire utilisée de votre instance. Cela vous permet de savoir si votre instance atteint la capacité d'instance provisionnée.
De plus, en réduisant la valeur du paramètre maxmemory-gb, vous obtenez plus d'espace pour les frais généraux.
Problèmes de Mise en réseau
Cette section explique les problèmes de mise en réseau que votre instance peut rencontrer.
Vous épuisez la plage d'adresses IP alloué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 risquez d'épuiser toutes les adresses IP. Il peut également exister un itinéraire en conflit avec l'adresse IP de l'instance Memorystore pour Redis que vous essayez de créer.
Ces problèmes entraînent l'affichage du 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, allouez des adresses IP supplémentaires ou supprimez la différence de conflit de route. Pour plus d'informations, 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 Memorystore pour Redis utilise le mode de connexion d'accès aux services privés, mais qu'une connexion d'accès aux services privés n'existe pas pour votre réseau, le message d'erreur suivant 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.
Vous supprimez l'appairage de réseaux pour la connexion d'accès aux services privés.
Lorsque vous établissez une connexion d'accès aux services privés, Memorystore pour Redis crée une connexion d'appairage de réseau appelée servicenetworking-googleapis-com. Cette connexion apparaît sur la page Appairage de réseaux VPC de votre projet.
Si vous supprimez l'appairage de réseaux, le message d'erreur suivant s'affiche pour les instances existantes :
telnet: Unable to connect to remote host: Connection timed out
De plus, si vous supprimez l'appairage de réseaux et que vous créez une instance, le message d'erreur suivant s'affiche :
Private services access is not configured correctly. For steps on how to
verify the connection, check the documentation.
Pour résoudre ce problème, créez une connexion d'accès aux services privés entre votre réseau et le réseau d'accès aux services privés en exécutant la commande suivante :
gcloud services vpc-peerings connect --service=servicenetworking.googleapis.com --ranges=RESERVED_RANGE_NAME --network=VPC_NETWORK --project=PROJECT_ID
Vous utilisez des paramètres incompatibles.
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
Vous ne pouvez pas utiliser les deux paramètres en même temps, car Memorystore pour Redis n'est pas compatible avec le paramètre --reserved-ip-range pour le mode de connexion d'accès aux services privés.
Pour résoudre ce problème, effectuez l'une des opérations suivantes :
- Utilisez le paramètre
--reserved-ip-rangeavec le paramètre--connect-mode=direct-peering. - N'utilisez pas le paramètre
--reserved-ip-range.
Vous dépassez le quota de sous-réseaux pour votre projet.
Le nombre de sous-réseaux que vous pouvez créer dans votre projetGoogle Cloud est limité. Si vous dépassez ce quota, l'un des messages d'erreur suivants 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 qui s'affiche dans les messages d'erreur ou contactez Cloud Customer Care.
Vous n'associez pas votre projet de service à votre projet hôte.
Si vous utilisez un VPC partagé et que vous n'associez pas votre projet de service à votre projet hôte, le message d'erreur suivant s'affiche :
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.
Vous créez une instance dans un projet de service avec le mode de connexion par appairage direct et désignez un réseau VPC partagé.
Si vous créez une instance Memorystore pour Redis dans un projet de service et que vous désignez un réseau VPC partagé à partir du projet hôte pour l'instance, vous ne pouvez pas utiliser le mode de connexion par appairage direct.
Par défaut, le mode de connexion est défini sur l'appairage direct. Si vous essayez d'utiliser ce mode de connexion lorsque vous créez une instance et que vous choisissez également un réseau VPC partagé à partir du projet hôte comme valeur pour le paramètre --network, le message d'erreur suivant s'affiche :
Authorized_network must exist in the same project as redis instance
Pour résoudre ce problème, effectuez l'une des opérations suivantes :
- Lorsque vous créez votre instance, utilisez le mode de connexion d'accès privé aux services
(--connect-mode=private-service-access). - Choisissez un réseau VPC autorisé qui se trouve dans le même projet que votre instance.
Vous utilisez une plage d'adresses IP pour Compute Engine à laquelle Memorystore pour Redis ne peut pas accéder.
Vous ne pouvez pas accéder à votre instance Memorystore pour Redis à partir d'une VM Compute Engine dont l'adresse IP se trouve dans la plage 172.17.0.0/16.
Cette plage est réservée à un composant interne.
Pour résoudre ce problème, accédez à votre instance à partir d'une VM Compute Engine dont l'adresse IP se trouve dans une autre plage.
Problèmes de connexion à votre instance à partir d'autres ressources Google Cloud
Cette section décrit les problèmes que votre instance Memorystore pour Redis peut rencontrer lorsque d'autres ressources tentent de s'y connecter.
Vous ne pouvez pas vous connecter à 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 à votre instance Memorystore pour Redis à l'aide de l'un des environnements sans serveur nécessitant un connecteur d'accès au VPC sans serveur, vérifiez si vous avez configuré ce connecteur pour votre environnement. Pour en savoir plus, consultez la section Exigences relatives au connecteur d'accès au VPC sans serveur.
Vous ne pouvez pas vous connecter à votre instance à partir d'un cluster Google Kubernetes Engine (GKE)
Pour vous connecter à votre instance Memorystore pour Redis à partir d'un cluster GKE, vous devez activer le VPC natif/les adresses IP d'alias sur le cluster.
Il est plus simple d'activer le VPC natif/les adresses IP d'alias lors de la création du cluster. Dans la section des options avancées, sélectionnez VPC natif. Pour en savoir plus, consultez Créer un cluster de VPC natif.
Problèmes liés Identity and Access Management (IAM)
Cette section décrit les problèmes IAM que votre instance Memorystore pour Redis peut rencontrer.
Vous souhaitez 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 :
service-PROJECT_NUMBER@service-networking.iam.gserviceaccount.comservice-PROJECT_NUMBER@cloud-redis.iam.gserviceaccount.com
Si vous supprimez les liaisons de stratégie pour ces comptes de service, vous ne pourrez pas créer d'instances.
Si vous essayez de créer une instance Memorystore pour Redis à l'aide de Google Cloud CLI, 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 l'association de stratégie pour le compte de service service-networking, exécutez la commande suivante. Remplacez VARIABLES par les valeurs appropriées.
gcloud projects add-iam-policy-binding PROJECT_ID --member='serviceAccount:service-PROJECT_NUMBER@service-networking.iam.gserviceaccount.com' --role='roles/servicenetworking.serviceAgent'
Pour rétablir la liaison de stratégie pour le compte de service cloud-redis, exécutez la commande suivante. Remplacez VARIABLES par les valeurs appropriées.
gcloud projects add-iam-policy-binding PROJECT_ID --member='serviceAccount:service-PROJECT_NUMBER@cloud-redis.iam.gserviceaccount.com' --role='roles/redis.serviceAgent'
Problèmes de délai avant expiration de l'opération
Les problèmes 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.
Problèmes 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 cas, 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'assistanceGoogle 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 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
Selon la date de création de votre instance, Memorystore pour Redis utilise l'un des deux formats de compte de service. Pour identifier le format de compte de service utilisé par votre instance, consultez Format de compte de service Memorystore pour Redis.
Il existe un problème connu : la règle d'administration 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.
Deux options s'offrent à vous pour résoudre ce problème.
- Créez une instance : les instances nouvellement créées ont le format de compte de service approprié, compatible avec le règlement de l'organisation. Si vous devez absolument conserver le contenu de votre cache, vous pouvez effectuer une exportation pour sauvegarder les données existantes et une importation vers la nouvelle instance. Une instance nouvellement créée possède une nouvelle adresse IP de service qui doit être configurée dans votre application.
- Forcer l'accès au compte : n'utilisez cette option que s'il est impossible de recréer votre instance.