Condividi tramite


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

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.

  1. 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"
    
  2. Accedere ad Azure con l'interfaccia della riga di comando di Azure.

    az login
    
  3. Creare un gruppo di risorse.

    az group create --name $RESOURCE_GROUP --location $LOCATION
    
  4. 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.

  1. 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.

  1. 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
    
  2. 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.

  1. 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
    
  2. Associare l'app contenitore al primo componente server Eureka.

    az containerapp update \
        --name $APP_NAME \
        --resource-group $RESOURCE_GROUP \
        --bind $EUREKA_COMPONENT_FIRST 
    
  3. 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.

  1. 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 valore AssignableScopes con l'ID sottoscrizione in uso.

  2. 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)
    
  3. 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
    
  4. 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.

    Screenshot di una dashboard di Eureka Server per Spring a disponibilità elevata.

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