Lebenszyklus der Service Fabric-Anwendung

Ähnlich wie auf anderen Plattformen durchläuft eine Anwendung auf Azure Service Fabric normalerweise die folgenden Phasen: Entwurf, Entwicklung, Test, Bereitstellung, Update, Wartung und Deinstallation. Service Fabric bietet erstklassige Unterstützung für den gesamten Anwendungslebenszyklus von Cloudanwendungen: von der Entwicklung über die Bereitstellung, die tägliche Verwaltung und die Wartung bis zur endgültigen Außerbetriebnahme. Das Dienstmodell ermöglicht die unabhängige Beteiligung verschiedener Rollen am Anwendungslebenszyklus. Dieser Artikel bietet eine Übersicht über die APIs und wie sie von den verschiedenen Rollen während der Phasen des Service Fabric-Anwendungslebenszyklus verwendet werden.

Auf dieser Seite finden Sie ein Trainingsvideo, in dem die Verwaltung des Anwendungslebenszyklus beschrieben wird:

Wichtig

Es gibt zwei CLI-Hilfsprogramme, die für die Interaktion mit Service Fabric verwendet werden. Die Azure CLI wird zum Verwalten von Azure-Ressourcen verwendet, z.B. für einen in Azure gehosteten Service Fabric-Cluster. Die Service Fabric CLI wird verwendet, um eine direkte Verbindung mit dem Service Fabric-Cluster herzustellen (unabhängig vom Host-Ort) und den Cluster, Anwendungen und Dienste zu verwalten.

Rollen des Dienstmodells

Es gibt folgende Rollen im Dienstmodell:

  • Service developer (Dienstentwickler): Dieser entwickelt modulare und generische Dienste, die für neue Zwecke in mehreren Anwendungen des gleichen Typs oder in anderen Anwendungstypen wiederverwendet werden können. Ein Warteschlangendienst kann beispielsweise zum Erstellen einer Ticketing-Anwendung (Helpdesk) oder einer E-Commerce-Anwendung (Warenkorb) verwendet werden.
  • Anwendungsentwickler: Erstellt Anwendungen durch Integrieren einer Sammlung von Diensten, um bestimmte Anforderungen zu erfüllen oder bestimmte Szenarien abzudecken. Beispielsweise können „Zustandsloser Front-End-Dienst für JSON“, „Zustandsbehafteter Dienst für Auktion“ und „Zustandsbehafteter Dienst für Warteschlange“ in einer E-Commerce-Website integriert werden, um eine Auktionslösung zu erstellen.
  • Anwendungsadministrator: Trifft Entscheidungen zur Anwendungskonfiguration (Ausfüllen der Konfigurationsvorlagenparameter), zur Bereitstellung (Zuordnung zu den verfügbaren Ressourcen) und zur Servicequalität. Ein Anwendungsadministrator legt z. B. das Sprachgebietsschema (Englisch für die USA oder Japanisch für Japan) der Anwendung fest. Für eine andere bereitgestellte Anwendung können andere Einstellungen festgelegt werden.
  • Operator: Stellt Anwendungen entsprechend der Anwendungskonfiguration und den vom Anwendungsadministrator angegebenen Anforderungen bereit. Ein Operator stellt z. B. die Anwendung bereit und stellt sicher, dass sie in Azure ausgeführt wird. Operatoren überwachen den Anwendungszustand und die Leistungsinformationen und verwalten bei Bedarf die physische Infrastruktur.

Entwickeln

  1. Ein Dienstentwickler entwickelt unter Verwendung der Programmiermodell Reliable Actors oder Reliable Services verschiedene Diensttypen.
  2. Ein Dienstentwickler stellt eine deklarative Beschreibung der entwickelten Diensttypen in einer Dienstmanifestdatei bereit, die aus mindestens einem Code-, Konfigurations- und Datenpaket besteht.
  3. Ein Anwendungsentwickler erstellt dann unter Verwendung verschiedener Diensttypen eine Anwendung.
  4. Ein Anwendungsentwickler stellt eine deklarative Beschreibung des Anwendungstyps in einem Anwendungsmanifest bereit, indem er auf die Dienstmanifeste der konstituierenden Dienste verweist und unterschiedliche Konfigurations- und Bereitstellungseinstellungen der konstituierenden Dienste entsprechend überschreibt und parametrisiert.

Beispiele finden Sie unter Erste Schritte mit Reliable Actors und Erste Schritte mit Reliable Services.

Bereitstellen

  1. Ein Anwendungsadministrator passt den Anwendungstyp in einer bestimmten Anwendung so an, dass sie in einem Service Fabric-Cluster bereitgestellt wird, indem er die entsprechenden Parameter des ApplicationType -Elements im Anwendungsmanifest angibt.
  2. Ein Operator lädt das Anwendungspaket mit der CopyApplicationPackage-Methode oder dem Copy-ServiceFabricApplicationPackage-Cmdlet in den Clusterimagespeicher hoch. Das Anwendungspaket enthält das Anwendungsmanifest und die Auflistung der Dienstpakete. Service Fabric stellt Anwendungen aus dem Anwendungspaket bereit, das im ImageStore gespeichert ist, bei dem es sich um einen Azure-Blobspeicher oder den Service Fabric-Systemdienst handeln kann.
  3. Der Operator stellt dann den Anwendungstyp im Zielcluster aus dem hochgeladenen Anwendungspaket mit der ProvisionApplicationAsync-Methode, dem Register-ServiceFabricApplicationType cmdlet oder der Provision an Application REST-Operation.
  4. Nach der Bereitstellung der Anwendung startet ein Operator die Anwendung mit den vom Anwendungsadministrator angegebenen Parametern unter Verwendung der CreateApplicationAsync-Methode, des New-ServiceFabricApplication-Cmdlets oder des REST-Vorgangs Anwendung erstellen.
  5. Nachdem die Anwendung bereitgestellt wurde, verwendet ein Operator die CreateServiceAsync-Methode, das New-ServiceFabricService-Cmdlet oder den REST-Vorgang Dienst erstellen, um auf Grundlage verfügbarer Diensttypen neue Dienstinstanzen für die Anwendung zu erstellen.
  6. Die Anwendung wird nun im Service Fabric-Cluster ausgeführt.

Beispiele finden Sie unter Deploy an application (in englischer Sprache).

Test

  1. Nach der Bereitstellung im lokalen Entwicklungscluster oder in einem Testcluster führt ein Dienstentwickler das integrierte Failovertestszenario mithilfe der Klassen FailoverTestScenarioParameters und FailoverTestScenario oder des Invoke-ServiceFabricFailoverTestScenario-Cmdlets aus. Im Failovertestszenario wird ein bestimmter Dienst über wichtige Übergänge und Failover ausgeführt, um sicherzustellen, dass er weiterhin verfügbar und aktiv ist.
  2. Der Dienstentwickler führt dann das integrierte Chaostestszenario mithilfe der Klassen ChaosTestScenarioParameters und ChaosTestScenario oder des Invoke-ServiceFabricChaosTestScenario-Cmdlets aus. Im Chaostestszenario werden nach dem Zufallsprinzip mehrere Knoten-, Codepaket- und Replikatfehler im Cluster ausgelöst.
  3. Der Dienstentwicklertestet die Kommunikation zwischen Diensten, indem er Testszenarios erstellt, in denen primäre Replikate im Cluster verschoben werden.

Weitere Informationen finden Sie unter Testability – Übersicht .

Aktualisieren

  1. Ein Dienstentwickler aktualisiert die zugehörigen Dienste der instanziierten Anwendung und/oder behebt Fehler und stellt eine neue Version des Dienstmanifests bereit.
  2. Ein Anwendungsentwickler überschreibt und parametrisiert die Konfigurations- und Bereitstellungseinstellungen der zugehörigen Dienste und stellt eine neue Version des Anwendungsmanifests bereit. Der Anwendungsentwickler bindet dann die neuen Versionen der Dienstmanifeste in der Anwendung ein und stellt eine neue Version des Anwendungstyps in einem aktualisierten Anwendungspaket bereit.
  3. Ein Anwendungsadministrator integriert die neue Version des Anwendungstyps in die Zielanwendung, indem er die entsprechenden Parameter aktualisiert.
  4. Ein Operator lädt das aktualisierte Anwendungspaket mit der CopyApplicationPackage-Methode oder dem Copy-ServiceFabricApplicationPackage-Cmdlet in den Clusterimagespeicher hoch. Das Anwendungspaket enthält das Anwendungsmanifest und die Auflistung der Dienstpakete.
  5. Ein Operator stellt die neue Version der Anwendung mit der ProvisionApplicationAsync-Methode, dem Register-ServiceFabricApplicationType-Cmdlet oder dem REST-Vorgang Anwendung bereitstellen im Zielcluster bereit.
  6. Ein Operator führt mit der UpgradeApplicationAsync-Methode, dem Start-ServiceFabricApplicationUpgrade-Cmdlet oder dem REST-Vorgang Upgrade einer Anwendung ausführen ein Upgrade der Zielanwendung auf die neue Version aus.
  7. Ein Operator überprüft den Status des Upgrades mit der GetApplicationUpgradeProgressAsync-Methode, dem Get-ServiceFabricApplicationUpgrade-Cmdlet oder dem REST-Vorgang Fortschritt des Anwendungsupgrades abrufen.
  8. Bei Bedarf ändert der Operator die Parameter des aktuellen Anwendungsupgrades mit der UpdateApplicationUpgradeAsync-Methode, dem Update-ServiceFabricApplicationUpgrade-Cmdlet oder dem REST-Vorgang Anwendungsupgrade aktualisieren und wendet sie erneut an.
  9. Bei Bedarf führt der Operator mit der RollbackApplicationUpgradeAsync-Methode, dem Start-ServiceFabricApplicationRollback-Cmdlet oder dem REST-Vorgang Anwendungsupgrade zurücksetzen ein Rollback des aktuellen Anwendungsupgrades aus.
  10. Service Fabric aktualisiert die im Cluster ausgeführte Zielanwendung ohne Verlust der Verfügbarkeit der einzelnen zugehörigen Dienste.

Beispiele finden Sie im Tutorial für Anwendungsupgrades .

Verwalten

  1. Bei Upgrades und Patches des Betriebssystems wird Service Fabric mit der Azure-Infrastruktur verbunden, um die Verfügbarkeit aller im Cluster ausgeführten Anwendungen zu gewährleisten.
  2. Bei Upgrades und Patches der Service Fabric-Plattform aktualisiert sich Service Fabric selbst ohne Verlust der Verfügbarkeit aller im Cluster ausgeführten Anwendungen.
  3. Ein Anwendungsadministrator genehmigt das Hinzufügen oder Entfernen von Knoten in einem Cluster nach der Analyse der verlaufsbezogenen Kapazität der Verwendungsdaten und des voraussichtlichen zukünftigen Bedarfs.
  4. Ein Operator fügt die vom Anwendungsadministrator angegebenen Knoten hinzu oder entfernt sie.
  5. Wenn neue Knoten im Cluster hinzugefügt oder vorhandene Knoten aus dem Cluster entfernt werden, nimmt Service Fabric einen Lastenausgleich der in allen Knoten des Clusters ausgeführten Anwendungen vor, um eine optimale Leistung zu erzielen.

Entfernen

  1. Ein Operator kann mithilfe der DeleteServiceAsync-Methode, des Remove-ServiceFabricService-Cmdlets oder des REST-Vorgangs Dienst löschen eine bestimmte Instanz eines ausgeführten Diensts im Cluster löschen, ohne die gesamte Anwendung zu entfernen.
  2. Ein Operator kann mithilfe der DeleteApplicationAsync-Methode, des Remove-ServiceFabricApplication-Cmdlets oder des REST-Vorgangs Anwendung löschen auch eine Anwendungsinstanz und all ihre Dienste löschen.
  3. Sobald die Anwendung und die Dienste gestoppt sind, kann der Operator den Anwendungstyp mit der UnprovisionApplicationAsync Methode, dem Cmdlet Unregister-ServiceFabricApplicationType oder der REST-Operation Unprovision an Application REST-Operation. Beim Aufheben der Bereitstellung des Anwendungstyps wird das Anwendungspaket nicht aus dem ImageStore entfernt.
  4. Ein Operator entfernt das Anwendungspaket mit der RemoveApplicationPackage-Methode oder dem Remove-ServiceFabricApplicationPackage-Cmdlet aus dem Imagespeicher.

Beispiele finden Sie unter Deploy an application (in englischer Sprache).

Einsparen von Speicherplatz im Clusterimagespeicher

Der ImageStoreService behält kopierte und bereitgestellte Pakete bei. Dies kann zu einer starken Zunahme der Anzahl von Dateien führen. Diese Dateiakkumulation kann dazu führen, dass der ImageStoreService (fabric:/System/ImageStoreService) den Datenträger vollständig einnimmt und damit die Erstellungszeit für ImageStoreService-Replikate erhöht.

Um die Dateiakkumulation zu vermeiden, verwenden Sie die folgende Bereitstellungssequenz:

  1. Kopieren des Pakets in den ImageStore und Verwenden einer Komprimierungsoption

  2. Bereitstellen des Pakets

  3. Entfernen Sie das Paket aus dem Imagespeicher

  4. Aktualisieren der Anwendung/des Clusters

  5. Aufheben der Bereitstellung der alten Version

Die Schritte 3 und 5 im obigen Ablauf verhindern die Ansammlung von Dateien im Imagespeicher.

Konfiguration für die automatische Bereinigung

Sie können den obigen Schritt 3 mit PowerShell oder XML automatisieren. Dadurch wird das Anwendungspaket nach der erfolgreichen Registrierung des Anwendungstyps automatisch gelöscht.

PowerShell:

Register-ServiceFabricApplicationTye -ApplicationPackageCleanupPolicy Automatic

XML:

<Section Name="Management">
  <Parameter Name="CleanupApplicationPackageOnProvisionSuccess" Value="True" />
</Section>

Sie können den obigen Schritt 5 mit XML automatisieren. Dadurch wird die Registrierung nicht verwendeter Anwendungstypen automatisch aufgehoben.

<Section Name="Management">
  <Parameter Name="CleanupUnusedApplicationTypes" Value="true" />
  <Parameter Name="PeriodicCleanupUnusedApplicationTypes" Value="true" />     
  <Parameter Name="TriggerAppTypeCleanupOnProvisionSuccess" Value="true" />
  <Parameter Name="MaxUnusedAppTypeVersionsToKeep" Value="3" />
</Section>

Bereinigen von Dateien und Daten auf Knoten

Bei der Replikation von Anwendungsdateien werden die Dateien je nach Ausgleichsmaßnahmen letztlich auf alle Knoten verteilt. Dies kann je nach Anzahl der Anwendungen und deren Dateigröße zu Datenträgerdruck führen. Selbst wenn keine aktive Instanz auf einem Knoten ausgeführt wird, werden die Dateien aus einer früheren Instanz beibehalten. Das gleiche gilt für Daten aus zuverlässigen Sammlungen, die von zustandsbehafteten Diensten verwendet werden. Dies dient dem Zweck einer höheren Verfügbarkeit. Für eine neue Anwendungsinstanz auf demselben Knoten müssen keine Dateien kopiert werden. Für zuverlässige Sammlungen muss nur das Delta repliziert werden.

Um die Anwendungsbinärdateien vollständig zu entfernen, müssen Sie die Registrierung des Anwendungstyps aufheben.

Empfehlungen zum Verringern des Datenträgerdrucks:

  1. Remove-ServiceFabricApplicationPackage: Entfernt das Paket aus dem temporären Uploadspeicherort.
  2. Unregister-ServiceFabricApplicationType: Gibt Speicherplatz frei, indem die Anwendungstypdateien aus dem Imagespeicherdienst und allen Knoten entfernt werden. Der Löschungs-Manager wird standardmäßig jede Stunde ausgeführt.
  3. CleanupUnusedApplicationTypes: Bereinigt alte nicht verwendete Anwendungsversionen automatisch.
    {
      "name": "Management",
      "parameters": [
        {
          "name": "CleanupUnusedApplicationTypes",
          "value": true
        },
        {
          "name": "MaxUnusedAppTypeVersionsToKeep",
          "value": "3"
        }
      ]
    }
    
  4. Remove-ServiceFabricClusterPackage: Entfernt alte nicht verwendete Runtime-Installationsbinärdateien.

Hinweis

Ein Feature befindet sich in der Entwicklung, damit Service Fabric Anwendungsordner löschen kann, sobald die Anwendung aus dem Knoten entfernt wird.

Nächste Schritte

Weitere Informationen zum Entwickeln, Testen und Verwalten von Service Fabric-Anwendungen und Service Fabric-Diensten: