Aggiornamento di un'applicazione di Service Fabric mediante PowerShellService Fabric application upgrade using PowerShell


Il metodo di aggiornamento consigliato usato più frequentemente è l'aggiornamento in sequenza in modalità monitorata (Monitored).The most frequently used and recommended upgrade approach is the monitored rolling upgrade. Azure Service Fabric monitora l'integrità dell'applicazione che viene aggiornata in base a un set di criteri di integrità.Azure Service Fabric monitors the health of the application being upgraded based on a set of health policies. Dopo che un dominio di aggiornamento è stato aggiornato, Service Fabric valuta l'integrità dell'applicazione e poi o passa al dominio di aggiornamento successivo o annulla l'aggiornamento in base ai criteri di integrità.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.

L'aggiornamento di un'applicazione in modalità monitorata può essere eseguito usando le API gestite o native, PowerShell o REST.A monitored application upgrade can be performed using the managed or native APIs, PowerShell, or REST. Per istruzioni su come eseguire un aggiornamento usando Visual Studio, vedere Esercitazione sull'aggiornamento di un'applicazione di Service Fabric tramite Visual Studio.For instructions on performing an upgrade using Visual Studio, see Upgrading your application using Visual Studio.

L'aggiornamento in sequenza in modalità monitorata di Service Fabric consente all'amministratore di applicazioni di configurare i criteri di valutazione dell'integrità usati da Service Fabric per determinare se l'applicazione è integra.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. L'amministratore può anche configurare l'azione da intraprendere se la valutazione dell'integrità non riesce, ad esempio l'esecuzione di un rollback automatico. Questa sezione descrive in dettaglio un aggiornamento monitorato per uno degli esempi di SDK che usa PowerShell.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. Il video di Microsoft Virtual Academy seguente illustra anche come aggiornare un'app:

The following Microsoft Virtual Academy video also walks you through an app upgrade:

Passaggio 1: creare e distribuire l'esempio di oggetti visiviStep 1: Build and deploy the Visual Objects sample

Compilare e pubblicare l'applicazione facendo clic con il pulsante destro del mouse sul progetto dell'applicazione, VisualObjectsApplication, e selezionando il comando Pubblica.Build and publish the application by right-clicking on the application project, VisualObjectsApplication, and selecting the Publish command. Per altre informazioni, vedere Esercitazione sull'aggiornamento di un'applicazione di Service Fabric tramite Visual Studio.For more information, see Service Fabric application upgrade tutorial. In alternativa, è possibile usare PowerShell per distribuire l'applicazione.Alternatively, you can use PowerShell to deploy your application.

Nota

Per poter usare uno dei comandi di Service Fabric in PowerShell è necessario connettersi prima al cluster con il cmdlet Connect-ServiceFabricCluster.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. Si presuppone che il cluster sia stato già configurato nel computer locale.Similarly, it is assumed that the Cluster has already been set up on your local machine. Vedere l'articolo relativo alla configurazione dell'ambiente di sviluppo di Service Fabric.See the article on setting up your Service Fabric development environment.

Dopo aver compilato il progetto in Visual Studio è possibile usare il comando di PowerShell Copy-ServiceFabricApplicationPackage per copiare il pacchetto dell'applicazione in ImageStore.After building the project in Visual Studio, you can use the PowerShell command Copy-ServiceFabricApplicationPackage to copy the application package to the ImageStore. Se si desidera verificare il pacchetto dell'applicazione in locale, usare il cmdlet Test-ServiceFabricApplicationPackage.If you want to verify the app package locally, use the Test-ServiceFabricApplicationPackage cmdlet. Il passaggio successivo consiste nel registrare l'applicazione nel runtime di Service Fabric usando il cmdlet Register-ServiceFabricApplicationType.The next step is to register the application to the Service Fabric runtime using the Register-ServiceFabricApplicationType cmdlet. Il passaggio seguente consiste nell'avviare un'istanza dell'applicazione con il cmdlet New-ServiceFabricApplication.The following step is to start an instance of the application by using the New-ServiceFabricApplication cmdlet. Questi tre passaggi sono analoghi all'uso della voce di menu Distribuisci in Visual Studio.These three steps are analogous to using the Deploy menu item in Visual Studio. Al termine del provisioning, è consigliabile pulire il pacchetto dell'applicazione copiato dall'archivio immagini per ridurre le risorse utilizzate.Once provisioning is completed, you should clean up the copied application package from the image store in order to reduce the resources consumed. Se un tipo di applicazione non è più necessario, è consigliabile annullarne la registrazione per lo stesso motivo.If an application type is no longer required, it should be unregistered for the same reason. Per altre informazioni, vedere Distribuire e rimuovere applicazioni con PowerShell.See Deploy and remove applications using PowerShell for more information.

È ora possibile usare Service Fabric Explorer per visualizzare il cluster e l'applicazione.Now, you can use Service Fabric Explorer to view the cluster and the application. L'applicazione dispone di un servizio Web a cui è possibile accedere in Internet Explorer digitando http://localhost:8081/visualobjects sulla barra degli indirizzi.The application has a web service that can be navigated to in Internet Explorer by typing http://localhost:8081/visualobjects in the address bar. Verranno visualizzati alcuni oggetti visivi mobili sullo schermo.You should see some floating visual objects moving around in the screen. È anche possibile usare Get-ServiceFabricApplication per verificare lo stato dell'applicazione.Additionally, you can use Get-ServiceFabricApplication to check the application status.

Passaggio 2: aggiornare l'applicazione Oggetti visivi di esempioStep 2: Update the Visual Objects sample

È possibile osservare che con la versione distribuita al passaggio 1 gli oggetti visivi non ruotano.You might notice that with the version that was deployed in Step 1, the visual objects do not rotate. L'applicazione può essere aggiornata in modo che gli oggetti visivi ruotino.Let's upgrade this application to one where the visual objects also rotate.

Selezionare il progetto VisualObjects.ActorService nella soluzione VisualObjects e aprire il file StatefulVisualObjectActor.cs.Select the VisualObjects.ActorService project within the VisualObjects solution, and open the StatefulVisualObjectActor.cs file. All'interno del file passare al metodo MoveObject, impostare come commento this.State.Move() e rimuovere il commento this.State.Move(true).Within that file, navigate to the method MoveObject, comment out this.State.Move(), and uncomment this.State.Move(true). Questa modifica fa ruotare gli oggetti dopo l'aggiornamento del servizio.This change rotates the objects after the service is upgraded.

È anche necessario aggiornare il file ServiceManifest.xml (in PackageRoot) del progetto VisualObjects.ActorService.We also need to update the ServiceManifest.xml file (under PackageRoot) of the project VisualObjects.ActorService. Aggiornare CodePackage e la versione del servizio alla versione 2.0, nonché le righe corrispondenti nel file ServiceManifest.xml.Update the CodePackage and the service version to 2.0, and the corresponding lines in the ServiceManifest.xml file. È possibile usare l'opzione Edit Manifest Files (Modifica file manifesto) di Visual Studio dopo aver fatto clic con il pulsante destro del mouse sulla soluzione per apportare le modifiche al file manifesto.You can use the Visual Studio Edit Manifest Files option after you right-click on the solution to make the manifest file changes.

Dopo aver apportato le modifiche, il manifesto dovrebbe essere simile al seguente (le parti evidenziate indicano le modifiche):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="http://www.w3.org/2001/XMLSchema-instance">

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

A questo punto il file ApplicationManifest.xml, disponibile nel progetto VisualObjects della soluzione VisualObjects, viene aggiornato alla versione 2.0 del progetto VisualObjects.ActorService.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. Anche la versione dell'applicazione viene aggiornata a 2.0.0.0 da 1.0.0.0.In addition, the Application version is updated to 2.0.0.0 from 1.0.0.0. Il file ApplicationManifest.xml sarà simile al seguente frammento di codice:The ApplicationManifest.xml should look like the following snippet:

<ApplicationManifestxmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://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" />

A questo punto compilare il progetto selezionando solo il progetto ActorService e quindi facendo clic con il pulsante destro del mouse e scegliendo l'opzione Compila in Visual Studio.Now, build the project by selecting just the ActorService project, and then right-clicking and selecting the Build option in Visual Studio. Se si seleziona Ricompila tutto, è necessario aggiornare le versioni per tutti i progetti, poiché il codice è stato modificato.If you select Rebuild all, you should update the versions for all projects, since the code would have changed. È quindi possibile aggiungere l'applicazione aggiornata al pacchetto facendo clic con il pulsante destro del mouse sul progetto VisualObjectsApplication, scegliendo il menu Service Fabric e quindi Pacchetto.Next, let's package the updated application by right-clicking on VisualObjectsApplication, selecting the Service Fabric Menu, and choosing Package. In questo modo viene creato un pacchetto dell'applicazione che può essere distribuito.This action creates an application package that can be deployed. L'applicazione aggiornata è pronta per essere distribuita.Your updated application is ready to be deployed.

Passaggio 3: Scegliere i criteri di integrità e i parametri di aggiornamentoStep 3: Decide on health policies and upgrade parameters

È consigliabile acquisire familiarità con i parametri di aggiornamento dell'applicazione e con il processo di aggiornamento per conoscere i diversi parametri di aggiornamento, valori di timeout e criteri di integrità applicati.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. Per questa procedura dettagliata i criteri predefiniti di valutazione dell'integrità dei servizi sono impostati con i valori consigliati, quindi tutti i servizi e tutte le istanze saranno integri dopo l'aggiornamento.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.

Aumentare tuttavia il valore di HealthCheckStableDuration impostandolo su 60 secondi, in modo che i servizi siano integri per almeno 20 secondi prima che il processo di aggiornamento passi al dominio di aggiornamento successivo.However, let's increase the HealthCheckStableDuration to 60 seconds (so that the services are healthy for at least 20 seconds before the upgrade proceeds to the next update domain). Impostare quindi UpgradeDomainTimeout su 1200 secondi e UpgradeTimeout su 3000 secondi.Let's also set the UpgradeDomainTimeout to be 1200 seconds and the UpgradeTimeout to be 3000 seconds.

Infine impostare anche UpgradeFailureAction in modo che venga eseguito il rollback.Finally, let's also set the UpgradeFailureAction to rollback. Questa opzione richiede che Service Fabric esegua il rollback dell'applicazione alla versione precedente se riscontra problemi durante l'aggiornamento.This option requires Service Fabric to roll back the application to the previous version if it encounters any issues during the upgrade. Perciò, all'avvio dell'aggiornamento (al passaggio 4), vengono specificati i parametri seguenti:Thus, when starting the upgrade (in Step 4), the following parameters are specified:

FailureAction = RollbackFailureAction = Rollback

HealthCheckStableDurationSec = 60HealthCheckStableDurationSec = 60

UpgradeDomainTimeoutSec = 1200UpgradeDomainTimeoutSec = 1200

UpgradeTimeout = 3000UpgradeTimeout = 3000

Passaggio 4: preparare l'applicazione per l'aggiornamentoStep 4: Prepare application for upgrade

L'applicazione ora è compilata e pronta per l'aggiornamento.Now the application is built and ready to be upgraded. Se si apre una finestra di PowerShell come amministratore e si digita Get-ServiceFabricApplication, verrà indicato che è stato distribuito il tipo di applicazione 1.0.0.0 di VisualObject.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.

Il pacchetto applicazione è archiviato nel percorso relativo seguente, dove è stato decompresso Service Fabric SDK - 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 questa directory deve essere disponibile una cartella "Package", dove è archiviato il pacchetto dell'applicazione.You should find a "Package" folder in that directory, where the application package is stored. Controllare i timestamp per assicurarsi che si tratti dell'ultima build. Potrebbe essere anche necessario modificare i percorsi in base alle esigenze.Check the timestamps to ensure that it is the latest build (you may need to modify the paths appropriately as well).

Copiare ora il pacchetto applicazione aggiornato in ImageStore di Service Fabric (dove Service Fabric archivia i pacchetti applicazione).Now let's copy the updated application package to the Service Fabric ImageStore (where the application packages are stored by Service Fabric). Il parametro ApplicationPackagePathInImageStore indica a Service Fabric dove è contenuto il pacchetto applicazione.The parameter ApplicationPackagePathInImageStore informs Service Fabric where it can find the application package. L'applicazione aggiornata è stata inserita in "VisualObjects_V2" con il comando seguente. Potrebbe essere di nuovo necessario modificare i percorsi in base alle esigenze.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"

Il passaggio successivo consiste nel registrare l'applicazione con Service Fabric, operazione che può essere eseguita usando il comando Register-ServiceFabricApplicationType: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"

Se il comando precedente non riesce, è probabile che si debbano ricompilare tutti i servizi.If the preceding command doesn't succeed, it is likely that you need a rebuild of all services. Come indicato nel passaggio 2, potrebbe essere necessario aggiornare anche la versione di WebService.As mentioned in Step 2, you may have to update your WebService version as well.

Al termine della registrazione dell'applicazione, è consigliabile rimuovere il pacchetto dell'applicazione.It's recommended that you remove the application package after the application is successfully registered. L'eliminazione dei pacchetti di applicazioni dall'archivio immagini consente di liberare risorse di sistema.Deleting application packages from the image store frees up system resources. Conservando pacchetti inutilizzati, viene occupato spazio di archiviazione su disco e si verificano problemi di prestazioni delle applicazioni.Keeping unused application packages consumes disk storage and leads to application performance issues.

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

Passaggio 5: avviare l'aggiornamento dell'applicazioneStep 5: Start the application upgrade

Ora è tutto pronto per avviare l'aggiornamento dell'applicazione usando il comando Start-ServiceFabricApplicationUpgrade: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

Il nome dell'applicazione è lo stesso descritto nel file ApplicationManifest.xml .The application name is the same as it was described in the ApplicationManifest.xml file. Service Fabric usa questo nome per identificare l'applicazione che viene aggiornata.Service Fabric uses this name to identify which application is getting upgraded. Se si imposta un valore di timeout troppo breve, è possibile che venga visualizzato un messaggio di errore che indica il problema.If you set the time-outs to be too short, you may encounter a failure message that states the problem. Vedere la sezione relativa alla risoluzione dei problemi o aumentare i valori di timeout.Refer to the troubleshooting section, or increase the time-outs.

Man mano che l'aggiornamento dell'applicazione procede, è possibile monitorarlo con Service Fabric Explorer oppure con il comando di PowerShell Get-ServiceFabricApplicationUpgrade: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

In pochi minuti lo stato ottenuto usando il comando di PowerShell precedente indicherà che sono stati aggiornati (completati) tutti i domini di aggiornamento.In a few minutes, the status that you got by using the preceding PowerShell command, should state that all update domains were upgraded (completed). Inoltre gli oggetti visivi nella finestra del browser hanno iniziato a ruotare.And you should find that the visual objects in your browser window have started rotating!

Come esercizio provare a effettuare l'aggiornamento dalla versione 2 alla versione 3 o dalla versione 2 alla versione 1:You can try upgrading from version 2 to version 3, or from version 2 to version 1 as an exercise. anche il passaggio dalla versione 2 alla versione 1 è considerato un aggiornamento.Moving from version 2 to version 1 is also considered an upgrade. Esercitarsi inoltre con i timeout e i criteri di integrità per acquisire familiarità anche con questi concetti.Play with time-outs and health policies to make yourself familiar with them. Quando si esegue la distribuzione in un cluster di Azure, è necessario impostare i parametri in modo appropriato.When you are deploying to an Azure cluster, the parameters need to be set appropriately. È consigliabile impostare i timeout su valori contenuti.It is good to set the time-outs conservatively.

Passaggi successiviNext steps

Esercitazione sull'aggiornamento di un'applicazione di Service Fabric tramite Visual Studio descrive la procedura di aggiornamento di un'applicazione con Visual Studio.Upgrading your application using Visual Studio walks you through an application upgrade using Visual Studio.

Controllare l'aggiornamento dell'applicazione tramite Parametri di aggiornamento.Control how your application upgrades by using upgrade parameters.

Rendere compatibili gli aggiornamenti dell'applicazione imparando a usare la serializzazione dei dati.Make your application upgrades compatible by learning how to use data serialization.

Per informazioni su come usare funzionalità avanzate durante l'aggiornamento dell'applicazione, vedere Argomenti avanzati.Learn how to use advanced functionality while upgrading your application by referring to Advanced topics.

Per informazioni su come risolvere problemi comuni negli aggiornamenti dell'applicazione, vedere i passaggi indicati in Risoluzione dei problemi relativi agli aggiornamenti dell'applicazione.Fix common problems in application upgrades by referring to the steps in Troubleshooting application upgrades.