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

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.

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

Pour utiliser un Network Load Balancer avec les blue/green déploiements 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 :

  • PRÉ_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 blue/green déploiements avec un Network Load Balancer, vous devez créer deux groupes cibles :

  • Un groupe cible principal pour la révision du service bleu (trafic de production actuel)

  • Un autre groupe cible pour la révision du service écologique (nouvelle révision du service)

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

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

  • 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 vérification de l'état : configurés pour vérifier correctement l'état de santé de votre application

    Pour les vérifications 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 bilans de HTTP/HTTPS santé, le Network Load Balancer envoie une HTTP/HTTPS demande à la cible et vérifie la réponse.

Au cours d'un blue/green déploiement, 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 le cadre d'un blue/green déploiement :

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 équilibreurs de charge d'application, les équilibreurs de charge réseau 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 du récepteur.

Exemple Créer un Network Load Balancer

La commande AWS CLI suivante crée un Network Load Balancer à utiliser dans le cadre d'un blue/green déploiement :

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

Considérations relatives à l'utilisation du NLB dans le cadre de déploiements blue/green

Lorsque vous utilisez un Network Load Balancer pour les blue/green déploiements, tenez compte des points suivants :

  • Fonctionnement de couche 4 : les équilibreurs de charge réseau 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.

  • Contrôles de santé : les contrôles de santé de Network Load Balancer sont limités aux protocoles TCP, HTTP ou HTTPS. Pour les vérifications 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 équilibreurs de charge réseau 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 équilibreurs de charge réseau 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 équilibreurs de charge réseau 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 blue/green déploiements 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 du service bleu)

    • Après le déploiement, transfert le trafic vers le groupe cible alternatif (révision du service écologique)

  • Écouteur de test (obligatoire) : gère le trafic de test pour valider la révision du service écologique avant de transférer le trafic de production

    • Peut être configuré sur un port différent (par exemple, 8080 ou 8443)

    • Transfère le trafic vers le groupe cible alternatif (révision du service écologique) pendant les tests

Contrairement aux équilibreurs de charge d'application, les équilibreurs de charge réseau 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 le user-input 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, veuillez consulter Rôle IAM de l'infrastructure Amazon ECS pour les équilibreurs de charge.

Lorsque vous créez ou mettez à jour un service Amazon ECS pour blue/green des déploiements avec un Network Load Balancer, vous devez spécifier la configuration suivante :

Remplacez le user-input par vos valeurs.

Les principaux composants de cette configuration sont les suivants :

  • targetGroupArn: ARN du groupe cible principal (révision du service bleu)

  • alternateTargetGroupArn: L'ARN du groupe cible alternatif (révision du service vert)

  • productionListenerRule: l'ARN de l'écouteur pour le trafic de production

  • testListenerRule: (Facultatif) L'ARN de l'écouteur pour le 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 pour activer BLUE_GREEN les blue/green déploiements

  • bakeTimeInMinutes: le temps d'attente après le déploiement de la révision du service écologique avant de transférer le 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 blue/green déploiement 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 du service bleu).

  2. Déploiement de la révision du service écologique : 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 du service vert.

  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 du service vert).

  5. Temps de cuisson : durée pendant laquelle les révisions du service bleu et vert sont exécutées simultanément après le déplacement du trafic de production.

  6. Achèvement : Après un déploiement réussi, la révision du service bleu est interrompue.

Si des problèmes sont détectés lors du déploiement, Amazon ECS peut automatiquement revenir en arrière en redirigeant le trafic vers le groupe cible principal (révision du service bleu).