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.
Comment le disjoncteur ECS de déploiement d'Amazon détecte les défaillances
Le disjoncteur du circuit de déploiement est un mécanisme de mise à jour propagée qui détermine si les tâches atteignent un état stable. Le disjoncteur du circuit de déploiement dispose d'une option qui ramène automatiquement un déploiement ayant échoué à l'état COMPLETED
.
Lorsqu'un déploiement de service change d'état, Amazon ECS envoie un événement de changement d'état de déploiement de service à EventBridge. Cela permet de surveiller l'état de vos déploiements de services par programmation. Pour de plus amples informations, veuillez consulter Événements de changement d'état du déploiement du ECS service Amazon. Nous vous recommandons de créer et de surveiller une EventBridge règle avec un eventName
de SERVICE_DEPLOYMENT_FAILED
afin de pouvoir effectuer une action manuelle pour démarrer votre déploiement. Pour plus d'informations, consultez la section Création d'une EventBridge règle dans le guide de EventBridge l'utilisateur Amazon.
Lorsque le disjoncteur du circuit de déploiement détermine qu'un déploiement a échoué, il recherche le déploiement le plus récent à l'état COMPLETED
. Il s'agit du déploiement qu'il utilise comme déploiement de restauration. Lorsque la restauration commence, le déploiement passe de COMPLETED
à IN_PROGRESS
. Cela signifie que le déploiement n'est pas éligible à une autre annulation tant qu'il n'a pas atteint un COMPLETED
état. Lorsque le disjoncteur du circuit de déploiement ne trouve aucun déploiement à l'état COMPLETED
, il ne lance pas de nouvelles tâches et le déploiement est bloqué.
Lorsque vous créez un service, le planificateur enregistre les tâches qui n'ont pas pu être lancées en deux étapes.
-
Étape 1 - Le planificateur surveille les tâches pour voir si elles passent à l'RUNNINGétat actuel.
-
Succès : le déploiement a une chance de passer à l'COMPLETEDétat car plusieurs tâches ont été transférées vers l'RUNNINGétat. Les critères de défaillance sont ignorés et le disjoncteur passe à l'étape 2.
-
Échec : certaines tâches consécutives n'ont pas été transférées vers l'RUNNINGétat et le déploiement peut passer à l'FAILEDétat.
-
-
Étape 2 - Le déploiement entre dans cette phase lorsqu'il existe au moins une tâche dans l'RUNNINGétat. Le disjoncteur vérifie les bilans de santé des tâches du déploiement en cours d'évaluation. Les contrôles de santé validés sont Elastic Load Balancing, les contrôles de santé des AWS Cloud Map services et les contrôles de santé des conteneurs.
-
Succès : au moins une tâche est en cours d'exécution et les tests de santé ont été validés.
-
Défaillance : les tâches remplacées en raison d'échecs liés aux tests de santé ont atteint le seuil d'échec.
-
Tenez compte des points suivants lorsque vous utilisez la méthode du disjoncteur de déploiement sur un service. EventBridge génère la règle.
-
La réponse
DescribeServices
donne un aperçu de l'état d'un déploiement, lerolloutState
etrolloutStateReason
. Lorsqu'un nouveau déploiement est démarré, il commence avec l'étatIN_PROGRESS
. Lorsque le service atteint un état stable, l'état du déploiement passe àCOMPLETED
. Si le service n'arrive pas à atteindre un état stable et que le disjoncteur de circuit est activé, le déploiement passe à l'étatFAILED
. Un déploiement dans un étatFAILED
ne lance aucune nouvelle tâche. -
Outre les événements de changement d'état du déploiement du service qu'Amazon ECS envoie pour les déploiements qui ont commencé et sont terminés, Amazon envoie ECS également un événement en cas d'échec d'un déploiement avec un disjoncteur activé. Ces événements fournissent des informations sur la raison pour laquelle un déploiement a échoué ou si un déploiement a été démarré en raison d'une restauration. Pour de plus amples informations, veuillez consulter Événements de changement d'état du déploiement du ECS service Amazon.
-
Si un nouveau déploiement est démarré parce qu'un déploiement précédent a échoué et que la restauration a eu lieu, le champ
reason
de l'événement de changement d'état de déploiement de service indique que le déploiement a été démarré en raison d'une restauration. -
Le disjoncteur de déploiement n'est pris en charge que pour les ECS services Amazon qui utilisent le contrôleur de déploiement rolling update (
ECS
). -
Vous devez utiliser la ECS console Amazon, ou AWS CLI lorsque vous utilisez le disjoncteur de déploiement avec l' CloudWatch option. Pour plus d'informations, consultez Créer un service à l'aide de paramètres définis et create-service dans la Référence AWS Command Line Interface .
L'create-service
AWS CLI exemple suivant montre comment créer un service Linux lorsque le disjoncteur de déploiement est utilisé avec l'option de restauration.
aws ecs create-service \ --service-name
MyService
\ --deployment-controller type=ECS
\ --desired-count3
\ --deployment-configuration "deploymentCircuitBreaker={enable=true
,rollback=true
}" \ --task-definitionsample-fargate:1
\ --launch-typeFARGATE
\ --platform-familyLINUX
\ --platform-version1.4.0
\ --network-configuration "awsvpcConfiguration={subnets=[subnet-12344321
],securityGroups=[sg-12344321
],assignPublicIp=ENABLED
}"
Exemple :
Le déploiement 1 est à l'état COMPLETED
.
Le déploiement 2 ne pouvant pas démarrer, le disjoncteur du circuit revient au déploiement 1. Le déploiement 1 passe à l'état IN_PROGRESS
.
Le déploiement 3 démarre et aucun déploiement n'est à l'état COMPLETED
. Le déploiement 3 ne peut donc ni être restauré, ni lancer de tâches.
Seuil d'échec
Le disjoncteur de déploiement calcule la valeur de seuil, puis utilise cette valeur pour déterminer quand passer le déploiement à l'état FAILED
.
Le disjoncteur de déploiement a un seuil minimum de 3 et un seuil maximum de 200. Il utilise les valeurs de la formule suivante pour déterminer l'échec du déploiement.
Minimum threshold <= 0.5 * desired task count
=> maximum threshold
Lorsque le résultat du calcul est supérieur au minimum de 3, mais inférieur au maximum de 200, le seuil de défaillance est défini sur le seuil calculé (arrondi au chiffre supérieur).
Note
Vous ne pouvez modifier aucune des valeurs de seuil.
La surveillance de l'état du déploiement comporte deux étapes.
-
Le disjoncteur de déploiement surveille les tâches qui font partie du déploiement et vérifie les tâches qui se trouvent dans l'état
RUNNING
. Le planificateur ignore les critères d'échec lorsqu'une tâche du déploiement actuel se trouve dans l'étatRUNNING
et passe à l'étape suivante. Lorsque les tâches ne parviennent pas à atteindre l'étatRUNNING
, le disjoncteur de déploiement augmente d'un le nombre d'échecs. Lorsque le nombre d'échecs est égal au seuil, le déploiement est marqué comme étantFAILED
. -
Cette étape est entrée lorsqu'il y a une ou plusieurs tâches dans l'
RUNNING
état. Le disjoncteur de déploiement effectue une surveillance de l'état sur les ressources suivantes pour les tâches du déploiement actuel :-
Equilibreurs de charge Elastic Load Balancing
-
AWS Cloud Map service
-
Contrôles de santé des ECS conteneurs Amazon
Lorsqu'une surveillance de l'état échoue pour la tâche, le disjoncteur de déploiement augmente d'un le nombre d'échecs. Lorsque le nombre d'échecs est égal au seuil, le déploiement est marqué comme étant
FAILED
. -
Le tableau suivant fournit quelques exemples.
Nombre souhaité | Calculs | Seuil |
---|---|---|
1 |
|
3 (la valeur calculée est inférieure au minimum) |
25 |
|
13 (la valeur est arrondie à la valeur supérieure) |
400 |
|
200 |
800 |
|
200 (la valeur calculée est supérieure au maximum) |
Par exemple, lorsque le seuil est de 3, le disjoncteur démarre avec le nombre de défaillances réglé à 0. Lorsqu'une tâche n'atteint pas RUNNING
cet état, le disjoncteur de déploiement augmente le nombre d'échecs d'une unité. Lorsque le nombre d'échecs est égal à 3, le déploiement est marqué commeFAILED
.
Pour des exemples supplémentaires sur l'utilisation de l'option de restauration, consultez Annonce du disjoncteur de ECS déploiement d'Amazon