Service Fabric-Anwendungsupgrade mithilfe von PowerShellService Fabric application upgrade using PowerShell


Die am häufigsten angewendete und empfohlene Methode für Upgrades ist das überwachte parallele Upgrade.The most frequently used and recommended upgrade approach is the monitored rolling upgrade. Azure Service Fabric überwacht die Integrität der aktualisierten Anwendung basierend auf einer Reihe von Integritätsrichtlinien.Azure Service Fabric monitors the health of the application being upgraded based on a set of health policies. Wenn für eine Updatedomäne (UD) ein Upgrade erfolgt ist, prüft Service Fabric die Anwendungsintegrität und ob mit der nächsten Updatedomäne fortgefahren wird oder ob basierend auf den Integritätsrichtlinien ein Upgradefehler vorliegt.Once an update domain (UD) is upgraded, Service Fabric evaluates the application health and either proceeds to the next update domain or fails the upgrade depending on the health policies.

Ein überwachtes Anwendungsupgrade kann mithilfe der verwalteten oder nativen APIs, mit PowerShell, der Azure CLI, Java oder REST ausgeführt werden.A monitored application upgrade can be performed using the managed or native APIs, PowerShell, Azure CLI, Java, or REST. Eine Anleitung zum Durchführen eines Upgrades mit Visual Studio finden Sie unter Upgrade Ihrer Anwendung mit Visual Studio.For instructions on performing an upgrade using Visual Studio, see Upgrading your application using Visual Studio.

Mit den von Service Fabric überwachten parallelen Upgrades kann der Anwendungsadministrator die Integritätsevaluierungsrichtlinie konfigurieren, mit der Service Fabric ermittelt, ob die Anwendung fehlerfrei ist.With Service Fabric monitored rolling upgrades, the application administrator can configure the health evaluation policy that Service Fabric uses to determine if the application is healthy. Darüber hinaus kann der Administrator auch die Aktion (z. B. einen automatischen Rollback) konfigurieren, die ausgeführt wird, wenn bei der Integritätsevaluierung ein Fehler auftritt. In diesem Abschnitt wird ein überwachtes Upgrade für eines der SDK-Beispiele mit PowerShell Schritt für Schritt erläutert.In addition, the administrator can configure the action to be taken when the health evaluation fails (for example, doing an automatic rollback.) This section walks through a monitored upgrade for one of the SDK samples that uses PowerShell.

Schritt 1: Erstellen und Bereitstellen des Beispiels „Visual Objects“Step 1: Build and deploy the Visual Objects sample

Erstellen und veröffentlichen Sie die Anwendung, indem Sie mit der rechten Maustaste auf das Anwendungsprojekt VisualObjectsApplication klicken und den Befehl Veröffentlichen auswählen.Build and publish the application by right-clicking on the application project, VisualObjectsApplication, and selecting the Publish command. Weitere Informationen finden Sie im Tutorial für Service Fabric-Anwendungsupgrades.For more information, see Service Fabric application upgrade tutorial. Alternativ können Sie Ihre Anwendung mithilfe von PowerShell bereitstellen.Alternatively, you can use PowerShell to deploy your application.

Hinweis

Um Service Fabric-Befehle in PowerShell verwenden zu können, müssen Sie zunächst mit dem Cmdlet Connect-ServiceFabricCluster eine Verbindung mit dem Cluster herstellen.Before any of the Service Fabric commands may be used in PowerShell, you first need to connect to the cluster by using the Connect-ServiceFabricCluster cmdlet. Auch wird davon ausgegangen, dass der Cluster bereits auf dem lokalen Computer eingerichtet wurde.Similarly, it is assumed that the Cluster has already been set up on your local machine. Siehe dazu den Artikel Set up your Service Fabric development environment(in englischer Sprache).See the article on setting up your Service Fabric development environment.

Nach dem Erstellen des Projekts in Visual Studio können Sie das Anwendungspaket über den PowerShell-Befehl Copy-ServiceFabricApplicationPackage in den ImageStore kopieren.After building the project in Visual Studio, you can use the PowerShell command Copy-ServiceFabricApplicationPackage to copy the application package to the ImageStore. Wenn Sie das App-Paket lokal überprüfen möchten, verwenden Sie das Cmdlet Test-ServiceFabricApplicationPackage.If you want to verify the app package locally, use the Test-ServiceFabricApplicationPackage cmdlet. Nach diesem Schritt folgt die Registrierung der Anwendung bei der Service Fabric-Laufzeit mit dem Cmdlet Register-ServiceFabricApplicationType.The next step is to register the application to the Service Fabric runtime using the Register-ServiceFabricApplicationType cmdlet. Im folgenden Schritt wird mithilfe des Cmdlets New-ServiceFabricApplication eine Instanz der Anwendung gestartet.The following step is to start an instance of the application by using the New-ServiceFabricApplication cmdlet. Diese drei Schritte entsprechen der Verwendung des Menüelements Bereitstellen in Visual Studio.These three steps are analogous to using the Deploy menu item in Visual Studio. Nachdem die Bereitstellung abgeschlossen ist, bereinigen Sie das kopierte Anwendungspaket im Imagespeicher, um den Ressourcenverbrauch zu reduzieren.Once provisioning is completed, you should clean up the copied application package from the image store in order to reduce the resources consumed. Wenn ein Anwendungstyp nicht mehr benötigt wird, sollte seine Registrierung aus demselben Grund aufgehoben werden.If an application type is no longer required, it should be unregistered for the same reason. Weitere Informationen finden Sie unter Bereitstellen und Entfernen von Anwendungen mit PowerShell.See Deploy and remove applications using PowerShell for more information.

Nun können Sie mit Service Fabric Explorer den Cluster und die Anwendung anzeigen.Now, you can use Service Fabric Explorer to view the cluster and the application. Die Anwendung verfügt über einen Webdienst, zu dem Sie wechseln können, indem Sie auf der Adressleiste von Internet Explorer http://localhost:8081/visualobjects eingeben.The application has a web service that can be navigated to in Internet Explorer by typing http://localhost:8081/visualobjects in the address bar. Sie sollten einige unverankerte visuelle Objekte sehen, die sich auf dem Bildschirm bewegen.You should see some floating visual objects moving around in the screen. Darüber hinaus können Sie Get-ServiceFabricApplication zum Überprüfen des Anwendungsstatus verwenden.Additionally, you can use Get-ServiceFabricApplication to check the application status.

Schritt 2: Aktualisieren des Beispiels „Visual Objects“Step 2: Update the Visual Objects sample

Sie werden feststellen, dass sich die visuellen Objekte mit der Version, die in Schritt 1 bereitgestellt wurde, nicht drehen.You might notice that with the version that was deployed in Step 1, the visual objects do not rotate. Wir aktualisieren diese Anwendung so, dass sich die visuellen Objekte drehen.Let's upgrade this application to one where the visual objects also rotate.

Wählen Sie das Projekt „VisualObjects.ActorService“ in der Projektmappe „VisualObjects“ aus, und öffnen Sie die Datei „StatefulVisualObjectActor.cs“.Select the VisualObjects.ActorService project within the VisualObjects solution, and open the StatefulVisualObjectActor.cs file. Navigieren Sie in der Datei zur MoveObject-Methode, kommentieren Sie this.State.Move() aus, und heben Sie die Auskommentierung von this.State.Move(true) auf.Within that file, navigate to the method MoveObject, comment out this.State.Move(), and uncomment this.State.Move(true). Diese Änderung bewirkt, dass sich die Objekte nach dem Upgrade des Diensts drehen.This change rotates the objects after the service is upgraded.

Wir müssen auch die Datei ServiceManifest.xml (unter „PackageRoot“) des Projekts VisualObjects.DataServiceaktualisieren.We also need to update the ServiceManifest.xml file (under PackageRoot) of the project VisualObjects.ActorService. Aktualisieren Sie CodePackage und die Dienstversion auf 2.0., und aktualisieren Sie die entsprechenden Zeilen in der Datei ServiceManifest.xml.Update the CodePackage and the service version to 2.0, and the corresponding lines in the ServiceManifest.xml file. Klicken Sie zum Ändern der Manifestdatei mit der rechten Maustaste auf die Projektmappe, und wählen Sie anschließend die Visual Studio-Option Manifestdateien bearbeiten aus.You can use the Visual Studio Edit Manifest Files option after you right-click on the solution to make the manifest file changes.

Nach diesen Änderungen sollte das Manifest wie folgt aussehen (Änderungen sind hervorgehoben):After the changes are made, the manifest should look like the following (highlighted portions show the changes):

<ServiceManifestName="VisualObjects.ActorService" Version="2.0" xmlns="http://schemas.microsoft.com/2011/01/fabric" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance">

<CodePackageName="Code" Version="2.0">

Nun wird die Datei ApplicationManifest.xml (im Projekt VisualObjects unter der Projektmappe VisualObjects) auf Version 2.0 des Projekts VisualObjects.ActorService aktualisiert.Now the ApplicationManifest.xml file (found under the VisualObjects project under the VisualObjects solution) is updated to version 2.0 of the VisualObjects.ActorService project. Außerdem muss die Version der Anwendung von „1.0.0.0“ in „2.0.0.0“ geändert werden.In addition, the Application version is updated to 2.0.0.0 from 1.0.0.0. Die Datei ApplicationManifest.xml sollte wie im folgenden Codeausschnitt aussehen:The ApplicationManifest.xml should look like the following snippet:

<ApplicationManifestxmlns:xsd="https://www.w3.org/2001/XMLSchema" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" ApplicationTypeName="VisualObjects" ApplicationTypeVersion="2.0.0.0" xmlns="http://schemas.microsoft.com/2011/01/fabric">

 <ServiceManifestRefServiceManifestName="VisualObjects.ActorService" ServiceManifestVersion="2.0" />

Erstellen Sie jetzt das Projekt, indem Sie in Visual Studio das Projekt ActorService und dann mit der rechten Maustaste die Option Erstellen auswählen.Now, build the project by selecting just the ActorService project, and then right-clicking and selecting the Build option in Visual Studio. Wenn Sie die Option Alles neu erstellenwählen, müssen Sie die Versionen für alle Projekte aktualisieren, da sich der Code geändert haben sollte.If you select Rebuild all, you should update the versions for all projects, since the code would have changed. Packen Sie nun die aktualisierte Anwendung, indem Sie mit der rechten Maustaste auf VisualObjectsApplication klicken und anschließend im Service Fabric-Menü die Option Paket auswählen.Next, let's package the updated application by right-clicking on VisualObjectsApplication, selecting the Service Fabric Menu, and choosing Package. Damit wird ein Anwendungspaket erstellt, das bereitgestellt werden kann.This action creates an application package that can be deployed. Die aktualisierte Anwendung kann nun bereitgestellt werden.Your updated application is ready to be deployed.

Schritt 3: Festlegen der Integritätsrichtlinien und UpgradeparameterStep 3: Decide on health policies and upgrade parameters

Machen Sie sich mit den Anwendungsupgradeparametern und dem Upgradevorgang vertraut, um sich einen fundierten Überblick über die verschiedenen Upgradeparameter, Timeouts und Integritätskriterien zu verschaffen.Familiarize yourself with the application upgrade parameters and the upgrade process to get a good understanding of the various upgrade parameters, time-outs, and health criterion applied. In dieser exemplarischen Vorgehensweise ist das Evaluierungskriterium für die Dienstintegrität auf die (empfohlenen) Standardwerte festgelegt, wodurch alle Dienste und Instanzen nach dem Upgrade fehlerfrei sein sollten.For this walkthrough, the service health evaluation criterion is set to the default (and recommended) values, which means that all services and instances should be healthy after the upgrade.

Allerdings erhöhen wir HealthCheckStableDuration auf 180 Sekunden, sodass die Dienste mindestens 120 Sekunden fehlerfrei sind, bevor zur nächsten Updatedomäne gewechselt wird.However, let's increase the HealthCheckStableDuration to 180 seconds (so that the services are healthy for at least 120 seconds before the upgrade proceeds to the next update domain). Wir legen außerdem UpgradeDomainTimeout auf 1.200 Sekunden und UpgradeTimeout auf 3.000 Sekunden fest.Let's also set the UpgradeDomainTimeout to be 1200 seconds and the UpgradeTimeout to be 3000 seconds.

Schließlich legen wir UpgradeFailureAction auf „Rollback“ fest.Finally, let's also set the UpgradeFailureAction to rollback. Diese Option fordert von Service Fabric an, die Anwendung auf die vorherige Version zurückzusetzen, falls während des Upgrades Probleme erkannt werden.This option requires Service Fabric to roll back the application to the previous version if it encounters any issues during the upgrade. Daher werden beim Starten des Upgrades (in Schritt 4) die folgenden Parameter angegeben:Thus, when starting the upgrade (in Step 4), the following parameters are specified:

FailureAction = RollbackFailureAction = Rollback

HealthCheckStableDurationSec = 180HealthCheckStableDurationSec = 180

UpgradeDomainTimeoutSec = 1200UpgradeDomainTimeoutSec = 1200

UpgradeTimeout = 3000UpgradeTimeout = 3000

Schritt 4: Vorbereiten der Anwendung für das UpgradeStep 4: Prepare application for upgrade

Die Anwendung ist nun erstellt und kann aktualisiert werden.Now the application is built and ready to be upgraded. Wenn Sie als Administrator ein PowerShell-Fenster öffnen und Get-ServiceFabricApplication eingeben, sollte angezeigt werden, dass der Anwendungstyp „1.0.0.0“ von VisualObjects bereitgestellt wurde.If you open up a PowerShell window as an administrator and type Get-ServiceFabricApplication, it should let you know that it is application type 1.0.0.0 of VisualObjects that's been deployed.

Das Anwendungspaket ist unter dem folgenden relativen Pfad gespeichert, in dem Sie das Service Fabric-SDK dekomprimiert haben: Samples\Services\Stateful\VisualObjects\VisualObjects\obj\x64\Debug.The application package is stored under the following relative path where you uncompressed the Service Fabric SDK - Samples\Services\Stateful\VisualObjects\VisualObjects\obj\x64\Debug. In diesem Verzeichnis befindet sich der Ordner „Package“, in dem das Anwendungspaket gespeichert ist.You should find a "Package" folder in that directory, where the application package is stored. Überprüfen Sie die Zeitstempel, um sicherzustellen, dass es sich um die neueste Version handelt (möglicherweise müssen Sie auch die Pfade entsprechend ändern).Check the timestamps to ensure that it is the latest build (you may need to modify the paths appropriately as well).

Jetzt kopieren Sie das aktualisierte Anwendungspaket in den Service Fabric-ImageStore (in dem die Anwendungspakete von Service Fabric gespeichert werden).Now let's copy the updated application package to the Service Fabric ImageStore (where the application packages are stored by Service Fabric). Der ApplicationPackagePathInImageStore -Parameter informiert Service Fabric darüber, wo sich das Anwendungspaket befindet.The parameter ApplicationPackagePathInImageStore informs Service Fabric where it can find the application package. Wir haben die aktualisierte Anwendung mit dem folgenden Befehl in „VisualObjects_V2“ abgelegt (möglicherweise müssen Sie die Pfade wieder entsprechend ändern).We have put the updated application in "VisualObjects_V2" with the following command (you may need to modify paths again appropriately).

Copy-ServiceFabricApplicationPackage -ApplicationPackagePath .\Samples\Services\Stateful\VisualObjects\VisualObjects\obj\x64\Debug\Package -ApplicationPackagePathInImageStore "VisualObjects\_V2"

Im nächsten Schritt wird diese Anwendung bei Service Fabric registriert. Dazu kann der Befehl Register-ServiceFabricApplicationType verwendet werden:The next step is to register this application with Service Fabric, which can be performed using the Register-ServiceFabricApplicationType command:

Register-ServiceFabricApplicationType -ApplicationPathInImageStore "VisualObjects\_V2"

Wenn der vorherige Befehl nicht erfolgreich ausgeführt wird, müssen Sie wahrscheinlich alle Dienste neu erstellen.If the preceding command doesn't succeed, it is likely that you need a rebuild of all services. Wie in Schritt 2 erwähnt, müssen Sie möglicherweise auch Ihre WebService-Version aktualisieren.As mentioned in Step 2, you may have to update your WebService version as well.

Es wird empfohlen, nach erfolgreicher Registrierung der Anwendung das Anwendungspaket zu entfernen.It's recommended that you remove the application package after the application is successfully registered. Sie können Systemressourcen freigeben, indem Sie Anwendungspakete aus dem Imagespeicher löschen.Deleting application packages from the image store frees up system resources. Die Speicherung nicht verwendeter Anwendungspakete nimmt Speicherplatz in Anspruch und führt zu Leistungsproblemen der Anwendung.Keeping unused application packages consumes disk storage and leads to application performance issues.

Remove-ServiceFabricApplicationPackage -ApplicationPackagePathInImageStore "VisualObjects\_V2" -ImageStoreConnectionString fabric:ImageStore

Schritt 5: Starten des AnwendungsupgradesStep 5: Start the application upgrade

Nun ist alles bereit, um das Anwendungsupgrade mithilfe des Befehls Start ServiceFabricApplicationUpgrade zu starten:Now, we're all set to start the application upgrade by using the Start-ServiceFabricApplicationUpgrade command:

Start-ServiceFabricApplicationUpgrade -ApplicationName fabric:/VisualObjects -ApplicationTypeVersion 2.0.0.0 -HealthCheckStableDurationSec 60 -UpgradeDomainTimeoutSec 1200 -UpgradeTimeout 3000   -FailureAction Rollback -Monitored

Beachten Sie, dass als Anwendungsname der in der Datei ApplicationManifest.xml angegebene Name verwendet wird.The application name is the same as it was described in the ApplicationManifest.xml file. Service Fabric verwendet diesen Namen, um die zu aktualisierende Anwendung zu ermitteln.Service Fabric uses this name to identify which application is getting upgraded. Wenn Sie die Timeoutwerte zu kurz festlegen, wird möglicherweise eine entsprechende Fehlermeldung angezeigt.If you set the time-outs to be too short, you may encounter a failure message that states the problem. Informationen hierzu finden Sie im Abschnitt „Problembehandlung“. Sie können die Timeoutwerte erhöhen.Refer to the troubleshooting section, or increase the time-outs.

Während das Anwendungsupgrade durchgeführt wird, können Sie es in Service Fabric Explorer oder mit dem PowerShell-Befehl Get-ServiceFabricApplicationUpgrade überwachen:Now, as the application upgrade proceeds, you can monitor it using Service Fabric Explorer, or by using the Get-ServiceFabricApplicationUpgrade PowerShell command:

Get-ServiceFabricApplicationUpgrade fabric:/VisualObjects

Nach wenigen Minuten sollte nach Verwendung des vorangehenden PowerShell-Befehls angezeigt werden, dass alle Updatedomänen aktualisiert (abgeschlossen) wurden.In a few minutes, the status that you got by using the preceding PowerShell command, should state that all update domains were upgraded (completed). Und Sie werden feststellen, dass die visuellen Objekte in Ihrem Browserfenster sich jetzt drehen!And you should find that the visual objects in your browser window have started rotating!

Versuchen Sie zur Übung ein Upgrade von Version 2 auf Version 3 oder von Version 2 auf Version 1.You can try upgrading from version 2 to version 3, or from version 2 to version 1 as an exercise. Der Wechsel von Version 2 zu Version 1 wird ebenfalls als Upgrade eingestuft.Moving from version 2 to version 1 is also considered an upgrade. Experimentieren Sie mit den Timeouts und Integritätsrichtlinien, um sich schrittweise mit ihnen vertraut zu machen.Play with time-outs and health policies to make yourself familiar with them. Wenn Sie die Bereitstellung in einem Azure-Cluster erfolgt, müssen die Parameter entsprechend festgelegt werden.When you are deploying to an Azure cluster, the parameters need to be set appropriately. Es ist ratsam, die Timeouts konservativ festzulegen.It is good to set the time-outs conservatively.

Nächste SchritteNext steps

Upgrade Ihrer Anwendung mit Visual Studio werden Sie schrittweise durch ein Anwendungsupgrade mithilfe von Visual Studio geführt.Upgrading your application using Visual Studio walks you through an application upgrade using Visual Studio.

Steuern Sie die Upgrades von Anwendungen mithilfe von Upgradeparametern.Control how your application upgrades by using upgrade parameters.

Machen Sie sich mit der Datenserialisierungvertraut, um Ihre Anwendungsupgrades kompatibel zu machen.Make your application upgrades compatible by learning how to use data serialization.

Informieren Sie sich in weiterführenden Themendarüber, wie Sie erweiterte Funktionen beim Upgrade Ihrer Anwendung nutzen.Learn how to use advanced functionality while upgrading your application by referring to Advanced topics.

Informationen zum Beheben gängiger Probleme bei Anwendungsupgrades finden Sie in den Anweisungen unter Problembehandlung bei Anwendungsupgrades.Fix common problems in application upgrades by referring to the steps in Troubleshooting application upgrades.