Esercitazione: creare un cluster di componenti server Eureka a disponibilità elevata in App contenitore di Azure
In questa esercitazione si apprenderà a creare un servizio Eureka progettato per rimanere operativo in caso di errori e domanda elevata. La creazione di un servizio Eureka a disponibilità elevata garantisce che il registro dei servizi sia sempre disponibile per i client, indipendentemente dalla domanda.
Il raggiungimento dello stato di disponibilità elevata per Eureka include il collegamento di più istanze del server Eureka insieme alla creazione di un cluster. Il cluster fornisce risorse in modo che, in caso di errore di un server Eureka, gli altri servizi rimangano disponibili per le richieste.
In questa esercitazione:
- Creare un server Eureka per i componenti Spring.
- Associare due server Eureka per i componenti Spring in un cluster.
- Associare le applicazioni a entrambi i server Eureka per un'individuazione dei servizi a disponibilità elevata.
Prerequisiti
- Un account Azure con una sottoscrizione attiva. Se non ne hai già uno, puoi crearne uno gratuitamente.
- Interfaccia della riga di comando di Azure.
Considerazioni
Quando si eseguono componenti Java gestiti in App contenitore di Azure, tenere presenti i dettagli seguenti:
Articolo | Spiegazione |
---|---|
Ambito | I componenti vengono eseguiti nello stesso ambiente dell'app contenitore connessa. |
Scalabilità | Il componente non può essere ridimensionato. Le proprietà di ridimensionamento minReplicas e maxReplicas sono entrambe impostate su 1 . |
Risorse | L'allocazione delle risorse del contenitore per i componenti è fissa. Il numero di core CPU è 0,5 e la dimensione della memoria è 1 Gi. |
Prezzi | La fatturazione dei componenti rientra nei prezzi basati sul consumo. Le risorse utilizzate dai componenti gestiti vengono fatturate in base alle tariffe attive/inattive. È possibile eliminare i componenti che non sono più in uso per interrompere la fatturazione. |
Binding | Le app contenitore si connettono a un componente tramite un'associazione. Le associazioni inseriscsono le configurazioni nelle variabili di ambiente dell'app contenitore. Dopo aver stabilito un'associazione, l'app contenitore può leggere i valori di configurazione dalle variabili di ambiente e connettersi al componente. |
Attrezzaggio
Usare la procedura seguente per creare il proprio cluster di servizi Eureka.
Creare variabili che contengono valori di configurazione dell'applicazione.
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"
Accedere ad Azure con l'interfaccia della riga di comando di Azure.
az login
Creare un gruppo di risorse.
az group create --name $RESOURCE_GROUP --location $LOCATION
Creare l'ambiente App contenitore.
az containerapp env create \ --name $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --location $LOCATION
Creare un cluster
Creare quindi due istanze del server Eureka e collegarle insieme come un cluster.
Creare due componenti Eureka Server per 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
Associare i componenti tra loro
Affinché i server Eureka funzionino in una configurazione a disponibilità elevata, devono essere collegati tra loro.
Associare il primo server Eureka al secondo.
az containerapp env java-component eureka-server-for-spring update \ --environment $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --name $EUREKA_COMPONENT_FIRST \ --bind $EUREKA_COMPONENT_SECOND
Associare il secondo server Eureka al primo.
az containerapp env java-component eureka-server-for-spring update \ --environment $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --name $EUREKA_COMPONENT_SECOND \ --bind $EUREKA_COMPONENT_FIRST
Distribuire e associare l'applicazione
Collegando tra loro i componenti del server, è possibile creare l'app contenitore e associarla ai due componenti Eureka.
Creare l'app contenitore.
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
Associare l'app contenitore al primo componente server Eureka.
az containerapp update \ --name $APP_NAME \ --resource-group $RESOURCE_GROUP \ --bind $EUREKA_COMPONENT_FIRST
Associare l'app contenitore al secondo componente server Eureka.
az containerapp update \ --name $APP_NAME \ --resource-group $RESOURCE_GROUP \ --bind $EUREKA_COMPONENT_SECOND
Visualizzare i dashboard
Importante
Per visualizzare il dashboard, è necessario che all'account sia assegnato almeno il ruolo Microsoft.App/managedEnvironments/write
nella risorsa ambiente gestita. È possibile assegnare in modo esplicito il ruolo Owner
o Contributor
nella risorsa oppure seguire la procedura per creare una definizione del ruolo personalizzata e assegnarla all'account.
Creare la definizione del ruolo personalizzata.
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>"] }'
Assicurarsi di sostituire il segnaposto tra le parentesi
<>
nel valoreAssignableScopes
con l'ID sottoscrizione in uso.Assegnare il ruolo personalizzato all'account nella risorsa ambiente gestito.
Ottenere l'ID risorsa dell'ambiente gestito.
export ENVIRONMENT_ID=$(az containerapp env show \ --name $ENVIRONMENT --resource-group $RESOURCE_GROUP \ --query id \ --output tsv)
Assegnare il ruolo all'account.
Prima di eseguire questo comando, sostituire il segnaposto tra parentesi
<>
con l'ID utente o l'entità servizio.az role assignment create \ --assignee <USER_OR_SERVICE_PRINCIPAL_ID> \ --role "Java Component Dashboard Access" \ --scope $ENVIRONMENT_ID
Ottenere l'URL del dashboard di Eureka Server per 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
Questo comando restituisce l'URL che è possibile usare per accedere al dashboard di Eureka Server per Spring. Tramite la dashboard è possibile verificare che la configurazione del server Eureka sia costituita da due repliche.
Pulire le risorse
Le risorse create in questa esercitazione hanno effetto sulla fattura di Azure. Se non si intende usare questi servizi a lungo termine, eseguire il comando seguente per rimuovere tutti gli elementi creati in questa esercitazione.
az group delete --resource-group $RESOURCE_GROUP