Comment réaliser le routage basé sur le chemin d'accès sur un Application Load Balancer ?

Dernière mise à jour : 04/05/2022

J'exécute plusieurs microservices derrière mon Application Load Balancer. Je veux rediriger les demandes vers des groupes cibles spécifiques en fonction du chemin d'accès de l'URL.

Brève description

Un Application Load Balancer vous permet de créer un écouteur avec des règles qui redirige les demandes vers des groupes cibles en fonction de l'adresse URL. Cette fonction n'est pas disponible pour les autres types d'équilibreurs de charge, tels que Classic Load Balancer, Network Load Balancer et Gateway Load Balancer. Les règles de modèle de chemin d'accès sont appliquées uniquement au chemin d'accès de l'URL et non aux paramètres de requête de l'URL. Pour plus d'informations sur les modèles de chemin d'accès, consultez Conditions de chemin d'accès.

Pour établir un routage basé sur le chemin d'accès sur votre Application Load Balancer, procédez comme suit :

  1. Créez un groupe cible.
  2. Configurez les règles de l'écouteur.

Avant de créer les groupes cibles, assurez-vous que les conditions préalables suivantes sont remplies :

Solution

Supposons que vous avez deux services, le service A et le service B, avec des applications s'exécutant sur ces services sur le port 80. Par exemple, le service A exécute une application sur le chemin d'accès /svcA, et le service B exécute une application sur le chemin d'accès /svcB.

Création d'un groupe cible

Une fois vos instances créées, enregistrez-les auprès d'un groupe cible. En fonction des règles de l'écouteur configurées sur l'équilibreur de charge, les demandes sont redirigées vers les cibles enregistrées en utilisant le port et le protocole que vous avez spécifiés pour le groupe cible. Toutefois, vous pouvez remplacer les informations de port lorsque vous enregistrez individuellement les cibles. Pour plus d'informations, consultez Création d'un groupe cible.

Par exemple, supposons que vous créez deux groupes cibles avec Protocole comme HTTP et Port comme 80, chacun avec une application déployée. Par exemple, vous enregistrez l'instance EC2 qui exécute le service A avec target-group-A. Pour ce groupe cible, vous pouvez définir HealthCheckProtocol comme HTTP et HealthCheckPath comme /svcA.

Vous enregistrez l'instance EC2 qui exécute le service B avec target-group-B. Pour ce groupe cible, vous pouvez définir HealthCheckProtocol comme HTTP et HealthCheckPath comme /svcB.

Vous pouvez ajouter ou supprimer des cibles à vos groupes cibles à tout moment. Pour plus d'informations, consultez Enregistrement de cibles avec votre groupe cible.

Après avoir spécifié un groupe cible dans une règle pour un écouteur, l'équilibreur de charge surveille en permanence l'état de toutes les cibles enregistrées avec le groupe cible qui se trouvent dans la zone de disponibilité activée pour l'équilibreur de charge. L'équilibreur de charge achemine les demandes vers les cibles enregistrées qui sont en bonne état. Pour plus d'informations, consultez Surveillances de l'état de vos groupes cibles.

Configuration des règles de l'écouteur

Lorsque vous créez un écouteur pour un Application Load Balancer, vous pouvez définir une ou plusieurs règles en plus de la règle par défaut. Une règle se compose d'une priorité, d'une action et d'une ou plusieurs conditions. Vous ne pouvez pas définir de conditions pour la règle par défaut. Si les conditions d'aucune des règles par défaut ne sont remplies, l'action de la règle par défaut est exécutée.

Pour en savoir plus sur la priorité des règles, consultez Réorganisation des règles.

Pour en savoir plus sur les actions de règle, consultez Types d'actions de règle.

Pour en savoir plus sur les conditions de règle, consultez Types de conditions de règle.

Pour implémenter le routage basé sur le chemin d'accès sur un Application Load Balancer, vous devez configurer des règles de l'écouteur. Vous devez configurer une règle pour chaque modèle de chemin d'accès en fonction duquel vous voulez acheminer vos demandes.

Par exemple :

Règle 1 de l'écouteur : si le chemin d'accès de l'URL de votre demande contient la chaîne /svcA, redirigez la demande vers target-group-A. Cela est dû au fait que target-group-A comprend le service A qui exécute une application sur le chemin d'accès donné.

Règle 2 de l'écouteur : si le chemin d'accès de l'URL de votre demande contient la chaîne /svcB, redirigez cette demande vers target-group-B. Cela est dû au fait que target-group-B comprend le service B qui exécute une application sur le chemin d'accès donné.

Pour créer un nouvel écouteur HTTP, consultez Création d'un écouteur HTTP.

Pour créer un nouvel écouteur HTTPS, consultez Création d'un écouteur HTTPS.

Pour mettre à jour les règles de l'écouteur avec des conditions et des actions, procédez comme suit :

  1. Ouvrez la console Amazon EC2.
  2. Dans le panneau de navigation, sous Load Balancing (Répartition de charge), choisissez Load Balancers (Équilibreurs de charges).
  3. Sélectionnez l'équilibreur de charge, puis l'onglet Listeners (Écouteurs).
  4. Pour mettre à jour l'écouteur, choisissez View/edit rules (Afficher/modifier les règles).
  5. Choisissez l'icône (le signe plus) Add rules (Ajouter des règles) dans la barre de menus. Cela ajoute des icônes Insert Rule (Insérer une règle) aux endroits où vous pouvez insérer une règle dans l'ordre de priorité.
  6. Choisissez l'une des icônes Insert Rule (Insérer une règle) ajoutées à l'étape précédente.
  7. Pour ajouter une règle basée sur le chemin d'accès pour /svcA, choisissez Add condition, Path (Ajouter une condition, Chemin d'accès), puis saisissez le modèle de chemin d'accès /svcA. Pour enregistrer la condition, choisissez l'icône en forme de coche.
  8. Pour ajouter une action de redirection, choisissez Add action, Forward to (Ajouter une action, Rediriger vers), puis choisissez le groupe cible target-group-A.
  9. Choisissez Save (Enregistrer).

Répétez les étapes précédentes pour le chemin d'accès /svcB avec les modifications suivantes :

  • Pour l'étape 6, saisissez le modèle de chemin d'accès /svcB.
  • Pour l'étape 7, choisissez le groupe cible target-group-B.

Pour plus d'informations, consultez Règles de l'écouteur pour votre Application Load Balancer.

Remarque : les règles de routage basées sur le chemin d'accès recherchent une correspondance exacte. Dans cet exemple, le routage basé sur le chemin d'accès utilise les définitions de chemin d'accès /svcA et /svcB. Si votre application exige que les demandes soient acheminées plus loin dans ces chemins d'accès, par exemple, /svcA/doc ou /svcB/doc, incluez un caractère générique lorsque vous écrivez la condition pour la règle de routage basé sur le chemin d'accès. Utilisez des modèles de chemin d'accès similaires à /svcA* ou /svcB* pour vous assurer que tous les documents se trouvant sur ces chemins d'accès sont pris en compte lors du routage des demandes.

Test du routage basé sur le chemin d'accès

Pour tester ce routage, copiez le nom DNS de votre Application Load Balancer dans un navigateur Web et ajoutez le chemin d'accès URL /svcA ou /svcB. Lorsque l'écouteur de l'Application Load Balancer reçoit la demande, il la redirige vers le groupe cible approprié en fonction de la condition du chemin d'accès.

Par exemple, supposons que le nom DNS de votre Application Load Balancer soit alb-demo-1234567890.us-west-2.elb.amazonaws.com :

  • http://alb-demo-1234567890.us-west-2.elb.amazonaws.com/svcA doit retourner le service A.
  • http://alb-demo-1234567890.us-west-2.elb.amazonaws.com/svcB doit retourner le service B.

Avec le routage basé sur le chemin d'accès, votre Application Load Balancer vous permet d'héberger plusieurs microservices derrière un seul équilibreur de charge à l'aide de règles d'écouteurs et de groupes cibles. Vous pouvez ainsi configurer des règles complexes pour acheminer les demandes des clients vers vos applications. Outre les règles basées sur le chemin d'accès, vous pouvez également acheminer les demandes vers des applications particulières en fonction de l'en-tête de l'hôte, de l'en-tête de l'agent utilisateur et des valeurs des paramètres de la requête. Pour plus d'informations, consultez Routage avancé des demandes pour AWS Application Load Balancers.