À propos du scaling de la capacité des clusters

Cette page décrit le comportement de votre cluster dans Memorystore pour Redis Cluster lors du scaling.

Vous pouvez faire évoluer la capacité de votre cluster de différentes manières :

  • Vous pouvez modifier le nombre de segments de votre cluster. C'est ce qu'on appelle le scaling horizontal. Vous pouvez effectuer un scaling horizontal d'un cluster de l'une des manières suivantes :

    • Effectuer un scaling horizontal : augmentez la capacité de votre cluster, ce qui lui donne plus de mémoire et de puissance de traitement pour gérer un volume de données ou de trafic plus important. La capacité de votre cluster est déterminée par le nombre de segments qu'il contient.

      En effectuant un scaling horizontal de votre cluster, votre application peut gérer une demande accrue sans dégradation des performances. Pour effectuer un scaling horizontal d'un cluster, ajoutez-y des segments.

    • Scale-in : réduisez la capacité de votre cluster, ce qui diminue à la fois la puissance de traitement et la quantité de mémoire disponible pour stocker les données. Cela se produit lorsque les demandes de données de votre application diminuent et que vous devez réduire l'utilisation des ressources pour réduire les coûts. Pour effectuer un scaling à la baisse d'un cluster, réduisez le nombre de segments dans le cluster.

  • Vous pouvez modifier le type de nœud de votre cluster. C'est ce qu'on appelle le scaling vertical. Vous pouvez effectuer un scaling vertical d'un cluster de l'une des manières suivantes :

    • Scaling à la hausse : augmentez la capacité de votre cluster. La capacité de votre cluster est déterminée par son type de nœud. Pour effectuer un scaling à la hausse d'un cluster, remplacez le type de nœud par un type de nœud plus grand. Par exemple, effectuez un scaling à la hausse de votre cluster en passant d'un type de nœud redis-standard-small à un type de nœud redis-highmem-medium.
    • Réduire la capacité : réduisez la capacité de votre cluster. Pour réduire un cluster, remplacez le type de nœud par un type de nœud plus petit. Par exemple, réduisez votre cluster d'un type de nœud redis-highmem-medium à un type de nœud redis-standard-small.

Impact du scaling

Lors d'une opération de scaling, la disponibilité de votre cluster n'est pas affectée. Toutefois, lorsque vous modifiez le nombre de segments dans votre cluster, Memorystore pour Redis Cluster rééquilibre l'espace de clés du cluster. Cela peut entraîner une augmentation de la latence pendant l'opération de scaling.

De plus, l'impact du scaling vertical de votre cluster en modifiant le type de nœud est semblable à ce qui se passe lors d'une opération de maintenance.

Scénarios d'échec

Si vous rencontrez une erreur lors de l'opération de scaling, cela est probablement dû à l'un des scénarios suivants :

  • Vous souhaitez mettre à jour le nombre de segments de votre cluster, mais vous ne disposez pas de suffisamment de mémoire disponible pour le type de nœud redis-shared-core-nano de votre cluster.

    Pour résoudre ce problème, vous pouvez effectuer un scaling à la hausse de votre cluster ou libérer de la mémoire sur les nœuds de votre cluster. Pour libérer de la mémoire, procédez comme suit :

    1. Connectez-vous à un cluster.
    2. Pour obtenir des détails sur le cluster, y compris l'adresse IP et le numéro de port, utilisez la commande gcloud redis clusters describe.
    3. Notez l'adresse IP et le numéro de port du cluster.
    4. Pour obtenir des informations sur les nœuds du cluster, utilisez la commande suivante :

      redis-cli -h IP_ADDRESS -p PORT_NUMBER cluster nodes
      

      Remplacez IP_ADDRESS et PORT_NUMBER par les valeurs que vous avez notées à l'étape précédente.

    5. Notez l'adresse IP et le numéro de port d'un nœud qui ne dispose pas de suffisamment d'espace libre. L'ID de ce nœud correspond à un ID qui apparaît dans l'erreur.

    6. Pour vous connecter à ce nœud, utilisez la commande suivante :

      redis-cli -h IP_ADDRESS -p PORT_NUMBER
      

      Remplacez IP_ADDRESS et PORT_NUMBER par les valeurs que vous avez notées à l'étape précédente.

    7. À l'invite, saisissez la commande info memory.

      Dans le résultat, les valeurs des paramètres used_memory et maxmemory s'affichent. used_memory correspond à la quantité de mémoire utilisée par le nœud et maxmemory à la quantité de mémoire disponible pour le nœud.

    8. Divisez la valeur du paramètre used_memory par celle du paramètre maxmemory, puis vérifiez que le quotient est supérieur à 98%.

    9. Pour libérer de l'espace pour le nœud, supprimez certaines de ses clés.

    10. Saisissez à nouveau la commande info memory. Dans le résultat, la valeur du paramètre used_memory est plus petite.

    11. Divisez la valeur du paramètre used_memory par la valeur du paramètre maxmemory, puis vérifiez que le quotient est désormais inférieur à 98%. Si ce n'est pas le cas, supprimez d'autres clés.

    12. Pour tous les autres nœuds qui ne disposent pas de suffisamment d'espace libre, répétez les étapes 4 à 11 de cette procédure.

  • Vous avez réduit le nombre de segments, et la capacité n'est pas suffisante pour contenir toutes les clés que Memorystore pour Redis Cluster stocke dans le cluster d'origine. Pour résoudre ce problème, effectuez un scaling vers un nombre de segments plus élevé pouvant contenir toutes les clés stockées. Pour en savoir plus sur l'augmentation du nombre de segments de votre cluster, consultez Effectuer un scaling du nombre de segments.

  • Vous avez réduit la capacité à un type de nœud plus petit qui ne peut pas contenir toutes les données que Memorystore pour Redis Cluster stocke dans le type de nœud d'origine. Dans ce cas, Memorystore for Redis Cluster vous recommande un type de nœud pour réduire la capacité verticalement.

  • Vous avez mis à jour le type de nœud de votre cluster et vous avez écrasé les paramètres par défaut du type de nœud d'origine, ou ces paramètres ont déjà été écrasés. Toutefois, le nouveau type de nœud mis à l'échelle n'est pas compatible avec les valeurs des paramètres par défaut, ou les paramètres ne sont pas valides pour le type de nœud. Dans ce cas, Memorystore pour Redis Cluster renvoie une erreur. Pour résoudre ce problème, modifiez manuellement les paramètres afin qu'ils soient valides pour le nouveau type de nœud.

  • Vous avez mis à l'échelle votre cluster pendant une période de forte pression d'écriture (par exemple, lors d'un test de charge). Pour résoudre ce problème, effectuez le scaling pendant les périodes de faible trafic du cluster.

  • Vous disposez d'un emplacement contenant une clé volumineuse et vous souhaitez migrer cette clé vers un autre nœud. Cependant, ce nœud ne dispose pas de suffisamment de mémoire pour accepter la clé. Vous ne pouvez pas mettre à jour votre cluster. Pour résoudre ce problème, réduisez la taille de la clé pour qu'elle soit inférieure à 128 Mo. Réessayez ensuite d'effectuer la mise à jour.

  • Le numéro d'emplacement d'un nœud d'un cluster n'est pas connu, mais seule la plage d'emplacements est connue. Memorystore pour Redis Cluster renvoie un message d'erreur. Si cela se produit, réduisez la taille de la clé et relancez l'opération de mise à jour.

  • Vous avez augmenté la capacité de votre cluster en effectuant un scaling horizontal vers un nombre de segments plus faible. Cependant, Memorystore pour Redis Cluster ne dispose pas de suffisamment de mémoire pour répondre à cette requête. Pour résoudre ce problème, réduisez la capacité de votre cluster en effectuant un scaling horizontal pour revenir au nombre de segments d'origine, plus élevé.

Bonnes pratiques

Pour vous aider à adapter la capacité de votre cluster, nous vous recommandons de suivre les bonnes pratiques suivantes :

  • Choisissez le moment où vous souhaitez effectuer le scaling : pour augmenter la vitesse et la fiabilité du scaling de votre cluster, effectuez-le pendant les périodes de faible trafic. Pour savoir comment surveiller le trafic des clusters, consultez Surveiller les clusters.
  • Réessayez lorsque vous ne pouvez pas effectuer de scaling : la disponibilité des ressources change fréquemment. Si vous ne pouvez pas effectuer le scaling de votre cluster en raison d'une contrainte de ressources temporaire, essayez de le faire plus tard.