Aggiornamento di un'applicazione di Service Fabric: argomenti avanzatiService Fabric application upgrade: advanced topics

Aggiungere o rimuovere servizi durante l'aggiornamento di un'applicazioneAdding or removing services during an application upgrade

Se viene aggiunto un nuovo servizio a un'applicazione che è già distribuita e viene pubblicato come aggiornamento, il nuovo servizio viene aggiunto all'applicazione distribuita.If a new service is added to an application that is already deployed, and published as an upgrade, the new service is added to the deployed application. Un aggiornamento di questo tipo non influisce su nessuno dei servizi già inclusi nell'applicazione.Such an upgrade does not affect any of the services that were already part of the application. È tuttavia necessario che venga avviata un'istanza del servizio che è stato aggiunto, tramite il cmdlet New-ServiceFabricService , perché il nuovo servizio sia attivo.However, an instance of the service that was added must be started for the new service to be active (using the New-ServiceFabricService cmdlet).

Un aggiornamento può anche prevedere la rimozione di determinati servizi da un'applicazione.Services can also be removed from an application as part of an upgrade. Tuttavia è necessario arrestare tutte le istanze correnti del servizio da eliminare prima di procedere con l'aggiornamento (usando il cmdlet Remove-ServiceFabricService ).However, all current instances of the to-be-deleted service must be stopped before proceeding with the upgrade (using the Remove-ServiceFabricService cmdlet).

Modalità di aggiornamento manualeManual upgrade mode

Nota

La modalità di aggiornamento UnmonitoredManual deve essere presa in considerazione solo per un aggiornamento non riuscito o sospeso.The unmonitored manual mode should be considered only for a failed or suspended upgrade. La modalità di aggiornamento consigliata per le applicazioni di Service Fabric è la modalità monitorata.The monitored mode is the recommended upgrade mode for Service Fabric applications.

Azure Service Fabric offre diverse modalità di aggiornamento per supportare i cluster di sviluppo e di produzione.Azure Service Fabric provides multiple upgrade modes to support development and production clusters. Le opzioni di distribuzione scelte possono essere diverse per ambienti diversi.Deployment options chosen may be different for different environments.

L'aggiornamento in sequenza di applicazioni monitorato è il più comune da usare in un ambiente di produzione.The monitored rolling application upgrade is the most typical upgrade to use in the production environment. Se vengono specificati criteri di aggiornamento, Service Fabric verifica che l'applicazione sia integra prima di procedere con l'aggiornamento.When the upgrade policy is specified, Service Fabric ensures that the application is healthy before the upgrade proceeds.

L'amministratore dell'applicazione può usare la modalità di aggiornamento in sequenza manuale per avere il controllo totale sull'avanzamento dell'aggiornamento nei vari domini di aggiornamento.The application administrator can use the manual rolling application upgrade mode to have total control over the upgrade progress through the various upgrade domains. Questa modalità è utile quando sono necessari criteri di valutazione dell'integrità più personalizzati o complessi o è in corso un aggiornamento non convenzionale, ad esempio un'applicazione che presenta già una perdita di dati.This mode is useful when a customized or complex health evaluation policy is required, or a non-conventional upgrade is happening (for example, the application is already in data loss).

L'aggiornamento in sequenza automatizzato dell'applicazione è utile infine per ambienti di sviluppo o di test per garantire un ciclo di iterazione rapido durante lo sviluppo dei servizi.Finally, the automated rolling application upgrade is useful for development or testing environments to provide a fast iteration cycle during service development.

Modificare la modalità di aggiornamento manualeChange to manual upgrade mode

Manual: arresta l'aggiornamento dell'applicazione in corrispondenza dell'UD corrente e cambia la modalità di aggiornamento in UnmonitoredManual.Manual--Stop the application upgrade at the current UD and change the upgrade mode to Unmonitored Manual. L'amministratore deve chiamare manualmente il comando MoveNextApplicationUpgradeDomainAsync per procedere con l'aggiornamento o per attivare il ripristino allo stato precedente avviando un nuovo aggiornamento.The administrator needs to manually call MoveNextApplicationUpgradeDomainAsync to proceed with the upgrade or trigger a rollback by initiating a new upgrade. Quando l'aggiornamento passa alla modalità Manual, resta in tale modalità finché non viene avviato un nuovo aggiornamento.Once the upgrade enters into the Manual mode, it stays in the Manual mode until a new upgrade is initiated. Il comando GetApplicationUpgradeProgressAsync restituisce FABRIC_APPLICATION_UPGRADE_STATE_ROLLING_FORWARD_PENDING.The GetApplicationUpgradeProgressAsync command returns FABRIC_APPLICATION_UPGRADE_STATE_ROLLING_FORWARD_PENDING.

Aggiornare con un pacchetto DiffUpgrade with a diff package

Un'applicazione di Service Fabric può essere aggiornata effettuando il provisioning con un pacchetto applicazione completo e autonomo.A Service Fabric application can be upgraded by provisioning with a full, self-contained application package. È possibile aggiornare un'applicazione anche usando un pacchetto Diff contenente solo i file dell'applicazione aggiornati, nonché i file manifesto dell'applicazione e del servizio aggiornati.An application can also be upgraded by using a diff package that contains only the updated application files, the updated application manifest, and the service manifest files.

Un pacchetto applicazione completo contiene tutti i file necessari per avviare ed eseguire un'applicazione di Service Fabric.A full application package contains all the files necessary to start and run a Service Fabric application. Un pacchetto Diff contiene solo i file che sono cambiati tra l'ultimo provisioning e l'aggiornamento corrente, oltre ai file manifesto dell'applicazione e del servizio completi.A diff package contains only the files that changed between the last provision and the current upgrade, plus the full application manifest and the service manifest files. Gli eventuali riferimenti nel manifesto dell'applicazione o del servizio che non vengono reperiti nel layout della build vengono cercati nell'archivio immagini.Any reference in the application manifest or service manifest that can't be found in the build layout is searched for in the image store.

I pacchetti dell'applicazione completi sono necessari per la prima installazione di un'applicazione nel cluster.Full application packages are required for the first installation of an application to the cluster. Gli aggiornamenti successivi possono essere eseguiti con un pacchetto applicazione completo o con un pacchetto Diff.Subsequent updates can be either a full application package or a diff package.

L'uso di un pacchetto Diff è consigliato nei casi seguenti:Occasions when using a diff package would be a good choice:

  • Se è disponibile un pacchetto dell'applicazione di grandi dimensioni che fa riferimento a più file manifesto del servizio e/o a più pacchetti di codice, di configurazione o di dati.A diff package is preferred when you have a large application package that references several service manifest files and/or several code packages, config packages, or data packages.
  • Se è disponibile un sistema di distribuzione che genera il layout della build direttamente dal processo di compilazione dell'applicazione.A diff package is preferred when you have a deployment system that generates the build layout directly from your application build process. In questo caso, anche se il codice è rimasto invariato, i nuovi assembly compilati avranno un checksum diverso.In this case, even though the code hasn't changed, newly built assemblies get a different checksum. L'uso del pacchetto applicazione completo richiederebbe l'aggiornamento della versione in tutti i pacchetti di codice.Using a full application package would require you to update the version on all code packages. Usando un pacchetto Diff invece è necessario fornire soltanto i file che sono stati modificati e i file manifesto in cui è cambiata la versione.Using a diff package, you only provide the files that changed and the manifest files where the version has changed.

Quando si aggiorna un'applicazione tramite Visual Studio, il pacchetto Diff viene pubblicato automaticamente.When an application is upgraded using Visual Studio, the diff package is published automatically. Per creare manualmente un pacchetto Diff, è necessario aggiornare il manifesto dell'applicazione e i manifesti di servizio, ma solo i pacchetti modificati devono essere inclusi nel pacchetto finale dell'applicazione.To create a diff package manually, the application manifest, and the service manifests must be updated, but only the changed packages should be included in the final application package.

Si supponga, ad esempio, di iniziare con la seguente applicazione (vengono specificati i numeri di versione per facilitare la comprensione):For example, let's start with the following application (version numbers provided for ease of understanding):

app1           1.0.0
  service1     1.0.0
    code       1.0.0
    config     1.0.0
  service2     1.0.0
    code       1.0.0
    config     1.0.0

A questo punto, si supponga di voler aggiornare solo il pacchetto di codice di service1 usando un pacchetto Diff tramite PowerShell.Now, let's assume you wanted to update only the code package of service1 using a diff package using PowerShell. A questo punto l'applicazione aggiornata presenta la struttura di cartelle seguente:Now, your updated application has the following folder structure:

app1           2.0.0      <-- new version
  service1     2.0.0      <-- new version
    code       2.0.0      <-- new version
    config     1.0.0
  service2     1.0.0
    code       1.0.0
    config     1.0.0

In questo caso, il manifesto dell'applicazione viene aggiornato alla versione 2.0.0, e il manifesto del servizio per service1 in modo da riflettere l'aggiornamento del pacchetto di codice.In this case, you update the application manifest to 2.0.0, and the service manifest for service1 to reflect the code package update. La cartella per il pacchetto dell'applicazione sarebbe simile alla seguente:The folder for your application package would have the following structure:

app1/
  service1/
    code/

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.

Aggiornamento di un'applicazione di Service Fabric mediante PowerShell descrive la procedura di aggiornamento di un'applicazione tramite PowerShell.Upgrading your Application Using Powershell walks you through an application upgrade using PowerShell.

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 Serializzazione dei dati.Make your application upgrades compatible by learning how to use Data Serialization.

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.