Application Load Balancers - Elastic Load Balancing

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.

Application Load Balancers

Un équilibreur de charge constitue le point de contact unique pour les clients. Les clients envoient les demandes à l'équilibreur de charge, lequel les envoie aux cibles,telles que les instances EC2, par exemple. Pour configurer votre équilibreur de charge, vous créez des groupes cible et vous enregistrez ensuite les cibles auprès de vos groupes cible. Vous créez également des écouteurs pour rechercher les demandes de connexion des clients, et des règles d'écouteur pour acheminer les demandes des clients vers les cibles dans un ou plusieurs groupes cible.

Pour de plus amples informations, consultez la section Fonctionnement d'Elastic Load Balancing, dans le Guide de l'utilisateur Elastic Load Balancing.

Visualisez vos ressources avec une carte des ressources

La carte des ressources affiche toutes les ressources de votre équilibreur de charge, y compris les relations et les chemins de routage entre elles, dans un format visuel.

Les ressources d'équilibreur de charge suivantes sont visibles dans la carte des ressources :

  • Écouteurs

  • Règles

  • Groupes cibles

  • Cibles

Vous pouvez utiliser la carte des ressources pour comprendre l'architecture de votre équilibreur de charge, voir combien d'écouteurs il possède, quelles règles sont transmises à quels récepteurs et quels groupes cibles acheminent vers quelles cibles.

Vous pouvez également utiliser la carte des ressources pour identifier les configurations indésirables ou incorrectes, ainsi que les cibles malsaines. Vous pouvez sélectionner des ressources dans la carte des ressources, telles que des règles, pour un lien permettant de modifier la configuration de ces ressources.

Pour visualiser les ressources de votre équilibreur de charge
  1. Ouvrez la console Amazon EC2 à l’adresse https://console.aws.amazon.com/ec2/.

  2. Dans le volet de navigation, choisissez Load Balancers (Équilibreurs de charge).

  3. Sélectionnez l'équilibreur de charge.

  4. Sélectionnez l'onglet Carte des ressources pour afficher une visualisation des ressources.

    Naviguer dans la carte des ressources
    • Survolez ou sélectionnez une vignette de ressources pour mettre en évidence les relations entre celle-ci et les autres ressources.

    • Sélectionnez une vignette de ressource pour afficher des informations supplémentaires sur cette ressource.

    • Sélectionnez le nom d'une ressource dans une vignette pour accéder à la page détaillée de cette ressource.

  5. Activez Afficher les détails des ressources pour afficher des informations supplémentaires sur toutes les ressources.

    • conditions de règle : les conditions de chaque règle.

    • résumé de l'état de santé du groupe cible : nombre de cibles enregistrées pour chaque état de santé.

    • état de santé cible : état de santé actuel et description de la cible.

  6. (Facultatif) Sélectionnez une carte cible malsaine pour afficher toutes les cibles actuellement incorrectes et les ressources qui leur sont associées.

  7. (Facultatif) En sélectionnant Exporter, vous pouvez exporter la vue actuelle de la carte des ressources de votre équilibreur de charge d'application au format PDF.

Sous-réseaux pour votre équilibreur de charge

Lorsque vous créez un Application Load Balancer, vous devez activer les zones contenant vos cibles. Pour activer une zone, spécifiez un sous-réseau dans la zone. Elastic Load Balancing crée un nœud d'équilibreur de charge dans chaque zone que vous spécifiez.

Considérations
  • Votre équilibreur de charge est plus efficace si vous vous assurez que chaque zone activée contient au moins une cible enregistrée.

  • Si vous enregistrez des cibles dans une zone mais que vous n'activez pas la zone, ces cibles enregistrées ne reçoivent pas le trafic de l'équilibreur de charge.

  • Si vous activez plusieurs zones pour votre équilibreur de charge, les zones doivent être du même type. Par exemple, vous ne pouvez pas activer à la fois une zone de disponibilité et une zone locale.

  • Vous pouvez spécifier un sous-réseau qui a été partagé avec vous.

Application Load Balancers prennent en charge les types de sous-réseaux suivants.

Sous-réseaux de la zone de disponibilité

Vous devez sélectionner au moins deux sous-réseaux de zone de disponibilité. Les restrictions suivantes s'appliquent :

  • Chaque sous-réseau doit appartenir à une zone de disponibilité différente.

  • Pour que votre équilibreur de charge puisse évoluer correctement, vérifiez que chaque sous-réseau de zone de disponibilité de votre équilibreur de charge dispose d'un bloc d'adresses CIDR avec au moins un masque de bits /27 (par exemple, 10.0.0.0/27) et au moins huit adresses IP libres par sous-réseau. Ces huit adresses IP sont nécessaires pour permettre à l'équilibreur de charge de monter en puissance si nécessaire. Votre équilibreur de charge utilise ces adresses IP pour établir des connexions avec les cibles. Sans eux, votre Application Load Balancer pourrait rencontrer des difficultés lors des tentatives de remplacement de nœuds, ce qui le ferait entrer dans un état d'échec.

    Remarque : si le sous-réseau d'un Application Load Balancers manque d'adresses IP utilisables lors d'une tentative de mise à l'échelle, l'Application Load Balancer fonctionnera avec une capacité insuffisante. Pendant cette période, les anciens nœuds continueront à desservir le trafic, mais la tentative de mise à l'échelle bloquée peut provoquer des erreurs ou des délais d'attente de 5xx lors de la tentative d'établissement d'une connexion.

Sous-réseaux de zone locale

Vous pouvez spécifier un ou plusieurs sous-réseaux de zone locale. Les restrictions suivantes s'appliquent :

  • Vous ne pouvez pas l'utiliser AWS WAF avec l'équilibreur de charge.

  • Vous ne pouvez pas utiliser une fonction Lambda comme cible.

  • Vous ne pouvez pas utiliser les sessions rémanentes ou l'adhérence des applications.

Sous-réseaux Outpost

Vous pouvez spécifier un seul sous-réseau Outpost. Les restrictions suivantes s'appliquent :

  • Vous devez avoir installé et configuré un Outpost dans votre centre de données sur site. Vous devez avoir une connexion réseau fiable entre votre Outpost et sa région AWS . Pour plus d’informations, consultez le Guide de l’utilisateur AWS Outposts.

  • L'équilibreur de charge nécessite deux instances large sur l'Outpost pour les nœuds de l'équilibreur de charge. Les types d'instance pris en charge sont indiqués dans le tableau suivant. L'équilibreur de charge se met à l'échelle selon les besoins, en redimensionnant les nœuds taille par taille (de large à xlarge, puis xlarge à 2xlarge, puis 2xlarge à 4xlarge). Après avoir redimensionné les nœuds à la plus grande taille d'instance, si vous avez besoin de capacité supplémentaire, l'équilibreur de charge ajoute des instances 4xlarge en tant que nœuds d'équilibreur de charge. Si vous ne disposez pas d'une capacité d'instance suffisante ou d'adresses IP disponibles pour mettre à l'échelle l'équilibreur de charge, celui-ci signale un événement à AWS Health Dashboard et l'état de l'équilibreur de charge est active_impaired.

  • Vous pouvez enregistrer des cibles par ID d'instance ou par adresse IP. Si vous enregistrez des cibles dans la AWS région pour l'avant-poste, elles ne sont pas utilisées.

  • Les fonctionnalités suivantes ne sont pas disponibles : fonctions Lambda en tant que cibles, intégration AWS WAF , sessions permanentes, support d'authentification et intégration avec AWS Global Accelerator.

Un Application Load Balancer peut être déployé sur des instances c5/c5d, m5/m5d ou r5/r5d d'un Outpost. Le tableau suivant indique la taille et le volume EBS par type d'instance que l'équilibreur de charge peut utiliser sur un Outpost :

Type et taille de l'instance Volume EBS (Go)
c5/c5d
large 50
xlarge 50
2xlarge 50
4xlarge 100
m5/m5d
large 50
xlarge 50
2xlarge 100
4xlarge 100
r5/r5d
large 50
xlarge 100
2xlarge 100
4xlarge 100

Groupes de sécurité d'équilibreur de charge

Un groupe de sécurité sert de pare-feu pour contrôler le trafic autorisé vers et depuis votre équilibreur de charge. Vous pouvez choisir les ports et protocoles pour autoriser à la fois le trafic entrant et sortant.

Les règles des groupes de sécurité associés à votre équilibreur de charge doivent autoriser le trafic dans les deux sens sur les ports d'écouteur et de surveillance de l'état. Chaque fois que vous ajoutez un écouteur à un équilibreur de charge ou que vous mettez à jour le port de vérification de l'état d'un groupe cible, vous devez passer en revue vos règles de groupe de sécurité pour vérifier qu'elles autorisent le trafic sur le nouveau port dans les deux sens. Pour plus d’informations, consultez Règles recommandées.

États d'un équilibreur de charge

Un équilibreur de charge peut avoir l'un des états suivants :

provisioning

L'équilibreur de charge est en cours de mise en place.

active

L'équilibreur de charge est entièrement mis en place et prêt à acheminer le trafic.

active_impaired

L'équilibreur de charge achemine le trafic mais ne dispose pas des ressources dont il a besoin pour se mettre à l'échelle.

failed

L'équilibreur de charge n'a pas pu être configuré.

Attributs de l'équilibreur de charge

Les attributs de l'équilibreur de charge sont les suivants :

access_logs.s3.enabled

Indique si les journaux d'accès stockés dans Amazon S3 sont activés. L’argument par défaut est false.

access_logs.s3.bucket

Le nom du compartiment Amazon S3 pour les journaux d'accès. Cet attribut est obligatoire si les journaux d'accès sont activés. Pour plus d’informations, consultez Activer les journaux d'accès.

access_logs.s3.prefix

Le préfixe pour l'emplacement dans le compartiment Amazon S3.

client_keep_alive.seconds

La valeur keepalive du client, en secondes. La valeur par défaut est de 3 600 secondes.

deletion_protection.enabled

Indique si la protection contre la suppression est activée. L’argument par défaut est false.

idle_timeout.timeout_seconds

Valeur de délai d'inactivité, en secondes. Le durée par défaut est 60 secondes.

ipv6.deny_all_igw_traffic

Bloque l'accès de la passerelle Internet (IGW) à l'équilibreur de charge, empêchant les accès non prévus à votre équilibreur de charge interne via une passerelle Internet. Il est défini sur false pour les équilibreurs de charge accessibles sur Internet et sur true pour les équilibreurs de charge internes. Cet attribut n'empêche pas l'accès à Internet hors IGW (par exemple, via le peering, AWS Direct Connect Transit Gateway ou). AWS VPN

routing.http.desync_mitigation_mode

Détermine la manière dont l'équilibreur de charge gère les demandes susceptibles de présenter un risque pour la sécurité de votre application. Les valeurs possibles sont monitor, defensive et strictest. L’argument par défaut est defensive.

routing.http.drop_invalid_header_fields.enabled

Indique si les en-têtes HTTP avec des champs d'en-tête non valides sont supprimés par l'équilibreur de charge (true), ou acheminés vers des cibles (false). L’argument par défaut est false. Elastic Load Balancing exige que les noms d'en-têtes HTTP valides soient conformes à l'expression régulière[-A-Za-z0-9]+, comme décrit dans le registre des noms de champs HTTP. Chaque nom est composé de caractères alphanumériques ou traits d'union. Sélectionnez true si vous voulez que les en-têtes HTTP non conformes à ce modèle soient supprimés des demandes.

routing.http.preserve_host_header.enabled

Indique si l'Application Load Balancer doit préserver l'en-tête Host dans la demande HTTP et l'envoyer aux cibles sans aucune modification. Les valeurs possibles sont true et false. La valeur par défaut est false.

routing.http.x_amzn_tls_version_and_cipher_suite.enabled

Indique si les deux en-têtes (x-amzn-tls-version et x-amzn-tls-cipher-suite), qui contiennent des informations sur la version et la suite de chiffrement TLS négociées, sont ajoutés à la requête du client avant de l'envoyer à la cible. L'en-tête x-amzn-tls-version contient des informations sur la version du protocole TLS négociée avec le client, et l'en-tête x-amzn-tls-cipher-suite contient des informations sur la suite de chiffrement négociée avec le client. Les deux en-têtes sont au format OpenSSL. Les valeurs possibles pour l'attribut sont true et false. L’argument par défaut est false.

routing.http.xff_client_port.enabled

Indique si l'en-tête X-Forwarded-For doit conserver le port source utilisé par le client pour se connecter à l'équilibreur de charge. Les valeurs possibles sont true et false. La valeur par défaut est false.

routing.http.xff_header_processing.mode

Vous permet de modifier, de conserver ou de supprimer l'en-tête X-Forward-For dans la requête HTTP avant que l'Application Load Balancer ne l'envoie à la cible. Les valeurs possibles sont append, preserve et remove. L’argument par défaut est append.

  • Si la valeur est append, l'Application Load Balancer ajoute l'adresse IP du client (du dernier saut) à l'en-tête X-Forward-For dans la requête HTTP avant de l'envoyer aux cibles.

  • Si la valeur est preserve, l'Application Load Balancer conserve l'en-tête X-Forward-For dans la requête HTTP et l'envoie aux cibles sans aucune modification.

  • Si la valeur est remove, l'Application Load Balancer supprime l'en-tête X-Forward-For dans la requête HTTP avant de l'envoyer aux cibles.

routing.http2.enabled

Indique si HTTP/2 est activée. L’argument par défaut est true.

waf.fail_open.enabled

Indique s'il faut autoriser un équilibreur de charge AWS WAF activé à acheminer les demandes vers des cibles s'il n'est pas en mesure de les transmettre à. AWS WAF Les valeurs possibles sont true et false. La valeur par défaut est false.

Note

L'attribut routing.http.drop_invalid_header_fields.enabled a été introduit pour offrir une protection contre la désynchronisation HTTP. L'attribut routing.http.desync_mitigation_mode a été ajouté pour fournir une protection plus complète contre la désynchronisation HTTP pour vos applications. Vous n'êtes pas obligé d'utiliser les deux attributs et vous pouvez choisir l'un ou l'autre, en fonction des exigences de votre application.

Type d’adresse IP

Vous pouvez définir les types d'adresses IP que les clients peuvent utiliser pour accéder à vos équilibreurs de charge internes et connectés à Internet.

Voici les types d'adresse IP :

ipv4

Les clients doivent se connecter à l'équilibreur de charge à l'aide d'adresses IPv4 (par exemple, 192.0.2.1)

dualstack

Les clients peuvent se connecter à l'équilibreur de charge à l'aide d'adresses IPv4 (par exemple, 192.0.2.1) et d'adresses  Pv6 (par exemple, 2001:0db8:85a3:0:0:8a2e:0370:7334).

Considérations relatives aux équilibreurs de charge à double pile
  • L'équilibreur de charge communique avec les cibles en fonction du type d'adresse IP du groupe cible.

  • Lorsque vous activez le mode double pile pour l'équilibreur de charge, Elastic Load Balancing fournit un enregistrement DNS AAAA pour l'équilibreur de charge. Les clients qui communiquent avec l'équilibreur de charge à l'aide d'adresses IPv4 résolvent l'enregistrement DNS A. Les clients qui communiquent avec l'équilibreur de charge à l'aide d'adresses IPv6 résolvent l'enregistrement DNS AAAA.

  • L'accès à vos équilibreurs de charge internes à double pile via la passerelle Internet est bloqué pour empêcher tout accès Internet non prévu. Toutefois, cela n'empêche pas l'accès à Internet hors IWG (par exemple via le peering, Transit Gateway ou). AWS Direct Connect AWS VPN

Connexions de l'équilibreur de charge

Lors du traitement d'une demande, l'équilibreur de charge maintient deux connexions : une connexion avec le client et une connexion avec une cible. La connexion entre l'équilibreur de charge et le client est également appelée connexion frontale. La connexion entre l'équilibreur de charge et la cible est également appelée connexion principale.

Délai d'inactivité des connexions

Le délai d'inactivité de la connexion est la période pendant laquelle une connexion client ou cible existante peut rester inactive, sans qu'aucune donnée ne soit envoyée ou reçue, avant que l'équilibreur de charge ne ferme la connexion.

Pour garantir que les opérations longues telles que le téléchargement de fichiers aient le temps de se terminer, envoyez au moins 1 octet de données avant la fin de chaque période d'inactivité et augmentez la durée de la période d'inactivité selon les besoins. Nous vous recommandons également de configurer le délai d'inactivité de votre application afin qu'il soit supérieur au délai d'inactivité configuré pour l'équilibreur de charge. Sinon, si l'application ferme la connexion TCP à l'équilibreur de charge de manière inappropriée, celui-ci peut envoyer une demande à l'application avant qu'elle ne reçoive le paquet indiquant que la connexion est fermée. Si tel est le cas, l'équilibreur de charge envoie une erreur HTTP 502 Bad Gateway au client.

Par défaut, Elastic Load Balancing définit le délai d'inactivité de votre équilibreur de charge à 60 secondes, soit 1 minute. Utilisez la procédure suivante pour définir une valeur de délai d'inactivité différente.

Pour mettre à jour la valeur du délai d'inactivité de la connexion à l'aide de la console
  1. Ouvrez la console Amazon EC2 à l’adresse https://console.aws.amazon.com/ec2/.

  2. Dans le volet de navigation, choisissez Load Balancers (Équilibreurs de charge).

  3. Sélectionnez l'équilibreur de charge.

  4. Dans l'onglet Attributes, choisissez Edit.

  5. Sous Configuration du trafic, entrez une valeur pour le délai d'inactivité de la connexion. La plage valide est comprise entre 1 et 4 000 secondes.

  6. Sélectionnez Enregistrer les modifications.

Pour mettre à jour la valeur du délai d'inactivité à l'aide du AWS CLI

Utilisez la modify-load-balancer-attributescommande avec l'idle_timeout.timeout_secondsattribut.

Durée de conservation du client HTTP

La durée de conservation du client HTTP est la durée maximale pendant laquelle un Application Load Balancer peut maintenir une connexion HTTP persistante avec un client. Une fois la durée de conservation du client HTTP configurée expirée, l'Application Load Balancer accepte une demande et renvoie une réponse qui ferme la connexion en douceur.

Le type de réponse envoyée par l'équilibreur de charge dépend de la version HTTP utilisée par la connexion client. Pour les clients connectés via HTTP 1.x, l'équilibreur de charge envoie un en-tête HTTP contenant le champ. Connection: close Pour les clients connectés via HTTP/2, l'équilibreur de charge envoie une GOAWAY trame.

Par défaut, les équilibreurs de charge d'application définissent la durée de conservation du client HTTP sur 3 600 secondes, soit 1 heure. La durée de conservation du client HTTP ne peut pas être désactivée ou définie en dessous du minimum de 60 secondes, mais vous pouvez augmenter la durée de conservation du client HTTP jusqu'à un maximum de 604 800 secondes, soit 7 jours. L'Application Load Balancer commence la période de conservation du client HTTP lorsqu'une connexion HTTP est initialement établie avec un client. La durée continue de courir lorsqu'il n'y a pas de trafic et n'est pas réinitialisée tant qu'une nouvelle connexion n'est pas établie.

L'Application Load Balancer affecte la durée de conservation du client HTTP une seule fois lors de la connexion initiale. Lors de la mise à jour de la durée de conservation du client HTTP, cela peut entraîner des connexions simultanées avec différentes valeurs de durée de conservation du client HTTP. Les connexions existantes conserveront la valeur de durée keepalive du client HTTP appliquée lors de sa connexion initiale, tandis que toute nouvelle connexion recevra la valeur de durée keepalive mise à jour du client HTTP.

Pour mettre à jour la valeur de la durée de conservation du client à l'aide de la console
  1. Ouvrez la console Amazon EC2 à l’adresse https://console.aws.amazon.com/ec2/.

  2. Dans le volet de navigation, choisissez Load Balancers (Équilibreurs de charge).

  3. Sélectionnez l'équilibreur de charge.

  4. Dans l'onglet Attributes, choisissez Edit.

  5. Sous Configuration du trafic, entrez une valeur pour la durée de conservation du client HTTP. La plage valide est comprise entre 60 et 604 800 secondes.

  6. Sélectionnez Enregistrer les modifications.

Pour mettre à jour la valeur de la durée de conservation du client à l'aide du AWS CLI

Utilisez la modify-load-balancer-attributescommande avec l'client_keep_alive.secondsattribut.

Equilibrage de charge entre zones

Avec les Application Load Balancers, la répartition de charge entre zones est activé par défaut et ne peut pas être modifié au niveau de l'équilibreur de charge. Pour plus d'informations, consultez Équilibrage de charge entre zones dans le Guide de l'utilisateur Elastic Load Balancing.

Il est possible de désactiver la répartition de charge entre zones au niveau du groupe cible. Pour plus d’informations, consultez Désactiver la répartition de charge entre zones.

Deletion protection (Protection contre la suppression)

Pour éviter la suppression accidentelle de votre équilibreur de charge, vous pouvez activer la protection contre la suppression. Par défaut, la protection contre la suppression est désactivée pour votre équilibreur de charge.

Si vous activez la protection contre la suppression de votre équilibreur de charge, vous devez la désactiver pour pouvoir supprimer l'équilibreur de charge.

Pour activer la protection contre la suppression à l'aide de la console
  1. Ouvrez la console Amazon EC2 à l’adresse https://console.aws.amazon.com/ec2/.

  2. Dans le volet de navigation, choisissez Load Balancers (Équilibreurs de charge).

  3. Sélectionnez l'équilibreur de charge.

  4. Dans l'onglet Attributes, choisissez Edit.

  5. Sous Configuration, activez la Protection contre la suppression.

  6. Sélectionnez Enregistrer les modifications.

Pour désactiver la protection contre la suppression à l'aide de la console
  1. Ouvrez la console Amazon EC2 à l’adresse https://console.aws.amazon.com/ec2/.

  2. Dans le volet de navigation, choisissez Load Balancers (Équilibreurs de charge).

  3. Sélectionnez l'équilibreur de charge.

  4. Dans l'onglet Attributes, choisissez Edit.

  5. Sous la page Configuration, désactivez la Protection contre la suppression.

  6. Sélectionnez Enregistrer les modifications.

Pour activer ou désactiver la protection contre la suppression à l'aide du AWS CLI

Utilisez la modify-load-balancer-attributescommande avec l'deletion_protection.enabledattribut.

Mode d'atténuation de désynchronisation

Le mode d'atténuation de désynchronisation protège votre application contre les problèmes dus à la désynchronisation HTTP. L'équilibreur de charge classe chaque demande en fonction de son niveau de menace, autorise les demandes sécurisées, puis atténue les risques comme spécifié par le mode d'atténuation que vous spécifiez. Les modes d'atténuation de désynchronisation sont Moniteur, Défensif et Le plus strict. La valeur par défaut est le mode Défensif, qui fournit une atténuation durable contre la désynchronisation HTTP tout en maintenant la disponibilité de votre application. Vous pouvez passer au mode Le plus strict pour vous assurer que votre application reçoit uniquement les requêtes conformes à la RFC 7230.

La bibliothèque http_desync_guardian analyse les requêtes HTTP pour empêcher les attaques HTTP par désynchronisation. Pour plus d'informations, consultez HTTP Desync Guardian sur. GitHub

Classifications

Les classifications sont les suivantes :

  • Conformité : la requête est conforme à la RFC 7230 et ne présente aucune menace de sécurité connue.

  • Acceptable : la requête n'est pas conforme à la RFC 7230 mais ne présente aucune menace de sécurité connue.

  • Ambiguë : la requête n'est pas conforme à la RFC 7230 mais présente un risque, car divers serveurs web et proxys pourraient la traiter différemment.

  • Sévère : la requête présente un risque de sécurité élevé. L'équilibreur de charge bloque la requête, sert une réponse 400 au client et ferme la connexion client.

Si une requête n'est pas conforme à la RFC 7230, l'équilibreur de charge incrémente la métrique DesyncMitigationMode_NonCompliant_Request_Count. Pour plus d’informations, consultez Métriques Application Load Balancer.

La classification de chaque demande est incluse dans les journaux d'accès de l'équilibreur de charge. Si la demande n'est pas conforme, les journaux d'accès incluent un code de motif de classification. Pour plus d’informations, consultez Motifs de classification.

Modes

Le tableau suivant décrit la façon dont les Application Load Balancers traitent les requêtes en fonction du mode et de la classification.

Classification Mode Moniteur Mode Défensif Mode Le plus strict
Conforme Autorisé Autorisé Autorisé
Acceptable Autorisé Autorisé Bloqué
Ambigu Autorisé Autorisé¹ Bloqué
Sévère Autorisé Bloqué Bloqué

¹ Achemine les requêtes mais ferme les connexions client et cible. Des frais supplémentaires peuvent vous être facturés si votre équilibreur de charge reçoit un grand nombre de demandes ambiguës en mode défensif. En effet, l'augmentation du nombre de nouvelles connexions par seconde contribue aux unités de capacité de l'équilibreur de charge (LCU) utilisées par heure. Vous pouvez utiliser la métrique NewConnectionCount pour comparer la manière dont votre équilibreur de charge établit de nouvelles connexions en mode moniteur et en mode défensif.

Pour mettre à jour le mode d'atténuation de désynchronisation à l'aide de la console
  1. Ouvrez la console Amazon EC2 à l’adresse https://console.aws.amazon.com/ec2/.

  2. Dans le volet de navigation, choisissez Load Balancers (Équilibreurs de charge).

  3. Sélectionnez l'équilibreur de charge.

  4. Dans l'onglet Attributes, choisissez Edit.

  5. Sous Gestion des paquets, pour Mode d'atténuation de la désynchronisation, choisissez Défensif, Plus strict ou Surveiller.

  6. Sélectionnez Enregistrer les modifications.

Pour mettre à jour le mode d'atténuation de la désynchronisation à l'aide du AWS CLI

Utilisez la modify-load-balancer-attributescommande avec l'routing.http.desync_mitigation_modeattribut défini sur monitordefensive, oustrictest.

Préservation de l'en-tête de l'hôte

Lorsque vous activez l'attribut Préserver l'en-tête de l'hôte, Application Load Balancer préserve l'en-tête Host dans la demande HTTP et envoie l'en-tête aux cibles sans aucune modification. Si Application Load Balancer reçoit plusieurs en-têtes Host, il les conserve tous. Les règles de l'écouteur ne sont appliquées qu'au premier en-tête Host reçu.

Par défaut, lorsque l'attribut Préserver l'en-tête de l'hôte n'est pas activé, Application Load Balancer modifie l'en-tête Host de la manière suivante :

Lorsque la préservation de l'en-tête de l'hôte n'est pas activée et que le port de l'écouteur n'est pas un port par défaut : lorsque vous n'utilisez pas les ports par défaut (ports 80 ou 443), nous ajoutons le numéro de port à l'en-tête de l'hôte s'il n'est pas déjà ajouté par le client. Par exemple, l'en-tête Host de la demande HTTP avec Host: www.example.com serait modifié en Host: www.example.com:8080, si le port de l'écouteur n'est pas un port par défaut, tel que 8080.

Lorsque la préservation de l'en-tête de l'hôte n'est pas activée et que le port de l'écouteur est un port par défaut (port 80 ou 443) : pour les ports de l'écouteur par défaut (port 80 ou 443), nous n'ajoutons pas le numéro de port à l'en-tête de l'hôte sortant. Tout numéro de port qui figurait déjà dans l'en-tête de l'hôte entrant est supprimé.

Le tableau suivant présente d'autres exemples de la façon dont les Application Load Balancers traitent les en-têtes d'hôte dans la demande HTTP en fonction du port de l'écouteur.

Port de l'écouteur Exemple de demande En-têtes de l'hôte dans la demande La conservation de l'en-tête de l'hôte est désactivée (comportement par défaut) La conservation de l'en-tête de l'hôte est activée
La demande est envoyée sur l'écouteur HTTP/HTTPS par défaut. GET /index.html HTTP/1.1 Host: example.com example.com example.com example.com
La demande est envoyée sur l'écouteur HTTP par défaut et l'en-tête de l'hôte possède un port (par exemple, 80 ou 443). GET /index.html HTTP/1.1 Host: example.com:80 example.com:80 example.com example.com:80
La demande possède un chemin absolu. GET https://dns_name/index.html HTTP/1.1 Host: example.com example.com dns_name example.com
La demande est envoyée sur un port d'écouteur autre que celui par défaut et l'en-tête de l'hôte possède un port (par exemple, 8080). GET /index.html HTTP/1.1 Host: example.com:8080 example.com example.com:8080 example.com
Pour activer la conservation de l'en-tête de l'hôte
  1. Ouvrez la console Amazon EC2 à l'adresse https://console.aws.amazon.com/ec2/.

  2. Dans le volet de navigation, choisissez Load Balancers.

  3. Sélectionnez l'équilibreur de charge.

  4. Dans l'onglet Attributes, choisissez Edit.

  5. Sous Gestion des paquets, activez Conserver l'en-tête de l'hôte.

  6. Sélectionnez Enregistrer les modifications.

Pour activer la conservation de l'en-tête de l'hôte à l'aide du AWS CLI

Utilisez la modify-load-balancer-attributescommande avec l'routing.http.preserve_host_header.enabledattribut défini surtrue.

Équilibreurs de charge des applications et AWS WAF

Vous pouvez l'utiliser AWS WAF avec votre Application Load Balancer pour autoriser ou bloquer les demandes en fonction des règles d'une liste de contrôle d'accès Web (ACL Web). Pour plus d'informations, consultez Utilisation des ACL web dans le Guide du développeur AWS WAF .

Par défaut, si l'équilibreur de charge ne parvient pas à obtenir de réponse AWS WAF, il renvoie une erreur HTTP 500 et ne transmet pas la demande. Si vous avez besoin que votre équilibreur de charge transmette les demandes aux cibles même s'il est incapable de les contacter AWS WAF, vous pouvez activer AWS WAF l'intégration. Pour vérifier si votre équilibreur de charge s'intègre à AWS WAF, sélectionnez votre équilibreur de charge dans AWS Management Console l'onglet Services intégrés.

ACL Web prédéfinies

Lorsque vous activez AWS WAF l'intégration, vous pouvez choisir de créer automatiquement une nouvelle ACL Web avec des règles prédéfinies. L'ACL Web prédéfinie inclut trois règles AWS gérées qui offrent des protections contre les menaces de sécurité les plus courantes.

Pour activer AWS WAF l'utilisation de la console
  1. Ouvrez la console Amazon EC2 à l’adresse https://console.aws.amazon.com/ec2/.

  2. Dans le volet de navigation, choisissez Load Balancers (Équilibreurs de charge).

  3. Sélectionnez l'équilibreur de charge.

  4. Dans l'onglet Intégrations, développez le AWS Web Application Firewall (WAF) et choisissez Associer une ACL Web WAF.

  5. Sous ACL Web, choisissez Créer automatiquement une ACL Web prédéfinie ou sélectionnez une ACL Web existante.

  6. Sous Action de règle, choisissez Bloquer ou Compter.

  7. Choisissez Confirmer.

Pour activer l'option AWS WAF Fail, ouvrez à l'aide du AWS CLI

Utilisez la modify-load-balancer-attributescommande avec l'waf.fail_open.enabledattribut défini surtrue.