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
- Compte Azure avec un abonnement actif. Si vous n'en avez pas déjà un, vous pouvez en créer un gratuitement.
- Azure CLI.
À 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.
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"
Se connecter à Azure avec Azure CLI.
az login
Créez un groupe de ressources.
az group create --name $RESOURCE_GROUP --location $LOCATION
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.
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.
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
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.
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
Liez l’application conteneur au premier composant serveur Eureka.
az containerapp update \ --name $APP_NAME \ --resource-group $RESOURCE_GROUP \ --bind $EUREKA_COMPONENT_FIRST
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.
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 valeurAssignableScopes
par votre ID d’abonnement.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)
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
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.
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