Configuration d'Eureka avec ALB sur AWS pour les microservices

Prérequis

  1. Serveur Eureka : Un serveur Eureka fonctionnel pour gérer l'enregistrement et la découverte des services.
  2. Application Spring Boot : Une application intégrant le client Eureka pour s'inscrire au serveur.
  3. ALB : Un Application Load Balancer configuré pour diriger le trafic vers les instances de votre application Spring Boot.

Étapes de configuration

1. Configuration du client Eureka

Votre application Spring Boot doit être configurée pour se connecter au serveur Eureka via le fichier application.yml ou application.properties. Voici un exemple de configuration :

eureka:
  client:
    serviceUrl:
      defaultZone: http://your-eureka-server-url/eureka/
  instance:
    preferIpAddress: true
    nonSecurePortEnabled: false
    securePortEnabled: true
    securePort: 443
    hostname: your-alb-dns-name
    metadataMap:
      instanceId: ${spring.application.name}:${random.value}
server:
  port: 8080

2. Configuraton de l'Application Load Balancer (ALB)

Assurez-vous que votre ALB est bien configuré pour rediriger le trafic vers les instances de votre application Spring Boot. Les étapes typiques incluent :

  1. Création d’un groupe de cibles (target group) contenant vos instances EC2 ou conteneurs.
  2. Configuration d’un écouteur (listener) sur les ports HTTP (80) ou HTTPS (443).
  3. Définition des règles de routage pour transférer les requêtes vers le bon groupe de cibles.

3. Dépendances Spring Cloud AWS

Si vous utilisez Spring Cloud AWS, ajoutez cette dépendance dans votre projet Maven :

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-aws</artifactId>
</dependency>

4. Configuration de l'identifiant unique de l'instance

Pour garantir que chaque instance de service soit unique dans Eureka, configurez un identifiant d’enstance basé sur le nom de l'application et une valeur aléatoire :

eureka:
  instance:
    instanceId: ${spring.application.name}:${random.value}

5. Utilisation du nom DNS de l'ALB

Configurez l'hôte de l'instance Eureka pour utiliser le nom DNS de l'ALB plutôt qu'une adresse IP privée :

eureka:
  instance:
    hostname: your-alb-dns-name
    securePort: 443

6. Exemple complet

Voici une configuration complète dans le fichier application.yml :

spring:
  application:
    name: your-service-name

eureka:
  client:
    serviceUrl:
      defaultZone: http://your-eureka-server-url/eureka/
  instance:
    preferIpAddress: true
    nonSecurePortEnabled: false
    securePortEnabled: true
    securePort: 443
    hostname: your-alb-dns-name
    metadataMap:
      instanceId: ${spring.application.name}:${random.value}

server:
  port: 8080

Résumé

Ces configurations permettent à vos instences Spring Boot de s’enregistrer correctement auprès d’Eureka et de recevoir le trafic via l’ALB AWS. L'utilisation du nom DNS de l’ALB comme nom d’hôte et la génération d’un ID d’instance unique sont essentielles pour assurer une découverte fiable et une scalabilité dynamique des services.

Étiquettes: aws ALB Eureka Spring Boot Microservices

Publié le 30 septembre à 07h45