Dépannage

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.

Erreur de connexion provoquée par des ressources provisionnées dans des régions ou 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 dans la même région et dans le même réseau VPC.

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

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.

Memorystore pour Memcached nécessite d'utiliser une connexion d'accès aux services privés et une plage d'adresses IP associée pour cette connexion. Les adresses IP disponibles dans cette plage associées à des instances Redis et à d'autres ressources Google Cloud peuvent être épuisées.

Dans ce cas, la création d'une instance renvoie 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. 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

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 --authorized-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 standard 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 GCP

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. com.google.apps.framework.request.StatusException: <eye3 title='FAILED_PRECONDITION'/> generic::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 Cloud Console.

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 Cloud Console 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 à l'outil de ligne de commande gcloud

Si vous rencontrez un problème lié à l'indisponibilité d'une commande de l'outil gcloud ou à un comportement de la commande différent de celui documenté, essayez de mettre à jour le SDK gcloud :

gcloud components update