Augmentation des clusters Redis avec réplicas - Amazon ElastiCache for Redis

Augmentation des clusters Redis avec réplicas

Amazon ElastiCache prend en charge la console, la CLI et l'API pour la mise à l'échelle de votre groupe de réplication Redis (mode cluster désactivé).

Lorsque le processus de mise à l'échelle est lancé, ElastiCache effectue les opérations suivantes :

  1. Il lance un groupe de réplication à l'aide du nouveau type de nœud.

  2. Il copie toutes les données du nœud principal actuel vers le nouveau nœud principal.

  3. Il synchronise les nouveaux réplicas en lecture avec le nouveau nœud principal.

  4. Il met à jour les entrées DNS afin qu'elles pointent vers les nouveaux nœuds. Ainsi, vous n'aurez plus besoin de mettre à jour les points de terminaison de votre application. Pour Redis 5.0.5 ou version ultérieure, vous pouvez mettre à l'échelle les clusters avec basculement automatique activé pendant que le cluster continue de rester en ligne et d'exécuter les demandes entrantes. Sur la version 5.0.4 ou antérieure, vous pouvez remarquer une brève interruption des lectures et des écritures sur les versions précédentes à partir du nœud principal pendant que l'entrée DNS est mise à jour.

  5. Il supprime les anciens nœuds (CLI/API : groupe de réplication). Vous remarquerez une brève interruption (quelques secondes) des lectures et des écritures à partir des anciens nœuds car les connexions aux anciens nœuds seront déconnectées.

La durée de ce processus dépend de votre type de nœud et de la quantité de données dans votre cluster.

Comme illustré dans le tableau suivant, votre opération d'augmentation du cluster Redis est bloquée si une mise à niveau du moteur est prévue au créneau de maintenance suivant du cluster.

Opérations Redis bloquées
Opérations en suspens Opérations bloquées
Mise à l'échelle ascendante Mise à l'échelle ascendante
Mise à niveau du moteur Mise à niveau du moteur
Augmentation et mise à niveau du moteur Mise à niveau du moteur
Mise à l'échelle ascendante

Si vous avez une opération en suspens qui vous bloque, vous pouvez effectuer l'une des actions suivantes.

  • Planifiez votre opération de mise à l'échelle Redis pendant le créneau de maintenance suivant en décochant la case Apply immediately (utilisation de la CLI : --no-apply-immediately, utilisation de l'API : ApplyImmediately=false).

  • Patientez jusqu'au créneau de maintenance suivant (ou après) pour effectuer votre opération de mise à l'échelle Redis.

  • Ajoutez la mise à niveau du moteur Redis à cette modification de cluster de cache en cochant la case Apply Immediately (utilisation de la CLI : --apply-immediately, utilisation de l'API : ApplyImmediately=true). Cela permet de débloquer votre opération de mise à l'échelle en provoquant une mise à jour du moteur à effectuer immédiatement.

Les sections suivantes expliquent comment mettre à l'échelle votre cluster Redis avec réplicas à l'aide de la console ElastiCache, de la AWS CLI ou de l'API ElastiCache.

Important

Si votre groupe de paramètres utilise reserved-memory afin de mettre de côté de la mémoire pour la surcharge Redis, avant de commencer la mise à l'échelle, vous devez veiller à disposer d'un groupe de paramètres personnalisé qui réserve la quantité de mémoire nécessaire à votre nouveau type de nœud. Vous pouvez aussi modifier un groupe de paramètres personnalisé de façon à ce qu'il utilise reserved-memory-percent et vous servir de ce groupe de paramètres pour votre nouveau cluster.

Si vous utilisez reserved-memory-percent, cette opération n'est pas nécessaire.

Pour plus d’informations, consultez Gestion de la mémoire réservée.

La durée nécessaire pour redimensionner la taille d'un type de nœud et passer à un type plus grand, varie selon le type de nœud et la quantité de données dans votre cluster de actuel.

Le processus suivant dimensionne votre cluster avec réplicas en passant du type de nœud actuel vers un nouveau type de nœud plus grand à l'aide de la console ElastiCache. Pendant ce processus, une brève interruption des lectures et des écritures peut avoir lieu pour d'autres versions à partir du nœud primaire pendant que l'entrée DNS est mise à jour. Vous pouvez constater un temps d'arrêt inférieur à une seconde pour les nœuds s'exécutant sur les versions 5.0.5 et de l'ordre de quelques secondes pour les versions plus anciennes.

Pour augmenter un cluster Redis avec réplicas (console)

  1. Connectez-vous à la AWS Management Console et ouvrez la console ElastiCache à l'adresse https://console.aws.amazon.com/elasticache/.

  2. Dans le volet de navigation, choisissez Redis.

  3. Dans la liste des clusters, choisissez le cluster que vous souhaitez augmenter. Ce cluster doit exécuter le moteur Redis et non le moteur Clustered Redis.

  4. Sélectionnez Modify (Modifier).

  5. Dans l'assistant Modifier le cluster :

    1. Choisissez le type de nœud auquel vous souhaitez passer dans la liste Type de nœud. Notez que tous les types de nœuds ne sont pas disponibles pour la réduction de la capacité.

    2. Si vous utilisez reserved-memory pour gérer la mémoire, dans la liste Groupe de paramètres, choisissez le groupe de paramètres personnalisé qui réserve la quantité de mémoire nécessaire à votre nouveau type de nœud.

  6. Si vous souhaitez effectuer un processus de mise à l'échelle immédiatement, choisissez la case Apply immediately. Si la case Apply immediately est décochée, le processus de mise à l'échelle est effectué lors du créneau de maintenance suivant du cluster.

  7. Sélectionnez Modify (Modifier).

  8. Lorsque le statut du cluster passe de modifying à available, cela signifie que votre cluster est passé au nouveau type de nœud. Il n'est pas nécessaire de mettre à jour les points de terminaison dans votre application.

Le processus suivant met à l'échelle votre groupe de réplication à partir de son type de nœud actuel vers un nouveau type de nœud plus grand à l'aide de l' AWS CLI. Au cours de ce processus, ElastiCache for Redis met à jour les entrées DNS afin qu'elles pointent vers les nouveaux nœuds. Ainsi, vous n'aurez plus besoin de mettre à jour les points de terminaison de votre application. Pour Redis 5.0.5 ou version ultérieure, vous pouvez mettre à l'échelle les clusters avec basculement automatique activé pendant que le cluster continue de rester en ligne et d'exécuter les demandes entrantes. Sur la version 5.0.4 ou antérieure, vous pouvez remarquer une brève interruption des lectures et des écritures sur les versions précédentes à partir du nœud primaire pendant que l'entrée DNS est mise à jour.

La durée nécessaire pour remettre à l'échelle la taille d'un type de nœud et passer à un type plus grand, varie selon le type de nœud et la quantité de données dans votre cluster de actuel.

Pour augmenter un groupe de réplication Redis (AWS CLI)

  1. Déterminez les types de nœud que vous voulez augmenter en exécutant la commande AWS CLI de l'list-allowed-node-type-modifications avec le paramètre suivant.

    • --replication-group-id – Le nom du groupe de réplication. Utilisez ce paramètre pour décrire un groupe de réplication particulier plutôt que tous les groupes de réplication.

    Pour Linux, macOS ou Unix :

    aws elasticache list-allowed-node-type-modifications \ --replication-group-id my-repl-group

    Pour Windows :

    aws elasticache list-allowed-node-type-modifications ^ --replication-group-id my-repl-group

    Le résultat de cette opération doit ressembler à ce qui suit (format JSON).

    { "ScaleUpModifications": [ "cache.m3.2xlarge", "cache.m3.large", "cache.m3.xlarge", "cache.m4.10xlarge", "cache.m4.2xlarge", "cache.m4.4xlarge", "cache.m4.large", "cache.m4.xlarge", "cache.r3.2xlarge", "cache.r3.4xlarge", "cache.r3.8xlarge", "cache.r3.large", "cache.r3.xlarge" ] }

    Pour plus d'informations, consultez list-allowed-node-type-modifications dans la référence AWS CLI.

  2. Dimensionnez votre groupe de réplication actuel vers le nouveau type de nœud à l'aide de la commande AWS CLI de l'modify-replication-group avec les paramètres suivants.

    • --replication-group-id – Le nom du groupe de réplication.

    • --cache-node-type – Le nouveau type de nœud plus grand des clusters de cache dans ce groupe de réplication. Cette valeur doit correspondre à l'un des types d'instance renvoyés par la commande list-allowed-node-type-modifications lors de l'étape 1.

    • --cache-parameter-group-name – [Facultatif] Utilisez ce paramètre si vous avez recours à reserved-memory pour gérer la mémoire réservée de votre cluster. Spécifiez un groupe de paramètres de cache personnalisé qui réserve la quantité de mémoire nécessaire à votre nouveau type de nœud. Si vous utilisez reserved-memory-percent, vous pouvez omettre ce paramètre.

    • --apply-immediately – Ce paramètre entraîne l'application immédiate du processus d'augmentation. Pour reporter l'opération de mise à l'échelle au créneau de maintenance suivant, utilisez --no-apply-immediately.

    Pour Linux, macOS ou Unix :

    aws elasticache modify-replication-group \ --replication-group-id my-repl-group \ --cache-node-type cache.m3.xlarge \ --cache-parameter-group-name redis32-m3-2xl \ --apply-immediately

    Pour Windows :

    aws elasticache modify-replication-group ^ --replication-group-id my-repl-group ^ --cache-node-type cache.m3.xlarge ^ --cache-parameter-group-name redis32-m3-2xl \ --apply-immediately

    Le résultat de cette commande doit ressembler à ce qui suit (format JSON).

    { "ReplicationGroup": { "Status": "available", "Description": "Some description", "NodeGroups": [{ "Status": "available", "NodeGroupMembers": [{ "CurrentRole": "primary", "PreferredAvailabilityZone": "us-west-2b", "CacheNodeId": "0001", "ReadEndpoint": { "Port": 6379, "Address": "my-repl-group-001.8fdx4s.0001.usw2.cache.amazonaws.com" }, "CacheClusterId": "my-repl-group-001" }, { "CurrentRole": "replica", "PreferredAvailabilityZone": "us-west-2c", "CacheNodeId": "0001", "ReadEndpoint": { "Port": 6379, "Address": "my-repl-group-002.8fdx4s.0001.usw2.cache.amazonaws.com" }, "CacheClusterId": "my-repl-group-002" } ], "NodeGroupId": "0001", "PrimaryEndpoint": { "Port": 6379, "Address": "my-repl-group.8fdx4s.ng.0001.usw2.cache.amazonaws.com" } }], "ReplicationGroupId": "my-repl-group", "SnapshotRetentionLimit": 1, "AutomaticFailover": "disabled", "SnapshotWindow": "12:00-13:00", "SnapshottingClusterId": "my-repl-group-002", "MemberClusters": [ "my-repl-group-001", "my-repl-group-002" ], "PendingModifiedValues": {} } }

    Pour plus d'informations, consultez modify-replication-group dans la référence AWS CLI.

  3. Si vous avez utilisé le paramètre --apply-immediately, surveillez l'état du groupe de réplication à l'aide de la commande AWS CLI de l'describe-replication-group avec le paramètre suivant. Pendant que le statut est encore modification en cours, vous pouvez constater un temps d'arrêt inférieur à 1 seconde pour les nœuds s'exécutant sur les versions 5.0.5, et une brève interruption des lectures et des écritures pour les versions plus anciennes à partir du nœud primaire pendant que l'entrée DNS est mise à jour.

    • --replication-group-id – Le nom du groupe de réplication. Utilisez ce paramètre pour décrire un groupe de réplication particulier plutôt que tous les groupes de réplication.

    Pour Linux, macOS ou Unix :

    aws elasticache describe-replication-groups \ --replication-group-id my-replication-group

    Pour Windows :

    aws elasticache describe-replication-groups ^ --replication-group-id my-replication-group

    Pour plus d'informations, consultez describe-replication-groups dans la Référence de l'AWS CLI.

Le processus suivant dimensionne votre groupe de réplication à partir de son type de nœud actuel vers un nouveau type de nœud plus grand à l'aide de l'API ElastiCache. Pour Redis 5.0.5 ou version ultérieure, vous pouvez mettre à l'échelle les clusters avec basculement automatique activé pendant que le cluster continue de rester en ligne et d'exécuter les demandes entrantes. Sur la version 5.0.4 ou antérieure, vous pouvez remarquer une brève interruption des lectures et des écritures sur les versions précédentes à partir du nœud principal pendant que l'entrée DNS est mise à jour.

La durée nécessaire pour remettre à l'échelle la taille d'un type de nœud et passer à un type plus grand, varie selon le type de nœud et la quantité de données dans votre cluster de actuel.

Pour augmenter un groupe de réplication Redis (API ElastiCache)

  1. Déterminez les types de nœud que vous voulez augmenter à l'aide de l'action ListAllowedNodeTypeModifications de l'API ElastiCache avec le paramètre suivant.

    • ReplicationGroupId – Le nom du groupe de réplication. Utilisez ce paramètre pour décrire un groupe de réplication spécifique plutôt que tous les groupes de réplication.

    https://elasticache.us-west-2.amazonaws.com/ ?Action=ListAllowedNodeTypeModifications &ReplicationGroupId=MyReplGroup &Version=2015-02-02 &SignatureVersion=4 &SignatureMethod=HmacSHA256 &Timestamp=20150202T192317Z &X-Amz-Credential=<credential>

    Pour plus d'informations, voir ListAllowedNodeTypeModifications dans la référence d’API Amazon ElastiCache.

  2. Dimensionnez votre groupe de réplication actuel vers le nouveau type de nœud à l'aide de l'action ModifyRedplicationGroup de l'API ElastiCache et des paramètres suivants.

    • ReplicationGroupId – Le nom du groupe de réplication.

    • CacheNodeType – Le nouveau type de nœud plus grand des clusters de cache dans ce groupe de réplication. Cette valeur doit correspondre à l'un des types d'instance renvoyés par l'action ListAllowedNodeTypeModifications lors de l'étape 1.

    • CacheParameterGroupName – [Facultatif] Utilisez ce paramètre si vous avez recours à reserved-memory pour gérer la mémoire réservée de votre cluster. Spécifiez un groupe de paramètres de cache personnalisé qui réserve la quantité de mémoire nécessaire à votre nouveau type de nœud. Si vous utilisez reserved-memory-percent, vous pouvez omettre ce paramètre.

    • ApplyImmediately – Lorsqu'il est défini sur true, il entraîne l'application immédiate du processus d'augmentation. Pour reporter le processus de mise à l'échelle au créneau de maintenance suivant, utilisez ApplyImmediately=false.

    https://elasticache.us-west-2.amazonaws.com/ ?Action=ModifyReplicationGroup &ApplyImmediately=true &CacheNodeType=cache.m3.2xlarge &CacheParameterGroupName=redis32-m3-2xl &ReplicationGroupId=myReplGroup &SignatureVersion=4 &SignatureMethod=HmacSHA256 &Timestamp=20141201T220302Z &Version=2014-12-01 &X-Amz-Algorithm=&AWS;4-HMAC-SHA256 &X-Amz-Date=20141201T220302Z &X-Amz-SignedHeaders=Host &X-Amz-Expires=20141201T220302Z &X-Amz-Credential=<credential> &X-Amz-Signature=<signature>

    Pour plus d'informations, voir ModifyReplicationGroup dans la référence d’API Amazon ElastiCache.

  3. Si vous avez utilisé le paramètre ApplyImmediately=true, surveillez l'état du groupe de réplication à l'aide de l'action DescribeReplicationGroups de l'API ElastiCache avec les paramètres suivants. Lorsque le statut passe de modifying à available, cela signifie que vous pouvez commencer à écrire sur votre nouveau groupe de réplication redimensionné.

    • ReplicationGroupId – Le nom du groupe de réplication. Utilisez ce paramètre pour décrire un groupe de réplication particulier plutôt que tous les groupes de réplication.

    https://elasticache.us-west-2.amazonaws.com/ ?Action=DescribeReplicationGroups &ReplicationGroupId=MyReplGroup &Version=2015-02-02 &SignatureVersion=4 &SignatureMethod=HmacSHA256 &Timestamp=20150202T192317Z &X-Amz-Credential=<credential>

    Pour plus d'informations, voir DescribeReplicationGroups dans la référence d’API Amazon ElastiCache.