Paramètres et stratégies de déploiement - AWS Elastic Beanstalk

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Paramètres et stratégies de déploiement

AWS Elastic Beanstalk fournit plusieurs options pour le traitement des déploiements, y compris des stratégies de déploiement (Simultanée, Propagation, Propagation avec un lot supplémentaire, Immuable et Répartition du trafic) et des options vous permettant de configurer la taille de lot et le comportement des vérifications de l'état au cours des déploiements. Par défaut, votre environnement utilise des déploiements « tout à la fois ». Si vous avez créé l'environnement avec la CLI EB et s'il s'agit d'un environnement évolutif (vous n'avez pas spécifié l'option --single), il utilise des déploiement par propagation.

Avec les déploiements propagés, Elastic Beanstalk divise les instances Amazon EC2 de l'environnement en lots et déploie la nouvelle version de l'application dans un lot à la fois. Les instances restantes sont laissées dans l'environnement exécutant l'ancienne version de l'application. Lors d'un déploiement par propagation, certaines instances traitent les demandes avec l'ancienne version d'application, tandis que les instances incluses dans les lots terminés traitent les autres demandes avec la nouvelle version. Pour plus de détails, veuillez consulter Fonctionnement de la propagation des déploiements.

Afin de maintenir une pleine capacité au cours des déploiements, vous pouvez configurer votre environnement de façon à lancer un nouveau lot d'instances avant de mettre des instances hors service. Cette option correspond à un déploiement par propagation avec un lot supplémentaire. Une fois le déploiement terminé, Elastic Beanstalk résilie le lot d'instances supplémentaire.

Les déploiements immuables effectuent une mise à jour immuable pour lancer un ensemble complet de nouvelles instances exécutant la nouvelle version de l'application dans un groupe Auto Scaling distinct, parallèlement aux instances qui exécutent l'ancienne version. Les déploiements immuables peuvent éviter les problèmes causés par des propagations de déploiements partiellement terminées. Si les nouvelles instances ne réussissent pas les vérifications de l'état, Elastic Beanstalk les résilie tout en laissant intactes les instances d'origine.

Les déploiements avec répartition du trafic vous permettent d'effectuer des tests Canary dans le cadre du déploiement de votre application. Dans un déploiement avec répartition du trafic, Elastic Beanstalk lance un ensemble complet de nouvelles instances comme lors d'un déploiement immuable. Il transmet ensuite un pourcentage spécifié du trafic client entrant vers la nouvelle version de l'application pour une période d'évaluation spécifiée. Si les nouvelles instances restent en bonne santé, Elastic Beanstalk leur transmet l'ensemble du trafic et résilie les anciennes instances. Si les nouvelles instances ne réussissent pas les vérifications de l'état ou si vous choisissez d'abandonner le déploiement, Elastic Beanstalk renvoie le trafic vers les anciennes instances et résilie les nouvelles. Il n'y a jamais d'interruption de service. Pour plus de détails, veuillez consulter Fonctionnement des déploiements avec répartition du trafic.

Avertissement

Certaines politiques remplacent toutes les instances pendant le déploiement ou la mise à jour. Cela entraîne la perte de tous les équilibres de rafale Amazon EC2 cumulés. Une telle situation se produit dans les cas suivants :

  • Mises à jour de la plate-forme gérée avec le remplacement d'instance activé

  • Mises à jour immuables

  • Déploiements avec mises à jour immuables ou fractionnement du trafic activé

Si votre application ne réussit pas toutes les vérifications d'état, mais fonctionne tout de même correctement avec un statut d'état inférieur, vous pouvez autoriser les instances à réussir les vérifications d'état avec un statut inférieur (Warning, par exemple), en modifiant l'option Seuil de bonne santé. Si vos déploiements échouent parce qu'ils ne réussissent pas les vérifications d'état et si vous avez besoin de forcer une mise à jour quel que soit le statut de l'état, sélectionnez l'option Ignorer la vérification de l'état.

Lorsque vous spécifiez une taille de lot pour la propagation des mises à jour, Elastic Beanstalk utilise également cette valeur pour les redémarrages progressifs de l'application. Utilisez les redémarrages progressifs lorsque vous souhaitez redémarrer les serveurs proxy et d'application exécutés sur les instances de votre environnement sans temps d'arrêt.

Configuration des déploiements d'application

Dans la console de gestion de l'environnement, activez et configurez les déploiements de version d'application par lots en modifiant l'option Updates and Deployments (Mises à jour et déploiements) sur la page Configuration de l'environnement.

Pour configurer des déploiements (console)
  1. Ouvrez la console Elastic Beanstalk et, dans la liste Regions (Régions), sélectionnez votre Région AWS.

  2. Dans le panneau de navigation, choisissez Environments (Environnements), puis choisissez le nom de votre environnement dans la liste.

    Note

    Si vous avez plusieurs environnements, utilisez la barre de recherche pour filtrer la liste des environnements.

  3. Dans le panneau de navigation, choisissez Configuration.

  4. Dans la catégorie de configuration Rolling updates and deployments (Propagation des mises à jour et déploiements), choisissez Edit (Modifier).

  5. Dans la section Déploiements de l'application, choisissez une valeur pour l'option Stratégie de déploiement, les paramètres de lots et les options de vérification de l'état.

  6. Pour enregistrer les modifications, cliquez sur Appliquer en bas de la page.

La section Déploiements de l'application de la page Propagation des mises à jour et déploiements propose les options suivantes pour les déploiements d'applications :

  • Deployment policy (Stratégie de déploiement) – Choisissez l'une des options de déploiement suivantes :

    • All at once (Simultanée) – Déployez la nouvelle version dans toutes les instances en même temps. Pendant le déploiement, toutes les instances de votre environnement sont mises hors service pendant un temps limité.

    • Rolling (Propagation) – Déployez la nouvelle version par lots. Chaque lot est suspendu pendant la phase de déploiement. Par conséquent, la capacité de votre environnement est diminuée du nombre d'instances dans un lot.

    • Rolling with additional batch (Propagation avec un lot supplémentaire) – Déployez la nouvelle version par lots, en commençant par lancer un nouveau lot d'instances afin de garantir la pleine capacité au cours du processus de déploiement.

    • Immutable (Immuable) – Déployez la nouvelle version dans un nouveau groupe d'instances en effectuant une mise à jour immuable.

    • Traffic splitting (Répartition du trafic) – Déployez la nouvelle version dans un nouveau groupe d'instances et répartissez temporairement le trafic client entrant entre la version de l'application existante et la nouvelle.

Pour les stratégies de déploiement Propagation et Propagation avec un lot supplémentaire, vous pouvez configurer :

  • Batch size (Taille de lot) – Taille de l'ensemble d'instances à déployer dans chaque lot.

    Choisissez Percentage (Pourcentage) pour configurer un pourcentage du nombre total d'instances EC2 dans le groupe Auto Scaling (jusqu'à 100 %), ou Fixed (Fixe) pour configurer un nombre fixe d'instances (jusqu'au nombre maximal d'instances dans la configuration Auto Scaling de votre environnement).

Pour la stratégie de déploiement Répartition du trafic, vous pouvez configurer les éléments suivants :

  • Traffic split (Répartition du trafic) – Pourcentage initial du trafic client entrant que Elastic Beanstalk déplace vers les instances d'environnement exécutant la nouvelle version de l'application que vous déployez.

  • Traffic splitting evaluation time (Temps d'évaluation de la répartition du trafic) – Période d'attente d'Elastic Beanstalk, en minutes, à la suite d'un déploiement sain initial avant de déplacer l'ensemble du trafic client entrant vers la nouvelle version de l'application que vous déployez.


        Page de configuration du déploiement d'une application Elastic Beanstalk

La section Préférences de déploiement inclut des options relatives aux vérifications de l'état.

  • Ignore health check (Ignorer la vérification de l'état) – Empêche la restauration du déploiement lorsqu'un lot ne passe pas avec succès les vérifications de l'état avant l'expiration du délai de commande.

  • Healthy threshold (Seuil de bonne santé) – Réduit le seuil au niveau auquel une instance est considérée comme saine pendant les déploiements par propagation, les mises à jour par propagation et les mises à jour immuables.

  • Command timeout (Délai de commande) – Nombre de secondes d'attente pour qu'une instance devienne saine avant d'annuler le déploiement ou, si l'option Ignore health check (Ignorer la vérification de l'état) est sélectionnée, avant de passer au lot suivant.


        Page de configuration des déploiements d'une application Elastic Beanstalk

Fonctionnement de la propagation des déploiements

Lors du traitement d'un lot, Elastic Beanstalk détache de l'équilibreur de charge toutes les instances du lot, déploie la nouvelle version de l'application, puis attache de nouveau les instances. Lorsque le Connection Draining est activé, Elastic Beanstalk draine les connexions existantes des instances Amazon EC2 dans chaque lot avant de commencer le déploiement.

Après avoir associé de nouveau les instances d'un lot à l'équilibreur de charge, Elastic Load Balancing attend qu'elles réussissent un nombre minimal de vérifications de l'état Elastic Load Balancing (valeur du paramètre Healthy check count threshold (Seuil du nombre de vérifications de l'état saines)), puis commence à acheminer le trafic vers ces instances. Si aucune URL de vérification de l'état n'est configurée, cela peut se produire très rapidement, car une instance réussit la vérification de l'état dès qu'elle peut accepter une connexion TCP. Si une URL de vérification de l'état est configurée, l'équilibreur de charge n'achemine pas le trafic vers les instances mises à jour tant qu'elles n'ont pas renvoyé un code d'état 200 OK en réponse à une demande HTTP GET envoyée à l'URL de vérification de l'état.

Elastic Beanstalk attend que toutes les instances du lot soient saines avant de passer au lot suivant. Avec les rapports de base sur l'état, l'état de l'instance dépend du statut de vérification de l'état d'Elastic Load Balancing. Lorsque toutes les instances du lot ont réussi suffisamment de vérifications de l'état pour être considérées comme saines par Elastic Load Balancing, le traitement du lot est terminé. Si les rapports améliorés sur l'état sont activés, Elastic Beanstalk tient compte de plusieurs autres facteurs, dont le résultat des demandes entrantes. Avec les rapports sur l'état de santé améliorés, toutes les instances doivent réussir 12 vérifications de l'état consécutives avec un statut OK en deux minutes pour les environnements de serveurs web et 18 vérifications de l'état en 3 minutes pour les environnements de travail.

Si un lot d'instances ne devient pas sain avant l'expiration du délai de commande, le déploiement échoue. Dès lors qu'un déploiement a échoué, vérifiez l'état des instances de votre environnement pour obtenir des informations sur la cause de la défaillance. Ensuite, effectuez un autre déploiement avec une version corrigée de votre application à restaurer ou une version dont vous savez qu'elle est correcte.

Si un déploiement échoue alors qu'un ou plusieurs lots ont été correctement créés, les lots terminés exécutent la nouvelle version de votre application, tandis que les lots en attente continuent d'exécuter l'ancienne version. Vous pouvez identifier la version en cours d'exécution sur les instances de votre environnement sur la page Santé de la console. Cette page affiche l'ID du déploiement le plus récent ayant été exécuté sur chaque instance de votre environnement. Si vous résiliez des instances à partir du déploiement ayant échoué, Elastic Beanstalk les remplace par des instances exécutant la version de l'application à partir du déploiement le plus récent ayant réussi.

Fonctionnement des déploiements avec répartition du trafic

Les déploiements avec répartition du trafic vous permettent d'effectuer des tests Canary. Vous dirigez une partie du trafic client entrant vers la nouvelle version de votre application pour vérifier l'état de l'application avant de valider la nouvelle version et de diriger tout le trafic vers celle-ci.

Au cours d'un déploiement avec répartition du trafic, Elastic Beanstalk crée un nouvel ensemble d'instances dans un groupe Auto Scaling temporaire distinct. Elastic Beanstalk demande ensuite à l'équilibreur de charge de diriger un certain pourcentage du trafic entrant de votre environnement vers les nouvelles instances. Ensuite, Elastic Beanstalk contrôle l'état du nouvel ensemble d'instances pendant une durée configurée. Si tout va bien, Elastic Beanstalk déplace le trafic restant vers les nouvelles instances et les attache au groupe Auto Scaling d'origine de l'environnement, en remplaçant les anciennes instances. Elastic Beanstalk procède ensuite à un nettoyage en résiliant les anciennes instances et en supprimant le groupe Auto Scaling temporaire.

Note

La capacité de l'environnement ne change pas lors d'un déploiement avec répartition du trafic. Elastic Beanstalk lance le même nombre d'instances dans le groupe Auto Scaling temporaire que dans le groupe Auto Scaling d'origine au début du déploiement. Il maintient ensuite un nombre constant d'instances dans les deux groupes Auto Scaling pour toute la durée du déploiement. Tenez compte de ce fait lors de la configuration du temps d'évaluation de la répartition du trafic de l'environnement.

La restauration du déploiement vers la version précédente de l'application est rapide et n'affecte pas le service sur le trafic client. Si les nouvelles instances ne réussissent pas les vérifications de l'état ou si vous choisissez d'abandonner le déploiement, Elastic Beanstalk renvoie le trafic vers les anciennes instances et résilie les nouvelles. Pour abandonner un déploiement, accédez à la page de présentation de l'environnement dans la console Elastic Beanstalk et choisissez Abort current operation (Interrompre l'opération en cours) dans Environment actions (Actions d'environnement). Vous pouvez également appeler l'API AbortenVironmentUpdate ou la commande d'AWS CLI équivalente.

Les déploiements avec répartition du trafic exigent un équilibreur de charge Application Load Balancer. Elastic Beanstalk utilise ce type d'équilibreur de charge par défaut lorsque vous créez votre environnement à l'aide de la console Elastic Beanstalk ou de l'interface de ligne de commande (CLI) EB.

Espaces de noms pour les options de déploiements

Vous pouvez utiliser les options de configuration dans l'espace de noms aws:elasticbeanstalk:command pour configurer vos déploiements. Si vous choisissez la stratégie avec répartition du trafic, des options supplémentaires pour cette stratégie sont disponibles dans l'espace de noms aws:elasticbeanstalk:trafficsplitting.

Utilisez l'option DeploymentPolicy pour définir le type de déploiement. Les valeurs suivantes sont prises en charge :

  • AllAtOnce – Désactive les propagations de déploiements et effectue systématiquement un déploiement dans toutes les instances en même temps.

  • Rolling – Permet d'effectuer des propagations de déploiements standard.

  • RollingWithAdditionalBatch – Lance un lot d'instances supplémentaire avant de commencer le déploiement afin de maintenir une pleine capacité.

  • Immutable – Effectue une mise à jour immuable pour chaque déploiement.

  • TrafficSplitting – Effectue des déploiements avec répartition du trafic pour réaliser des tests Canary sur les déploiements de votre application.

Lorsque vous activez les propagations de déploiements, définissez les options BatchSize et BatchSizeType afin de configurer la taille de chaque lot. Par exemple, pour déployer 25 % de toutes les instances dans chaque lot, spécifiez les options et valeurs suivantes.

Exemple .ebextensions/rolling-updates.config
option_settings: aws:elasticbeanstalk:command: DeploymentPolicy: Rolling BatchSizeType: Percentage BatchSize: 25

Pour déployer jusqu'à cinq instances dans chaque lot, quel que soit le nombre d'instances en cours d'exécution, et mettre en place un lot supplémentaire de cinq instances exécutant la nouvelle version avant de mettre des instances hors service, spécifiez les options et valeurs ci-après.

Exemple .ebextensions/rolling-additionalbatch.config
option_settings: aws:elasticbeanstalk:command: DeploymentPolicy: RollingWithAdditionalBatch BatchSizeType: Fixed BatchSize: 5

Pour effectuer une mise à jour immuable pour chaque déploiement avec un seuil de vérification de l'état défini sur Avertissement et poursuivre le déploiement même si les instances d'un lot ne réussissent pas les vérifications de l'état dans un délai de 15 minutes, spécifiez les options et les valeurs ci-après.

Exemple .ebextensions/immutable-ignorehealth.config
option_settings: aws:elasticbeanstalk:command: DeploymentPolicy: Immutable HealthCheckSuccessThreshold: Warning IgnoreHealthCheck: true Timeout: "900"

Pour effectuer des déploiements avec répartition du trafic, avec le transfert de 15 % du trafic client vers la nouvelle version de l'application et l'évaluation de l'intégrité pendant 10 minutes, spécifiez les options et valeurs suivantes.

Exemple .ebextensions/traffic-splitting.config
option_settings: aws:elasticbeanstalk:command: DeploymentPolicy: TrafficSplitting aws:elasticbeanstalk:trafficsplitting: NewVersionPercent: "15" EvaluationTime: "10"

L'interface de ligne de commande (CLI) EB et la console Elastic Beanstalk appliquent les valeurs recommandées pour les options précédentes. Vous devez supprimer ces paramètres si vous voulez utiliser des fichiers de configuration pour configurer la même chose. Consultez Valeurs recommandées pour plus de détails.