Tutorial: Erstellen eines hochverfügbaren Eureka-Serverkomponentenclusters in Azure Container Apps

In diesem Tutorial lernen Sie, einen Eureka-Dienst zu erstellen, der angesichts von Fehlern und hoher Nachfrage betriebsbereit bleiben soll. Durch die Erstellung eines hochverfügbaren Eureka-Diensts wird sichergestellt, dass die Dienstregistrierung für Clients unabhängig von der Nachfrage immer verfügbar ist.

Das Erreichen des Status der Hochverfügbarkeit für Eureka umfasst das Verknüpfen mehrerer Eureka-Serverinstanzen, die zusammen einen Cluster bilden. Der Cluster stellt Ressourcen bereit, sodass die anderen Dienste für Anforderungen verfügbar bleiben, wenn ein Eureka-Server fehlerhaft ist.

In diesem Tutorial:

  • Erstellen einer Komponente vom Typ „Eureka Server für Spring“
  • Binden zweier Eureka-Server für Spring-Komponenten in einem Cluster
  • Binden von Anwendungen an beide Eureka-Server, um die Dienstermittlung hoch verfügbar zu machen

Voraussetzungen

Zum Abschließen dieses Projekts benötigen Sie die folgenden Elemente:

Anforderung Anweisungen
Azure-Konto Ein aktives Abonnement ist erforderlich. Falls Sie keins haben, können Sie kostenlos eins erstellen.
Azure CLI Installieren Sie die Azure CLI.

Überlegungen

Beachten Sie bei der Ausführung von verwalteten Java-Komponenten in Azure Container Apps die folgenden Details:

Artikel Erklärung
Umfang Komponenten werden in derselben Umgebung wie die verbundene Container-App ausgeführt.
Skalieren Komponente kann nicht skaliert werden. Die Skalierungseigenschaften minReplicas und maxReplicas sind beide auf 1.
Ressourcen Die Containerressourcenzuordnung für Komponenten ist behoben. Die Anzahl der CPU-Kerne beträgt 0,5, und die Speichergröße beträgt 1Gi.
Preise Die Komponentenabrechnung fällt unter die verbrauchsbasierten Preise. Ressourcen, die von verwalteten Komponenten verbraucht werden, werden in den Aktiven/Leerlaufraten abgerechnet. Sie können Komponenten löschen, die nicht mehr zum Beenden der Abrechnung verwendet werden.
Binding Container-Apps stellen über eine Bindung eine Verbindung mit einer Komponente her. Die Bindungen enthalten Konfigurationen in Container-App-Umgebungsvariablen. Sobald eine Bindung eingerichtet wurde, kann die Container-App die Konfigurationswerte aus Umgebungsvariablen lesen und eine Verbindung mit der Komponente herstellen.

Setup

Führen Sie die folgenden Schritte aus, um Ihren Eureka-Dienstcluster zu erstellen.

  1. Erstellen Sie Variablen, die Anwendungskonfigurationswerte enthalten.

    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. Melden Sie sich über die Azure-Befehlszeilenschnittstelle bei Azure an.

    az login
    
  3. Erstellen Sie eine Ressourcengruppe.

    az group create --name $RESOURCE_GROUP --location $LOCATION
    
  4. Erstellen Sie die Container Apps-Umgebung.

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

Erstellen eines Clusters

Erstellen Sie als Nächstes zwei Eureka-Serverinstanzen, und verknüpfen Sie sie als Cluster.

  1. Erstellen von zwei Komponenten vom Typ „Eureka Server für 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
    

Binden von Komponenten

Damit die Eureka-Server in einer Hochverfügbarkeitskonfiguration arbeiten können, müssen sie miteinander verknüpft werden.

  1. Binden Sie den ersten Eureka-Server an den zweiten.

    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. Binden Sie den zweiten Eureka-Server an den ersten.

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

Bereitstellen und Binden der Anwendung

Mit den miteinander verknüpften Serverkomponenten können Sie die Container-App erstellen und an die beiden Eureka-Komponenten binden.

  1. Erstellen Sie die Container-App.

    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. Binden Sie die Container-App an die erste Eureka-Serverkomponente.

    az containerapp update \
        --name $APP_NAME \
        --resource-group $RESOURCE_GROUP \
        --bind $EUREKA_COMPONENT_FIRST 
    
  3. Binden Sie die Container-App an die zweite Eureka-Serverkomponente.

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

Anzeigen der Dashboards

Wichtig

Um das Dashboard anzuzeigen, müssen Sie mindestens die Microsoft.App/managedEnvironments/write-Rolle Ihrem Konto in der Ressource der verwalteten Umgebung zugewiesen haben. Sie können entweder explizit die Rolle Owner oder Contributor für die Ressource zuweisen oder die Schritte ausführen, um eine benutzerdefinierte Rollendefinition zu erstellen und sie Ihrem Konto zuzuweisen.

  1. Erstellen Sie die benutzerdefinierte Rollendefinition.

    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>"]
    }'
    

    Ersetzen Sie den Platzhalter zwischen den spitzen Klammern <> im Wert AssignableScopes durch Ihre Abonnement-ID.

  2. Weisen Sie Ihrem Konto die benutzerdefinierte Rolle in der Ressource der verwalteten Umgebung zu.

    Rufen Sie die Ressourcen-ID der verwalteten Umgebung ab.

    export ENVIRONMENT_ID=$(az containerapp env show \
      --name $ENVIRONMENT --resource-group $RESOURCE_GROUP \
      --query id -o tsv)
    
  3. Weisen Sie Ihrem Konto die Rolle zu.

    Ersetzen Sie vor dem Ausführen dieses Befehls den Platzhalter zwischen den <>-Klammern durch Ihre Benutzer- oder Dienstprinzipal-ID.

    az role assignment create \
      --assignee <USER_OR_SERVICE_PRINCIPAL_ID> \
      --role "Java Component Dashboard Access" \
      --scope $ENVIRONMENT_ID
    
  4. Rufen Sie die URL des Dashboards „Eureka-Server für Spring“ ab.

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

    Dieser Befehl gibt die URL zurück, die Sie für den Zugriff auf das Dashboard „Eureka Server für Spring“ verwenden können. Über das Dashboard können Sie überprüfen, ob das Eureka-Serversetup aus zwei Replikaten besteht.

    Screenshot eines hoch verfügbaren Eureka-Servers für das Spring-Dashboard

Bereinigen von Ressourcen

Die in diesem Tutorial erstellten Ressourcen wirken sich auf Ihre Azure-Abrechnung aus. Führen Sie den folgenden Befehl aus, um alle in diesem Tutorial erstellten Ressourcen zu entfernen, wenn Sie diese Dienste nicht langfristig verwenden werden.

az group delete \
    --resource-group $RESOURCE_GROUP

Nächste Schritte