Ressources Application Load Balancer pour les déploiements bleu/vert
Pour utiliser les Application Load Balancer avec les déploiements bleu/vert Amazon ECS, vous devez configurer des ressources spécifiques qui permettent le routage du trafic entre les révisions de service bleues et vertes.
Groupes cibles
Pour les déploiements bleu/vert avec Elastic Load Balancing, vous devez créer deux groupes cibles :
-
Un groupe cible principal pour la révision de service bleue (trafic de production actuel)
-
Un autre groupe cible pour la révision de service verte (nouvelle version)
Les deux groupes cibles doivent être configurés avec les paramètres suivants :
-
Type de cible :
IP(pour Fargate ou EC2 en mode réseauawsvpc) -
Protocole :
HTTP(ou le protocole utilisé par votre application) -
Port : port sur lequel votre application écoute (généralement
80pour le protocole HTTP) -
VPC : le même VPC que vos tâches Amazon ECS
-
Paramètres de surveillance de l’état : configurés pour vérifier correctement l’état de votre application
Lors d’un déploiement bleu/vert, Amazon ECS enregistre automatiquement les tâches auprès du groupe cible approprié en fonction de l’étape de déploiement.
Exemple Création de groupes cibles pour un Application Load Balancer
Les commandes CLI suivantes créent deux groupes cibles à utiliser avec un Application Load Balancer dans un déploiement bleu/vert :
aws elbv2 create-target-group \ --nameblue-target-group\ --protocol HTTP \ --port 80 \ --vpc-idvpc-abcd1234\ --target-type ip \ --health-check-path / \ --health-check-protocol HTTP \ --health-check-interval-seconds 30 \ --health-check-timeout-seconds 5 \ --healthy-threshold-count 2 \ --unhealthy-threshold-count 2 aws elbv2 create-target-group \ --namegreen-target-group\ --protocol HTTP \ --port 80 \ --vpc-idvpc-abcd1234\ --target-type ip \ --health-check-path / \ --health-check-protocol HTTP \ --health-check-interval-seconds 30 \ --health-check-timeout-seconds 5 \ --healthy-threshold-count 2 \ --unhealthy-threshold-count 2
Application Load Balancer
Vous devez créer un Application Load Balancer avec la configuration suivante :
-
Schéma : connecté à Internet ou interne, selon vos besoins
-
Type d’adresse IP : IPv4
-
VPC : le même VPC que vos tâches Amazon ECS
-
Sous-réseaux : au moins deux sous-réseaux dans des zones de disponibilité différentes
-
Groupes de sécurité : groupe de sécurité qui autorise le trafic sur les ports de l’écouteur
Le groupe de sécurité attaché à l’Application Load Balancer doit disposer d’une règle sortante qui autorise le trafic vers le groupe de sécurité associé à vos tâches Amazon ECS.
Exemple Création d'un équilibreur de charge Application Load Balancer
Les commandes CLI suivantes créent un Application Load Balancer pour une utilisation dans un déploiement bleu/vert :
aws elbv2 create-load-balancer \ --namemy-application-load-balancer\ --type application \ --security-groupssg-abcd1234\ --subnetssubnet-12345678subnet-87654321
Écouteurs et règles
Pour les déploiements bleu/vert, vous devez configurer des écouteurs sur votre Application Load Balancer :
-
Écouteur de production : gère le trafic de production (généralement sur le port 80 ou 443)
-
Transfère initialement le trafic au groupe cible principal (révision de service bleue)
-
Après le déploiement, transfert le trafic vers le groupe cible alternatif (révision de service verte)
-
-
Écouteur de test (facultatif) : gère le trafic de test pour valider la révision de service verte avant de passer au trafic de production.
-
Peut être configuré sur un autre port (par exemple, 8080 ou 8443)
-
Transfère le trafic vers le groupe cible alternatif (révision de service verte) pendant les tests
-
Lors d’un déploiement bleu/vert, Amazon ECS met automatiquement à jour les règles d’écoute pour acheminer le trafic vers le groupe cible approprié en fonction de la phase de déploiement.
Exemple Création d’un écouteur de production
La commande CLI suivante crée un écouteur de production sur le port 80 qui transmet le trafic au groupe cible principal (bleu) :
aws elbv2 create-listener \ --load-balancer-arnarn:aws:elasticloadbalancing:region:123456789012:loadbalancer/app/my-application-load-balancer/abcdef123456\ --protocol HTTP \ --port 80 \ --default-actions Type=forward,TargetGroupArn=arn:aws:elasticloadbalancing:region:123456789012:targetgroup/blue-target-group/abcdef123456
Exemple Création d’un écouteur de test
La commande CLI suivante crée un écouteur de test sur le port 8080 qui transfère le trafic vers le groupe cible alternatif (vert) :
aws elbv2 create-listener \ --load-balancer-arnarn:aws:elasticloadbalancing:region:123456789012:loadbalancer/app/my-application-load-balancer/abcdef123456\ --protocol HTTP \ --port 8080 \ --default-actions Type=forward,TargetGroupArn=arn:aws:elasticloadbalancing:region:123456789012:targetgroup/green-target-group/ghijkl789012
Exemple Création d’une règle d’écoute pour le routage basé sur le chemin
La commande CLI suivante crée une règle qui transmet le trafic d’un chemin spécifique au groupe cible vert à des fins de test :
aws elbv2 create-rule \ --listener-arnarn:aws:elasticloadbalancing:region:123456789012:listener/app/my-application-load-balancer/abcdef123456/ghijkl789012\ --priority 10 \ --conditions Field=path-pattern,Values='/test/*' \ --actions Type=forward,TargetGroupArn=arn:aws:elasticloadbalancing:region:123456789012:targetgroup/green-target-group/ghijkl789012
Exemple Création d’une règle d’écoute pour le routage basé sur l’en-tête
La commande CLI suivante crée une règle qui transfère le trafic avec un en-tête spécifique vers le groupe cible vert à des fins de test :
aws elbv2 create-rule \ --listener-arnarn:aws:elasticloadbalancing:region:123456789012:listener/app/my-application-load-balancer/abcdef123456/ghijkl789012\ --priority 20 \ --conditions Field=http-header,HttpHeaderConfig='{Name=X-Environment,Values=[test]}' \ --actions Type=forward,TargetGroupArn=arn:aws:elasticloadbalancing:region:123456789012:targetgroup/green-target-group/ghijkl789012
Configuration du service
Vous devez disposer des autorisations nécessaires pour autoriser Amazon ECS à gérer les ressources de l’équilibreur de charge dans vos clusters en votre nom. Pour de plus amples informations, consultez Rôle IAM d’infrastructure Amazon ECS pour les équilibreurs de charge.
Lorsque vous créez ou mettez à jour un service Amazon ECS pour des déploiements bleu/vert avec Elastic Load Balancing, vous devez spécifier la configuration suivante.
Remplacez chaque saisie utilisateur par vos valeurs.
Les principaux composants de cette configuration sont les suivants :
-
targetGroupArn: l’ARN du groupe cible principal (révision de service bleue). -
alternateTargetGroupArn: l’ARN du groupe cible alternatif (révision de service verte). -
productionListenerRule: l’ARN de la règle d’écoute du trafic de production. -
roleArn: l’ARN du rôle qui permet à Amazon ECS de gérer les ressources Elastic Load Balancing. -
strategy: l’défini surBLUE_GREENpour activer les déploiements bleu/vert. -
bakeTimeInMinutes: la durée pendant laquelle les révisions de service bleues et vertes se déroulent simultanément après le transfert du trafic de production. -
TestListenerRule: l’ARN de la règle d’écoute du trafic de test. Ce paramètre est facultatif.
{ "loadBalancers": [ { "targetGroupArn": "arn:aws:elasticloadbalancing:region:123456789012:targetgroup/primary-target-group/abcdef123456", "containerName": "container-name", "containerPort": 80, "advancedConfiguration": { "alternateTargetGroupArn": "arn:aws:elasticloadbalancing:region:account-id:targetgroup/alternate-target-group/ghijkl789012", "productionListenerRule": "arn:aws:elasticloadbalancing:region:account-id:listener-rule/app/load-balancer-name/abcdef123456/listener/ghijkl789012/rule/mnopqr345678", "roleArn": "arn:aws:iam::123456789012:role/ecs-elb-role" } } ], "deploymentConfiguration": { "strategy": "BLUE_GREEN", "maximumPercent": 200, "minimumHealthyPercent": 100, "bakeTimeInMinutes": 5 } }
Flux de trafic pendant le déploiement
Lors d’un déploiement bleu/vert avec Elastic Load Balancing, le trafic circule dans le système comme suit :
-
État initial : tout le trafic de production est acheminé vers le groupe cible principal (révision de service bleue).
-
Déploiement de la révision de service verte : Amazon ECS déploie les nouvelles tâches et les enregistre auprès du groupe cible alternatif.
-
Trafic de test : si un écouteur de test est configuré, le trafic de test est acheminé vers le groupe cible alternatif pour valider la révision de service verte.
-
Transfert du trafic de production : Amazon ECS met à jour la règle d’écoute de production pour acheminer le trafic vers le groupe cible alternatif (révision de service verte).
-
Durée de l’intégration : durée pendant laquelle les révisions de service bleues et vertes sont exécutées simultanément après le transfert du trafic de production.
-
Achèvement : après un déploiement réussi, la révision de service bleue est résiliée.
Si des problèmes sont détectés lors du déploiement, Amazon ECS peut automatiquement procéder à une restauration en redirigeant le trafic vers le groupe cible principal (révision de service bleue).