En utilisant AWS re:Post, vous acceptez les AWS re:Post Conditions d’utilisation

Comment puis-je déplacer une instance Amazon RDS hors d'une zone de disponibilité ?

Lecture de 7 minute(s)
0

Je souhaite déplacer une instance Amazon Relational Database Service (Amazon RDS) ou Amazon Aurora hors d'une zone de disponibilité. Je souhaite également supprimer le sous-réseau qui se trouve dans un groupe de sous-réseaux de base de données Amazon RDS.

Brève description

Pour lancer une instance de base de données Amazon RDS, un groupe de sous-réseaux de base de données doit contenir au moins deux sous-réseaux. Vous pouvez lancer des instances RDS uniquement dans les sous-réseaux du groupe de sous-réseaux de base de données associé. Les sous-réseaux doivent se trouver dans différentes zones de disponibilité de la même région AWS. Pour minimiser les perturbations, il est recommandé de disposer de sous-réseaux provenant d'au moins trois zones de disponibilité.

Résolution

Remarque : Si des erreurs surviennent lorsque vous exécutez des commandes de l’interface de la ligne de commande AWS (AWS CLI), consultez la section Résoudre les erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l’AWS CLI.

Déterminer la zone de disponibilité

ID de zone de disponibilité

Utilisez les ID de zone de disponibilité pour déterminer l'emplacement des ressources d’un compte AWS par rapport aux ressources d'un autre compte. Par exemple, vous avez des instances Amazon Elastic Compute Cloud (Amazon EC2) qui s'exécutent sur un compte situé dans use1-az2. Ces instances EC2 communiquent avec les bases de données RDS qui s'exécutent dans un compte use1-az3. Pour éviter les coûts supplémentaires et la latence engendrés par le trafic cross-AZ, exécutez les deux instances dans la même zone de disponibilité. Pour réduire les temps d'arrêt en cas de panne, utilisez un déploiement multi-AZ.

Pour vérifier les mappages des zones de disponibilité de votre compte et obtenir les noms de vos zones de disponibilité, exécutez la commande describe-availability-zones :

aws ec2 describe-availability-zones --zone-ids ZONE ID --region REGION

Remarque : Remplacez ZONE ID par l'ID de votre zone de disponibilité et REGION par votre région.

Identifier l'instance RDS que vous souhaitez déplacer

Pour identifier l'instance RDS que vous souhaitez déplacer, utilisez le nom de la zone de disponibilité dans AWS Config ou exécutez des commandes de liste dans l'AWS CLI.

AWS Config

Activez AWS Config. Puis, exécutez la commande suivante pour renvoyer la liste des instances de base de données qui s'exécutent ou possèdent un nœud secondaire dans la zone de disponibilité :

SELECT
  resourceId,
  resourceName,
  accountId,
  awsRegion,
  configuration.availabilityZone,
  configuration.secondaryAvailabilityZone
WHERE
  resourceType = 'AWS::RDS::DBInstance'
  AND (
    configuration.availabilityZone = 'us-east-1e'
    OR configuration.secondaryAvailabilityZone = 'us-east-1e'
  )

Remarque : Dans la requête précédente, la zone de disponibilité doit correspondre au nom de zone figurant dans les mappages de votre compte.

AWS CLI

Exécutez la commande describe-db-instances pour répertorier les instances de base de données RDS actuellement déployées dans la zone de disponibilité :

aws rds describe-db-instances \
    --query 'DBInstances[?Engine!=`aurora-postgresql`&&Engine!=`aurora-mysql`&&(AvailabilityZone==`AVAILABILITY ZONE` || SecondaryAvailabilityZone==`AVAILABILITY ZONE`)].{"0-Engine":Engine, "1-DBInstanceIdentifier":DBInstanceIdentifier, "2-DBSubnetGroupName":DBSubnetGroup.DBSubnetGroupName, "3-AvailabilityZone":AvailabilityZone, "4-SecondaryAvailabilityZone":SecondaryAvailabilityZone} | sort_by([], &"1-DBInstanceIdentifier")' \
    --region us-east-1

Exécutez la commande describe-db-instances pour répertorier les instances de base de données Aurora actuellement déployées dans la zone de disponibilité :

aws rds describe-db-instances \
    --query 'DBInstances[?Engine==`aurora-postgresql`&&Engine==`aurora-mysql`&&AvailabilityZone==`AVAILABILITY ZONE`].{"0-Engine":Engine, "1-DBClusterIdentifier":DBClusterIdentifier, "2-DBInstanceIdentifier":DBInstanceIdentifier, "3-DBSubnetGroupName":DBSubnetGroup.DBSubnetGroupName, "4-AvailabilityZone":AvailabilityZone} | sort_by([], &"1-DBClusterIdentifier")'  \
    --region us-east-1

Déplacer l'instance hors de la zone de disponibilité

Instance de base de données RDS

Remarque : Vous ne pouvez pas modifier la zone de disponibilité d'un déploiement mono-AZ.

Pour déplacer une instance RDS hors d'une zone de disponibilité, procédez comme suit :

  1. Si l'instance RDS est un déploiement mono-AZ, modifiez l'instance de base de données afin qu'elle soit un déploiement multi-AZ. Le déploiement Multi-AZ crée une instance de base de données de secours dans une zone de disponibilité différente qui utilise un sous-réseau différent.
  2. Redémarrez l'instance de base de données avec basculement. L'instance de base de données de secours devient l'instance de base de données principale.
    Remarque : Assurez-vous que l'instance de base de données apparaît dans la nouvelle zone de disponibilité après le basculement.
  3. Modifiez l'instance de base de données afin qu'elle soit une instance de base de données mono-AZ. L'instance de base de données mono-AZ est ensuite supprimée du sous-réseau que vous souhaitez supprimer.

Instance de base de données Aurora

Pour déplacer une instance Aurora hors d'une zone de disponibilité, procédez comme suit :

  1. Si votre instance de base de données Aurora est un déploiement mono-AZ, ajoutez une nouvelle instance de lecteur à votre cluster de base de données Aurora. Lorsque vous créez la nouvelle instance de lecteur, choisissez l'une des zones de disponibilité de votre groupe de sous-réseaux de base de données.
  2. Forcez un basculement pour le cluster de bases de données afin de promouvoir la nouvelle instance de lecteur en tant que nouvelle instance de base de données d'enregistreur.
    Remarque : Si vous disposez de plusieurs instances de lecteurs cibles et que vous n'en spécifiez aucune, Amazon RDS promeut le lecteur ayant le niveau de promotion le plus élevé. Les priorités vont de 0 pour la priorité la plus élevée à 15 pour la priorité la plus faible. Pour plus d'informations, consultez Tolérance aux pannes pour un cluster de base de données Aurora.
  3. Supprimez l'instance de base de données principale précédente.

Supprimer les sous-réseaux du groupe de sous-réseaux de base de données

Remarque : Si vous avez lancé une instance dans le sous-réseau, vous ne pouvez pas supprimer le sous-réseau. Si vous avez lancé des instances de base de données dans le sous-réseau que vous supprimez, le message d'erreur suivant s'affiche : « Nous sommes désolés, votre demande de modification du groupe de sous-réseaux de base de données a échoué. Certains des sous-réseaux à supprimer sont actuellement utilisés : »

Pour supprimer les sous-réseaux du groupe de sous-réseaux de base de données, procédez comme suit :

  1. Ouvrez la console Amazon RDS.

  2. Dans le volet de navigation, sélectionnez Groupes de sous-réseaux.

  3. Sélectionnez le groupe de sous-réseaux auquel l'instance de base de données est associée, puis sélectionnez Modifier.

  4. Sur la page Modifier les groupes de sous-réseaux de base de données, sous Ajouter des sous-réseaux, supprimez les sous-réseaux que vous souhaitez supprimer

  5. Pour vérifier quelles instances de bases de données RDS se trouvent toujours dans la zone de disponibilité, exécutez la commande describe-db-instances :

    aws rds describe-db-instances \
        --query 'DBInstances[?Engine!=`aurora-postgresql`&&Engine!=`aurora-mysql`&&(AvailabilityZone==`AVAILABILITY ZONE` || SecondaryAvailabilityZone==`AVAILABILITY ZONE`)].{"0-Engine":Engine, "1-DBInstanceIdentifier":DBInstanceIdentifier, "2-DBSubnetGroupName":DBSubnetGroup.DBSubnetGroupName, "3-AvailabilityZone":AvailabilityZone, "4-SecondaryAvailabilityZone":SecondaryAvailabilityZone} | sort_by([], &"1-DBInstanceIdentifier")' \
        --region us-east-1

    Pour vérifier quelles instances de base de données Aurora se trouvent toujours dans la zone de disponibilité, exécutez la commande describe-db-instances :

    aws rds describe-db-instances \
        --query 'DBInstances[?Engine==`aurora-postgresql`&&Engine==`aurora-mysql`&&AvailabilityZone==`AVAILABILITY ZONE`].{"0-Engine":Engine, "1-DBClusterIdentifier":DBClusterIdentifier, "2-DBInstanceIdentifier":DBInstanceIdentifier, "3-DBSubnetGroupName":DBSubnetGroup.DBSubnetGroupName, "4-AvailabilityZone":AvailabilityZone} | sort_by([], &"1-DBClusterIdentifier")'  \
        --region us-east-1
  6. Sélectionnez Enregistrer.

Retourner l'instance RDS au déploiement d'origine

Si vous avez commencé par un déploiement multi-AZ, modifiez l'instance de base de données afin qu'elle soit un déploiement multi-AZ. Si vous avez commencé par un déploiement mono-AZ, aucune autre étape n'est requise.

Si vous avez supprimé une instance de lecture de votre cluster de base de données Aurora, ajoutez-en une nouvelle à votre cluster. Si vous avez commencé par un déploiement mono-AZ, aucune autre étape n'est requise.

Informations connexes

Utilisation de groupes de sous-réseaux de base de données

Comment puis-je déplacer une instance de base de données Amazon RDS d’un sous-réseau public à un sous-réseau privé au sein du même VPC ?

Comment puis-je supprimer un sous-réseau qui fait partie d'un groupe de sous-réseaux de base de données Amazon RDS ?

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an