Partager via


Tutoriel : Créer un cluster de composants serveur Eureka hautement disponible dans Azure Container Apps

Dans ce tutoriel, vous allez apprendre à créer un service Eureka conçu pour rester opérationnel face aux défaillances et à la forte demande. La création d’un service Eureka hautement disponible garantit que le registre des services est toujours disponible pour les clients, quelle que soit la demande.

Pour atteindre le statut de haute disponibilité pour Eureka, il faut relier plusieurs instances de serveur Eureka pour former un cluster. Le cluster fournit des ressources de sorte que si un serveur Eureka tombe en panne, les autres services restent disponibles pour les demandes.

Dans ce tutoriel, vous allez :

  • Créez un composant Eureka Server pour Spring.
  • Liez deux serveurs Eureka pour les composants Spring dans un cluster.
  • Liez des applications aux deux serveurs Eureka pour une découverte de services hautement disponible.

Prérequis

À propos de l’installation

Lors de l’exécution de composants Java managés dans Azure Container Apps, tenez compte des détails suivants :

Article Explication
Étendue Les composants s’exécutent dans le même environnement que l’application conteneur connectée.
Mise à l'échelle Le composant ne peut pas être mis à l’échelle. Les propriétés de mise à l’échelle minReplicas et maxReplicas sont toutes deux définies sur 1.
Ressources L’allocation des ressources de conteneur pour les composants est fixe. Le nombre de cœurs du CPU est de 0,5 et la taille de la mémoire est de 1 Gi.
Tarification La facturation des composants est soumise à des tarifs basés sur la consommation. Les ressources consommées par les composants managés sont facturées aux taux actif/inactif. Vous pouvez supprimer les composants qui ne sont plus utilisés pour arrêter la facturation.
Binding Les applications conteneur se connectent à un composant via une liaison. La liaison injecte les configurations dans les variables d’environnement de l’application conteneur. Une fois la liaison établie, l’application conteneur peut lire les valeurs de configuration à partir des variables d’environnement et se connecter au composant.

Programme d’installation

Procédez comme suit pour créer votre cluster de services Eureka.

  1. Créez des variables qui contiennent des valeurs de configuration de l’application.

    export LOCATION=eastus
    export RESOURCE_GROUP=my-services-resource-group
    export ENVIRONMENT=my-environment
    export EUREKA_COMPONENT_FIRST=eureka01
    export EUREKA_COMPONENT_SECOND=eureka02
    export APP_NAME=sample-service-eureka-client
    export IMAGE="mcr.microsoft.com/javacomponents/samples/sample-service-eureka-client:latest"
    
  2. Se connecter à Azure avec Azure CLI.

    az login
    
  3. Créez un groupe de ressources.

    az group create --name $RESOURCE_GROUP --location $LOCATION
    
  4. Créez votre environnement Container Apps.

    az containerapp env create \
        --name $ENVIRONMENT \
        --resource-group $RESOURCE_GROUP \
        --location $LOCATION
    

Créer un cluster

Ensuite, créez deux instances de serveur Eureka et liez-les pour former un cluster.

  1. Créez deux composants Eureka Server pour Spring.

    az containerapp env java-component eureka-server-for-spring create \
        --environment $ENVIRONMENT \
        --resource-group $RESOURCE_GROUP \
        --name $EUREKA_COMPONENT_FIRST
    
    az containerapp env java-component eureka-server-for-spring create \
        --environment $ENVIRONMENT \
        --resource-group $RESOURCE_GROUP \
        --name $EUREKA_COMPONENT_SECOND
    

Lier des composants

Pour que les serveurs Eureka fonctionnent dans une configuration hautement disponible, ils doivent être liés.

  1. Liez le premier serveur Eureka au deuxième.

    az containerapp env java-component eureka-server-for-spring update \
        --environment $ENVIRONMENT \
        --resource-group $RESOURCE_GROUP \
        --name $EUREKA_COMPONENT_FIRST \
        --bind $EUREKA_COMPONENT_SECOND
    
  2. Liez le deuxième serveur Eureka au premier.

    az containerapp env java-component eureka-server-for-spring update \
        --environment $ENVIRONMENT \
        --resource-group $RESOURCE_GROUP \
        --name $EUREKA_COMPONENT_SECOND \
        --bind $EUREKA_COMPONENT_FIRST
    

Déployer et lier l’application

Avec les composants serveur liés, vous pouvez créer l’application conteneur et la lier aux deux composants Eureka.

  1. Créez l’application conteneur.

    az containerapp create \
        --name $APP_NAME \
        --resource-group $RESOURCE_GROUP \
        --environment $ENVIRONMENT \
        --image $IMAGE \
        --min-replicas 1 \
        --max-replicas 1 \
        --ingress external \
        --target-port 8080
    
  2. Liez l’application conteneur au premier composant serveur Eureka.

    az containerapp update \
        --name $APP_NAME \
        --resource-group $RESOURCE_GROUP \
        --bind $EUREKA_COMPONENT_FIRST 
    
  3. Liez l’application conteneur au deuxième composant serveur Eureka.

    az containerapp update \
        --name $APP_NAME \
        --resource-group $RESOURCE_GROUP \
        --bind $EUREKA_COMPONENT_SECOND
    

Afficher les tableaux de bord

Important

Pour afficher le tableau de bord, vous devez disposer au moins du rôle Microsoft.App/managedEnvironments/write, celui-ci devant être attribué à votre compte sur la ressource d’environnement managé. Vous pouvez soit attribuer explicitement le rôle Owner ou Contributor sur la ressource, soit suivre les étapes pour créer une définition de rôle personnalisé et l’attribuer à votre compte.

  1. Créez la définition de rôle personnalisé.

    az role definition create --role-definition '{
        "Name": "Java Component Dashboard Access",
        "IsCustom": true,
        "Description": "Can access managed Java Component dashboards in managed environments",
        "Actions": [
            "Microsoft.App/managedEnvironments/write"
        ],
        "AssignableScopes": ["/subscriptions/<SUBSCRIPTION_ID>"]
    }'
    

    Veillez à remplacer l’espace réservé entre les crochets <> dans la valeur AssignableScopes par votre ID d’abonnement.

  2. Attribuez le rôle personnalisé à votre compte sur la ressource d’environnement managé.

    Obtenez l’ID de ressource de l’environnement managé.

    export ENVIRONMENT_ID=$(az containerapp env show \
        --name $ENVIRONMENT --resource-group $RESOURCE_GROUP \
        --query id \
        --output tsv)
    
  3. Attribuez le rôle à votre compte.

    Avant d’exécuter cette commande, remplacez l’espace réservé entre les crochets <> par votre ID d’utilisateur(-trice) ou de principal de service.

    az role assignment create \
        --assignee <USER_OR_SERVICE_PRINCIPAL_ID> \
        --role "Java Component Dashboard Access" \
        --scope $ENVIRONMENT_ID
    
  4. Obtenez l’URL du tableau de bord Serveur Eureka pour Spring.

    az containerapp env java-component eureka-server-for-spring show \
        --environment $ENVIRONMENT \
        --resource-group $RESOURCE_GROUP \
        --name $EUREKA_COMPONENT_FIRST \
        --query properties.ingress.fqdn \
        --output tsv
    

    Cette commande retourne l’URL que vous pouvez utiliser pour accéder au tableau de bord Serveur Eureka pour Spring. Dans le tableau de bord, vous pouvez vérifier que la configuration du serveur Eureka se compose de deux réplicas.

    Capture d’écran d’un tableau de bord Eureka Server pour Spring hautement disponible.

Nettoyer les ressources

Les ressources créées dans ce tutoriel ont un effet sur votre facture Azure. Si vous n’allez pas utiliser ces services à long terme, exécutez la commande suivante pour supprimer tout ce qui a été créé dans ce didacticiel.

az group delete --resource-group $RESOURCE_GROUP