Ressources Network Load Balancer pour les déploiements bleu/vert Amazon ECS - Amazon Elastic Container Service

Ressources Network Load Balancer pour les déploiements bleu/vert Amazon ECS

Pour utiliser les Network 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. Cette section explique les composants requis et leur configuration.

Lorsque votre configuration inclut un Network Load Balancer, Amazon ECS ajoute un délai de 10 minutes aux étapes du cycle de vie suivantes :

  • PRE_SCALE_UP

  • TEST_TRAFFIC_SHIFT

  • PRODUCTION_TRAFFIC_SHIFT

Ce délai est à l’origine des problèmes de synchronisation du Network Load Balancer, qui peuvent entraîner une inadéquation entre les pondérations de trafic configurées et le routage réel du trafic dans le plan de données.

Groupes cibles

Pour les déploiements bleu/vert avec un Network Load Balancer, 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 révision de service)

Les deux groupes cibles doivent être configurés avec les paramètres suivants :

  • Type de cible : ip (pour Fargate ou EC2 en mode réseau awsvpc)

  • Protocole : TCP (ou le protocole utilisé par votre application)

  • Port : port sur lequel votre application écoute (généralement 80 pour 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

    Pour les surveillances de l’état du protocole TCP, le Network Load Balancer établit une connexion TCP avec la cible. Si la connexion est réussie, la cible est considérée comme saine.

    Pour les surveillances de l’état HTTP/HTTPS, le Network Load Balancer envoie une requête HTTP/HTTPS à la cible et vérifie la réponse.

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 Network Load Balancer

Les commandes AWS CLI suivantes créent deux groupes cibles à utiliser avec un Network Load Balancer dans un déploiement bleu/vert :

aws elbv2 create-target-group \ --name blue-target-group \ --protocol TCP \ --port 80 \ --vpc-id vpc-abcd1234 \ --target-type ip \ --health-check-protocol TCP aws elbv2 create-target-group \ --name green-target-group \ --protocol TCP \ --port 80 \ --vpc-id vpc-abcd1234 \ --target-type ip \ --health-check-protocol TCP

Network Load Balancer

Vous devez créer un Network 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

Contrairement aux Application Load Balancer, les Network Load Balancer fonctionnent au niveau de la couche transport (couche 4) et n’utilisent pas de groupes de sécurité. Vous devez plutôt vous assurer que les groupes de sécurité associés à vos tâches Amazon ECS autorisent le trafic provenant du Network Load Balancer sur les ports de l’écouteur.

Exemple Créer un Network Load Balancer

Les commandes AWS CLI suivantes créent un Network Load Balancer pour une utilisation dans un déploiement bleu/vert :

aws elbv2 create-load-balancer \ --name my-network-load-balancer \ --type network \ --subnets subnet-12345678 subnet-87654321

Considérations relatives à l’utilisation d’un NLB avec les déploiements bleu/vert

Lorsque vous utilisez un Network Load Balancer pour des déploiements bleu/vert, prenez en compte les éléments suivants :

  • Fonctionnement de couche 4 : les Network Load Balancer fonctionnent au niveau de la couche transport (couche 4) et n’inspectent pas le contenu de la couche application (couche 7). Cela signifie que vous ne pouvez pas utiliser les en-têtes ou les chemins HTTP pour les décisions de routage.

  • Surveillance de l’état : les surveillances de l’état du Network Load Balancer sont limitées aux protocoles TCP, HTTP ou HTTPS. Pour les surveillances de l’état du protocole TCP, le Network Load Balancer vérifie uniquement que la connexion peut être établie.

  • Préservation de la connexion : les Network Load Balancer préservent l’adresse IP source du client, ce qui peut être utile à des fins de sécurité et de journalisation.

  • Adresses IP statiques : les Network Load Balancer fournissent des adresses IP statiques pour chaque sous-réseau, ce qui peut être utile pour les listes blanches ou lorsque les clients doivent se connecter à une adresse IP fixe.

  • Trafic de test : étant donné que les Network Load Balancer ne prennent pas en charge le routage basé sur le contenu, le trafic de test doit être envoyé vers un port différent du trafic de production.

Écouteurs et règles

Pour les déploiements bleus/verts avec un Network Load Balancer, vous devez configurer des écouteurs :

  • É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 (obligatoire) : 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

Contrairement aux Application Load Balancer, les Network Load Balancer ne prennent pas en charge les règles de routage basées sur le contenu. Au lieu de cela, le trafic est acheminé en fonction du port et du protocole de l’écouteur.

Les commandes AWS CLI suivantes créent des écouteurs de production et de test pour un Network Load Balancer :

Remplacez chaque saisie utilisateur par vos valeurs.

aws elbv2 create-listener \ --load-balancer-arn arn:aws:elasticloadbalancing:region:123456789012:loadbalancer/net/my-network-lb/1234567890123456 \ --protocol TCP \ --port 80 \ --default-actions Type=forward, TargetGroupArn=arn:aws:elasticloadbalancing:region:123456789012:targetgroup/blue-target-group/1234567890123456 aws elbv2 create-listener \ --load-balancer-arn arn:aws:elasticloadbalancing:region:123456789012:loadbalancer/net/my-network-lb/1234567890123456 \ --protocol TCP \ --port 8080 \ --default-actions Type=forward, TargetGroupArn=arn:aws:elasticloadbalancing:region:123456789012:targetgroup/green-target-group/1234567890123456

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 un Network Load Balancer, 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 l’écouteur du trafic de production.

  • testListenerRule : (facultatif) l’ARN de l’écouteur du trafic de test

  • roleArn : l’ARN du rôle qui permet à Amazon ECS de gérer les ressources Network Load Balancer

  • strategy : défini sur BLUE_GREEN pour activer les déploiements bleu/vert

  • bakeTimeInMinutes : la durée d’attente après le déploiement de la révision de service verte avant de passer au trafic de production

{ "loadBalancers": [ { "targetGroupArn": "arn:aws:elasticloadbalancing:region:123456789012:targetgroup/blue-target-group/1234567890123456", "containerName": "container-name", "containerPort": 80, "advancedConfiguration": { "alternateTargetGroupArn": "arn:aws:elasticloadbalancing:region:123456789012:targetgroup/green-target-group/1234567890123456", "productionListenerRule": "arn:aws:elasticloadbalancing:region:123456789012:listener/net/my-network-lb/1234567890123456/1234567890123456", "testListenerRule": "arn:aws:elasticloadbalancing:region:123456789012:listener/net/my-network-lb/1234567890123456/2345678901234567", "roleArn": "arn:aws:iam::123456789012:role/ecs-nlb-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 un Network Load Balancer, le trafic circule dans le système comme suit :

  1. État initial : tout le trafic de production est acheminé vers le groupe cible principal (révision de service bleue).

  2. 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.

  3. 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.

  4. Transfert du trafic de production : Amazon ECS met à jour l’écouteur de production pour acheminer le trafic vers le groupe cible alternatif (révision de service verte).

  5. 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.

  6. 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).