CodeDeploy santé de l'instance - AWS CodeDeploy

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.

CodeDeploy santé de l'instance

CodeDeploy surveille l'état de santé des instances d'un groupe de déploiement. Les déploiements échouent si le nombre d'instances saines chute sous le nombre minimal d'instances saines qui a été spécifié pour le groupe de déploiement pendant un déploiement. Par exemple, si 85 % des instances doivent rester saines lors d'un déploiement, et que le groupe de déploiement contient 10 instances, le déploiement global échoue en cas d’échec du déploiement, même dans une seule instance. Cela est dû au fait que lorsqu'une instance est mise hors ligne pour que la dernière révision de l'application puisse être installée, le nombre d'instances saines disponibles tombe déjà à 90 %. Une instance défaillante associée à une autre instance hors ligne signifierait que seulement 80 % des instances sont saines et disponibles. CodeDeployéchouera au déploiement global.

Pour qu'un déploiement général réussisse, il est important de se souvenir que les éléments suivants doivent être vrais :

  • CodeDeploy est capable de se déployer sur chaque instance du déploiement.

  • Le déploiement doit réussir sur au moins une instance. Cela signifie que même si la valeur minimale d'hôtes sains est de 0, le déploiement doit réussir pour au moins une instance (c'est-à-dire qu'au moins une instance doit être saine) pour que le déploiement général réussisse.

État de santé

CodeDeploy attribue deux valeurs d'état de santé à chaque instance : état de révision et état de santé de l'instance.

État de santé de révision

L’état de santé de révision s’appuie sur la révision d'application actuellement installée sur l’instance. Il peut avoir les valeurs d'état suivantes :

  • Actuel : la révision installée sur l’instance correspond à la révision pour le dernier déploiement réussi du groupe de déploiement.

  • Ancien : la révision installée sur l’instance correspond à une version antérieure de l’application.

  • Inconnu : la révision d'application n'a pas été installée correctement sur l’instance.

État de santé d'instance

L’état de santé d'instance s’appuie sur la réussite ou non des déploiements sur une instance. Il peut avoir les valeurs suivantes :

  • Sain : le dernier déploiement sur l’instance a réussi.

  • Non sain : la tentative de déploiement d'une révision sur l'instance a échoué, ou une révision n'a pas encore été déployée sur l'instance.

CodeDeploy utilise l'état des révisions et l'état des instances pour planifier le déploiement sur les instances du groupe de déploiement dans l'ordre suivant :

  1. État de santé d'instance non sain.

  2. État de santé de révision inconnu.

  3. État de santé de révision ancien.

  4. État de santé de révision actuel.

Si le déploiement global réussit, la révision est mise à jour et les valeurs d’état de santé du groupe de déploiement sont mises à jour pour refléter le dernier déploiement.

  • Toutes les instances actuelles qui ont eu un déploiement réussi restent actuelles. Sinon, elles deviennent inconnues.

  • Toutes les instances anciennes ou inconnues qui ont eu un déploiement réussi deviennent actuelles. Sinon, elles restent anciennes ou inconnues.

  • Toutes les instances saines qui ont eu un déploiement réussi restent saines. Sinon, elles deviennent non saines.

  • Toutes les instances non saines qui ont eu un déploiement réussi deviennent saines. Sinon, elles restent non saines.

Si le déploiement global échoue ou est arrêté :

  • L'état de santé de chaque instance sur laquelle a CodeDeploy tenté de déployer la révision de l'application est défini comme sain ou non, selon que la tentative de déploiement de cette instance a réussi ou échoué.

  • Chaque instance sur laquelle CodeDeploy n'a pas tenté de déployer la révision de l'application conserve sa valeur d'intégrité actuelle.

  • La révision du groupe de déploiement reste la même.

À propos du nombre minimum d'instances saines

Le nombre minimum requis d'instances saines est défini dans le cadre d'une configuration de déploiement.

Important

Lors d'un déploiement bleu/vert, la configuration de déploiement et la valeur minimale d'hôtes sains s'appliquent aux instances dans l'environnement de remplacement, pas à celles de l'environnement d'origine. Toutefois, lorsque l'enregistrement des instances dans l'environnement d'origine auprès de l'équilibreur de charge est annulé, le déploiement global est marqué comme ayant échoué même si l'enregistrement d'une seule instance d'origine ne peut pas être annulé.

CodeDeploy fournit trois configurations de déploiement par défaut qui utilisent couramment des valeurs d'hôte saines minimales :

Nom de configuration de déploiement par défaut Valeur minimale d'hôtes sains prédéfinie
CodeDeployDefault. OneAtA l'heure 1
CodeDeployDefault. HalfAtA l'heure 50%
CodeDeployDefault.AllAtOnce 0

Vous trouverez plus d'informations sur les configurations de déploiement par défaut dans Utilisation des configurations de déploiement dans CodeDeploy.

Vous pouvez créer des configurations de déploiement personnalisées CodeDeploy pour définir vos propres valeurs minimales d'hôte sain. Vous pouvez définir ces valeurs en tant que nombres entiers ou pourcentages lorsque vous utilisez les opérations suivantes :

CodeDeploy vous permet de spécifier un nombre minimum d'instances saines pour le déploiement à deux fins principales :

  • Pour déterminer si le déploiement global réussit ou échoue. Le déploiement réussit si la révision d'application est correctement déployée au moins sur le nombre minimal d’instances saines.

  • Pour déterminer le nombre d’instances qui doivent être saines au cours d'un déploiement pour permettre au déploiement de continuer.

Vous pouvez spécifier le nombre minimal d’instances saines pour votre groupe de déploiement comme un nombre d’instances ou comme un pourcentage du nombre total d’instances. Si vous spécifiez un pourcentage, au début du déploiement, il CodeDeploy convertit le pourcentage en un nombre équivalent d'instances, en arrondissant toutes les instances fractionnaires.

CodeDeploy suit l'état de santé des instances du groupe de déploiement pendant le processus de déploiement et utilise le nombre minimum d'instances saines spécifié pour le déploiement pour déterminer s'il convient de poursuivre le déploiement. Le principe de base est qu'un déploiement ne doit jamais faire descendre le nombre d’instances saines sous le nombre minimal que vous avez spécifié. La seule exception à cette règle est lorsqu'un groupe de déploiement a dès le début moins d’instances que le nombre minimal spécifié d'instances saines. Dans ce cas, le processus de déploiement ne réduit pas plus le nombre d'instances saines.

Note

CodeDeploy tentera de se déployer sur toutes les instances d'un groupe de déploiement, même celles qui sont actuellement dans un état arrêté. Dans le cadre du calcul de l'hôte sain minimum, une instance arrêtée a le même impact qu'une instance ayant échoué. Pour résoudre les échecs de déploiement en raison du trop grand nombre d'instances arrêtées, redémarrez les instances ou modifiez leurs balises de façon à les exclure du groupe de déploiement.

CodeDeploy lance le processus de déploiement en tentant de déployer la révision de l'application sur les instances défectueuses du groupe de déploiement. Pour chaque déploiement réussi, CodeDeploy l'état de santé de l'instance devient sain et l'ajoute aux instances saines du groupe de déploiement. CodeDeploy compare ensuite le nombre actuel d'instances saines au nombre minimum d'instances saines spécifié.

  • Si le nombre d'instances saines est inférieur ou égal au nombre minimum d'instances saines spécifié, CodeDeploy annule le déploiement afin de garantir que le nombre d'instances saines ne diminue pas avec l'augmentation du nombre de déploiements.

  • Si le nombre d'instances saines est supérieur d'au moins une au nombre minimum d'instances saines spécifié, CodeDeploy déploie la révision de l'application sur l'ensemble d'instances saines d'origine.

Si le déploiement d'une instance saine échoue, l'état de santé de cette instance CodeDeploy devient défaillant. Au fur et à mesure que le déploiement progresse, CodeDeploy met à jour le nombre actuel d'instances saines et le compare au nombre minimum d'instances saines spécifié. Si le nombre d'instances saines tombe au nombre minimum spécifié à tout moment du processus de déploiement, CodeDeploy arrête le déploiement. Cette pratique empêche le prochain déploiement d'échouer et d'entraîner le nombre d'instances saines sous le nombre minimal spécifié.

Note

Assurez-vous que le nombre minimal d’instances saines, que vous spécifiez est inférieur au nombre total d’instances dans le groupe de déploiement. Si vous spécifiez une valeur de pourcentage, n’oubliez pas qu'il sera arrondi. Dans le cas contraire, lorsque le déploiement démarre, le nombre d'instances saines sera déjà inférieur ou égal au nombre minimum d'instances saines spécifié, et le déploiement global CodeDeploy échouera immédiatement.

CodeDeploy utilise également le nombre minimum spécifié d'instances saines et le nombre réel d'instances saines pour déterminer si et comment déployer la révision de l'application sur plusieurs instances. Par défaut, CodeDeploy déploie la révision de l'application sur autant d'instances que possible sans risque que le nombre d'instances saines tombe en dessous du nombre minimum d'instances saines spécifié.

Pour déterminer le nombre d'instances qui doivent être déployées simultanément, CodeDeploy utilisez le calcul suivant :

[total-hosts] - [minimum-healthy-hosts] = [number-of-hosts-to-deploy-to-at-once]

Par exemple :

  • Si votre groupe de déploiement compte 10 instances et que vous définissez le nombre minimum d'instances saines à 9, CodeDeploy déploie sur une instance à la fois.

  • Si votre groupe de déploiement compte 10 instances et que vous définissez le nombre minimal d'instances saines sur 3, CodeDeploy déploie simultanément sur 7 instances dans le premier lot, puis sur les 3 autres dans le second lot.

  • Si votre groupe de déploiement compte 10 instances et que vous définissez le nombre minimal d'instances saines sur 0, CodeDeploy déploie simultanément sur 10 instances.

Exemples

Dans les exemples suivants, le groupe de déploiement est supposé compter 10 instances.

Nombre minimal d'instances saines : 95 %

CodeDeploy arrondit le nombre minimum d'instances saines à 10 instances, ce qui équivaut au nombre d'instances saines. Le déploiement global échoue immédiatement sans déploiement de la révision sur aucune instance.

Nombre minimal d'instances saines : 9

CodeDeploy déploie la révision sur une instance à la fois. Si le déploiement sur l'une des instances échoue, le déploiement global échoue CodeDeploy immédiatement car le nombre d'instances saines est égal au nombre minimum d'instances saines. L'exception à cette règle est que si la dernière instance échoue, le déploiement réussit quand même.

CodeDeploy poursuit le déploiement, une instance à la fois, jusqu'à ce qu'un déploiement échoue ou que le déploiement global soit terminé. Si les 10 déploiements réussissent, le groupe de déploiement dispose désormais de 10 instances saines.

Nombre minimal d'instances saines : 8

CodeDeploy déploie la révision sur deux instances à la fois. Si deux de ces déploiements échouent, le déploiement global échoue CodeDeploy immédiatement. L'exception à cette règle est que si la dernière instance est la deuxième à échouer, le déploiement réussit quand même.

Nombre minimal d'instances saines : 0

CodeDeploy déploie la révision dans l'ensemble du groupe de déploiement en une seule fois. Au moins un déploiement sur une instance doit réussir afin que le déploiement général réussisse. Si aucune instance n'est saine, le déploiement échoue. Cela est dû à l'exigence selon laquelle, pour qu'un déploiement global soit considéré comme réussi, au moins une instance doit être saine lorsque le déploiement global est terminé, même si la valeur minimale des instances saines est 0.

À propos du nombre minimum d'instances saines par zone de disponibilité

Note

Cette section utilise les termes instance et hôte de manière interchangeable pour désigner les instances Amazon EC2.

Si vous déployez sur des instances situées dans plusieurs zones de disponibilité, vous pouvez éventuellement activer la zonal configuration fonctionnalité, qui permet de CodeDeploy déployer dans une zone de disponibilité à la fois.

Lorsque cette fonctionnalité est activée, elle CodeDeploy garantit que le nombre d'hôtes sains reste supérieur aux valeurs « nombre minimum d'hôtes sains par zone » et « nombre minimum d'hôtes sains ». Si le nombre d'hôtes sains tombe en dessous de l'une ou l'autre de ces valeurs, le déploiement CodeDeploy échoue dans toutes les zones de disponibilité.

Pour calculer le nombre d'hôtes sur lesquels déployer simultanément, utilisez à la fois les CodeDeploy valeurs « nombre minimal d'hôtes sains par zone » et « nombre minimal d'hôtes sains ». CodeDeploy utilisera le moindre des calculs [A] et[B], où [A] et [B] sont :

[A] = [total-hosts] - [min-healthy-hosts] = [number-of-hosts-to-deploy-to-at-once]
[B] = [total-hosts-per-AZ] - [min-healthy-hosts-per-AZ] = [number-of-hosts-to-deploy-to-at-once-per-AZ]

Après avoir déterminé le nombre d'hôtes sur lesquels déployer simultanément, effectue le CodeDeploy déploiement sur les hôtes par lots, une zone de disponibilité à la fois, avec une pause optionnelle (ou « durée de cuisson ») entre les zones.

Exemple

Si votre déploiement est configuré comme suit :

  • [total-hosts] est 200

  • [minimum-healthy-hosts] est 160

  • [total-hosts-per-AZ] est 100

  • [minimum-healthy-hosts-per-AZ] est 50

Alors...

  • [A] = 200 - 160 = 40

  • [B] = 100 - 50 = 50

  • 40est inférieur à 50

Par conséquent, CodeDeploy sera déployé sur les 40 hôtes en une seule fois.

Dans ce scénario, le déploiement se déroule comme suit :

  1. CodeDeploy se déploie dans la première zone de disponibilité :

    1. CodeDeploy se déploie sur les premiers 40 hôtes.

    2. CodeDeploy se déploie sur les 40 hôtes suivants.

    3. CodeDeploy se déploie sur les 20 hôtes restants.

      Le déploiement vers la première zone de disponibilité est maintenant terminé.

  2. (Facultatif) CodeDeploy attend que le déploiement vers la première zone « démarre », tel que défini par le paramètre Durée du moniteur ou Ajouter une durée du moniteur pour la première zone. S'il n'y a aucun problème, CodeDeploy continue.

  3. CodeDeploy se déploie dans la deuxième zone de disponibilité :

    1. CodeDeploy se déploie sur les premiers 40 hôtes.

    2. CodeDeploy se déploie sur les 40 hôtes suivants.

    3. CodeDeploy se déploie sur les 20 hôtes restants.

      Le déploiement vers la deuxième et dernière zone de disponibilité est maintenant terminé.

Pour en savoir plus sur la fonctionnalité de configuration zonale et sur la manière de spécifier le nombre minimum d'instances saines par zone de disponibilité, consultezzonal configuration.