Freigeben über


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

In diesem Lernprogramm erfahren Sie, wie Sie einen Eureka-Dienst erstellen, der darauf ausgelegt ist, angesichts von Fehlern und hoher Nachfrage betriebsbereit zu bleiben. Das Erstellen eines hoch verfügbaren Eureka-Diensts trägt dazu bei, sicherzustellen, dass die Dienstregistrierung, die Sie für Azure-Container-Apps verwenden, immer für Clients verfügbar ist, unabhängig von der Nachfrage.

Das Erreichen des Status für hohe Verfügbarkeit für Eureka umfasst das Verknüpfen mehrerer Eureka-Serverinstanzen, sodass sie 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 Sie Eureka-Server für Spring-Komponenten.
  • Binden zweier Eureka-Server für Spring-Komponenten in einem Cluster
  • Binden Sie eine Container-App mit beiden Eureka-Servern, um eine hochverfügbare Dienstermittlung zu ermöglichen.

Voraussetzungen

Überlegungen

Wenn Sie verwaltete Java-Komponenten in Container-Apps ausführen, beachten Sie die folgenden Details:

Artikel Erklärung
`Scope` Komponenten werden in derselben Umgebung wie die verbundene Container-App ausgeführt.
Skalierung Komponenten können 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 Arbeitsspeichergröße beträgt 1 GB.
Preise Die Komponentenabrechnung fällt unter die verbrauchsbasierten Preise. Ressourcen, die von verwalteten Komponenten verbraucht werden, werden abhängig von der Nutzung der Ressourcen zu den Aktivitätsraten oder Leerlaufraten in Rechnung gestellt. 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. Nachdem eine Bindung eingerichtet wurde, kann die Container-App die Konfigurationswerte aus Umgebungsvariablen lesen und eine Verbindung mit der Komponente herstellen.

Einrichten von Anfangsressourcen

Führen Sie die folgenden Schritte aus, um einige Ressourcen zu erstellen, die Sie für Ihren Eureka-Dienstcluster benötigen.

  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. Verwenden Sie die Azure CLI, um sich bei Azure anzumelden.

    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 von Servern für einen Cluster

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

Koppeln von Komponenten zu einem Cluster

Damit die Eureka-Server in einer Hochverfügbarkeitskonfiguration arbeiten können, müssen sie als Cluster 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 des Dashboards

Wichtig

Um den Eureka-Server für das Spring-Dashboard anzuzeigen, müssen Sie über die Microsoft.App/managedEnvironments/write, Owner oder Contributor Rolle verfügen, die Ihrem Konto für die Container-Apps-Umgebungsressource zugewiesen ist.

  • Wenn Sie bereits über eine dieser Rollen verfügen, fahren Sie mit dem Abschnitt " Dashboard-URL abrufen" fort, um die URL abzurufen und das Dashboard anzuzeigen.
  • Wenn Sie eine benutzerdefinierte Rollendefinition erstellen und ihrem Konto zuweisen möchten, führen Sie die Schritte im folgenden Abschnitt aus, Erstellen und Zuweisen einer benutzerdefinierten Rolle.
  • Wenn Sie Ihrem Konto die Owner- oder Contributor-Rolle für die Ressource zuweisen möchten, weisen Sie sie zu und springen Sie dann zum Abschnitt "Dashboard-URL abrufen".

Erstellen und Zuweisen einer benutzerdefinierten Rolle

  1. Erstellen Sie die benutzerdefinierte Rollendefinition. Bevor Sie diesen Befehl ausführen, ersetzen Sie den Platzhalter im AssignableScopes Wert durch Ihre Abonnement-ID.

    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>"]
    }'
    
  2. Rufen Sie die Ressourcen-ID der Container-Apps-Umgebung ab.

    export ENVIRONMENT_ID=$(az containerapp env show \
        --name $ENVIRONMENT --resource-group $RESOURCE_GROUP \
        --query id \
        --output tsv)
    
  3. Weisen Sie Ihrem Konto die benutzerdefinierte Rolle für die Container-Apps-Umgebungsressource zu. Ersetzen Sie vor dem Ausführen dieses Befehls den Platzhalter im assignee Wert durch Ihre Benutzerobjekt-ID oder Dienstprinzipal-ID.

    az role assignment create \
        --assignee <USER_OR_SERVICE_PRINCIPAL_ID> \
        --role "Java Component Dashboard Access" \
        --scope $ENVIRONMENT_ID
    

Abrufen der Dashboard-URL

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 \
    --output 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 Eureka für das Spring-Dashboard. Im Abschnitt

Bereinigen von Ressourcen

Die in diesem Lernprogramm erstellten Ressourcen wirken sich auf Ihre Azure-Rechnung aus. Wenn Sie diese Dienste nicht langfristig verwenden werden, führen Sie den folgenden Befehl aus, um alle in diesem Lernprogramm erstellten Elemente zu entfernen.

az group delete --resource-group $RESOURCE_GROUP