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.
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"
Melden Sie sich über die Azure-Befehlszeilenschnittstelle bei Azure an.
az login
Erstellen Sie eine Ressourcengruppe.
az group create --name $RESOURCE_GROUP --location $LOCATION
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.
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.
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
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.
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
Binden Sie die Container-App an die erste Eureka-Serverkomponente.
az containerapp update \ --name $APP_NAME \ --resource-group $RESOURCE_GROUP \ --bind $EUREKA_COMPONENT_FIRST
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.
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 WertAssignableScopes
durch Ihre Abonnement-ID.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)
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
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.
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