Aggiornamento di un'applicazione di infrastruttura di serviziService Fabric application upgrade

Un'applicazione di Azure Service Fabric è una raccolta di servizi.An Azure Service Fabric application is a collection of services. Durante un aggiornamento, Service Fabric confronta il nuovo manifesto dell'applicazione con la versione precedente e determina quali servizi dell'applicazione richiedono aggiornamenti.During an upgrade, Service Fabric compares the new application manifest with the previous version and determines which services in the application require updates. Service Fabric confronta i numeri di versione nel manifesto del servizio con quelli della versione precedente.Service Fabric compares the version numbers in the service manifests with the version numbers in the previous version. Se un servizio non è cambiato, non viene aggiornato.If a service has not changed, that service is not upgraded.

Panoramica degli aggiornamenti in sequenzaRolling upgrades overview

In un aggiornamento in sequenza di un'applicazione l'operazione viene eseguita in fasi.In a rolling application upgrade, the upgrade is performed in stages. In ogni fase l'aggiornamento viene applicato a un subset di nodi del cluster denominato dominio di aggiornamento.At each stage, the upgrade is applied to a subset of nodes in the cluster, called an update domain. In questo modo l'applicazione continua a essere disponibile durante l'aggiornamento.As a result, the application remains available throughout the upgrade. È possibile che durante l'aggiornamento il cluster contenga una combinazione di versioni precedenti e nuove.During the upgrade, the cluster may contain a mix of the old and new versions.

Per questo motivo è necessario che le due versioni siano compatibili con le versioni precedenti e successive.For that reason, the two versions must be forward and backward compatible. In caso contrario, l'amministratore di applicazioni deve organizzare un aggiornamento in più fasi per mantenere la disponibilità.If they are not compatible, the application administrator is responsible for staging a multiple-phase upgrade to maintain availability. In un aggiornamento a più fasi come primo passaggio si esegue l'aggiornamento a una versione intermedia dell'applicazione che sia compatibile con la versione precedente.In a multiple-phase upgrade, the first step is upgrading to an intermediate version of the application that is compatible with the previous version. Come secondo passaggio si esegue l'aggiornamento alla versione finale, non più compatibile con la versione di pre-aggiornamento ma compatibile con la versione intermedia.The second step is to upgrade the final version that breaks compatibility with the pre-update version, but is compatible with the intermediate version.

I domini di aggiornamento vengono specificati nel manifesto del cluster quando si configura il cluster.Update domains are specified in the cluster manifest when you configure the cluster. I domini di aggiornamento non ricevono gli aggiornamenti in un ordine particolare.Update domains do not receive updates in a particular order. Un dominio di aggiornamento è un'unità logica di distribuzione per un'applicazione.An update domain is a logical unit of deployment for an application. I domini di aggiornamento consentono ai servizi di garantire disponibilità elevata durante un aggiornamento.Update domains allow the services to remain at high availability during an upgrade.

Gli aggiornamenti non in sequenza sono possibili qualora l'aggiornamento venga applicato a tutti i nodi del cluster, ad esempio nel caso in cui l'applicazione disponga di un solo dominio di aggiornamento.Non-rolling upgrades are possible if the upgrade is applied to all nodes in the cluster, which is the case when the application has only one update domain. Questo approccio non è consigliato perché durante l'aggiornamento il servizio rimane inattivo e non disponibile.This approach is not recommended, since the service goes down and isn't available at the time of upgrade. Azure, inoltre, non offre alcuna garanzia per i casi in cui un cluster è configurato con un solo dominio di aggiornamento.Additionally, Azure doesn't provide any guarantees when a cluster is set up with only one update domain.

Al termine dell'aggiornamento, tutti i servizi e le repliche (istanze) manterranno la stessa versione. Se l'aggiornamento ha esito positivo, verranno aggiornati alla nuova versione, in caso contrario verrà eseguito il rollback alla versione precedente.After the upgrade completes, all the services and replicas(instances) would stay in the same version-i.e., if the upgrade succeeds, they will be updated to the new version; if the upgrade fails and is rolled back, they would be rolled back to the old version.

Controlli di integrità durante gli aggiornamentiHealth checks during upgrades

Per un aggiornamento devono essere impostati criteri di integrità oppure possono essere usati valori predefiniti.For an upgrade, health policies have to be set (or default values may be used). Un aggiornamento viene considerato riuscito quando tutti i domini di aggiornamento vengono aggiornati entro i valori di timeout specificati e risultano integri.An upgrade is termed successful when all update domains are upgraded within the specified time-outs, and when all update domains are deemed healthy. Un dominio di aggiornamento integro significa che ha superato tutti i controlli di integrità specificati nei criteri di integrità.A healthy update domain means that the update domain passed all the health checks specified in the health policy. Un criterio di integrità, ad esempio, può richiedere che tutti i servizi all'interno di un'istanza dell'applicazione siano integri, secondo quanto definito per l'integrità da Service Fabric.For example, a health policy may mandate that all services within an application instance must be healthy, as health is defined by Service Fabric.

I criteri e i controlli di integrità durante l'aggiornamento da parte dell’infrastruttura di servizi sono indipendenti dai servizi e dalle applicazioni.Health policies and checks during upgrade by Service Fabric are service and application agnostic. In altre parole, non vengono eseguiti test specifici per i servizi.That is, no service-specific tests are done. Ad esempio il servizio potrebbe avere un requisito di velocità effettiva, ma Service Fabric non dispone delle informazioni per verificare la velocità effettiva.For example, your service might have a throughput requirement, but Service Fabric does not have the information to check throughput. Per informazioni sui controlli che vengono eseguiti, vedere gli articoli sull'integrità .Refer to the health articles for the checks that are performed. I controlli eseguiti durante l'aggiornamento includono test di verifica che il pacchetto dell'applicazione sia stato copiato correttamente, che l'istanza sia stata avviata e così via.The checks that happen during an upgrade include tests for whether the application package was copied correctly, whether the instance was started, and so on.

L'integrità dell'applicazione è un'aggregazione delle entità figlio dell'applicazione.The application health is an aggregation of the child entities of the application. In breve, Service Fabric valuta l'integrità dell'applicazione tramite l'integrità segnalata per l'applicazione.In short, Service Fabric evaluates the health of the application through the health that is reported on the application. In questo modo, può valutare anche l'integrità di tutti i servizi relativi all'applicazione.It also evaluates the health of all the services for the application this way. In alternativa, Service Fabric può valutare l'integrità dei servizi aggregando l'integrità degli elementi figlio, ad esempio la replica dei servizi.Service Fabric further evaluates the health of the application services by aggregating the health of their children, such as the service replica. Se il criterio di integrità dell'applicazione è soddisfatto, l'aggiornamento può continuare.Once the application health policy is satisfied, the upgrade can proceed. In caso contrario, l'aggiornamento dell'applicazione ha esito negativo.If the health policy is violated, the application upgrade fails.

Modalità di aggiornamentoUpgrade modes

La modalità consigliata per l'aggiornamento dell'applicazione è la modalità monitorata, il metodo più comune.The mode that we recommend for application upgrade is the monitored mode, which is the commonly used mode. che esegue l'aggiornamento di un dominio di aggiornamento e, se vengono superati tutti i controlli di integrità (in base ai criteri specificati), passa automaticamente al dominio di aggiornamento successivo.Monitored mode performs the upgrade on one update domain, and if all health checks pass (per the policy specified), moves on to the next update domain automatically. In caso di esito negativo e/o di timeout dei controlli di integrità, viene eseguito il rollback dell'aggiornamento del dominio di aggiornamento oppure la modalità cambia in UnmonitoredManual.If health checks fail and/or time-outs are reached, the upgrade is either rolled back for the update domain, or the mode is changed to unmonitored manual. È possibile configurare l'aggiornamento in modo che venga scelta una di queste due modalità per gli aggiornamenti non riusciti.You can configure the upgrade to choose one of those two modes for failed upgrades.

La modalità UnmonitoredManual richiede l'intervento manuale dopo ogni aggiornamento eseguito in un dominio di aggiornamento per passare al dominio di aggiornamento successivo.Unmonitored manual mode needs manual intervention after every upgrade on an update domain, to kick off the upgrade on the next update domain. Non viene eseguito alcun controllo di integrità su Service Fabric.No Service Fabric health checks are performed. L'amministratore esegue i controlli di integrità o di stato previsti prima di avviare l'aggiornamento nel dominio di aggiornamento successivo.The administrator performs the health or status checks before starting the upgrade in the next update domain.

Aggiornare i servizi predefinitiUpgrade default services

I servizi predefiniti all'interno dell'applicazione Service Fabric possono essere aggiornati durante il processo di aggiornamento di un'applicazione.Default services within Service Fabric application can be upgraded during the upgrade process of an application. I servizi predefiniti sono definiti nel manifesto dell'applicazione.Default services are defined in the application manifest. Le regole standard di aggiornamento dei servizi predefiniti sono:The standard rules of upgrading default services are:

  1. I servizi predefiniti nel nuovo manifesto dell'applicazione che non esistono nel cluster vengono creati.Default services in the new application manifest that do not exist in the cluster are created.

    Suggerimento

    È necessario impostare EnableDefaultServicesUpgrade su true per abilitare le regole seguenti.EnableDefaultServicesUpgrade needs to be set to true to enable the following rules. Questa funzionalità è supportata dalla versione 5.5.This feature is supported from v5.5.

  2. I servizi predefiniti che esistono sia nel manifesto dell'applicazione precedente sia nella nuova versione vengono aggiornati.Default services existing in both previous application manifest and new version are updated. Le descrizioni dei servizi della nuova versione sovrascrivono quelle già presenti nel cluster.Service descriptions in the new version would overwrite those already in the cluster. L'aggiornamento di un'applicazione subisce automaticamente il rollback in caso di errore dell'aggiornamento del servizio predefinito.Application upgrade would rollback automatically upon updating default service failure.

  3. I servizi predefiniti del manifesto dell'applicazione precedente che non sono presenti nella nuova versione vengono eliminati.Default services in the previous application manifest but not in the new version are deleted. Si noti che questa eliminazione dei servizi predefiniti non è reversibile.Note that this deleting default services can not be reverted.

In caso di rollback dell'aggiornamento di un'applicazione, i servizi predefiniti vengono riportati allo stato precedente l'avvio dell'aggiornamento.In case of an application upgrade is rolled back, default services are reverted to the status before upgrade started. I servizi eliminati non possono in alcun caso essere creati.But deleted services can never be created.

Diagramma di flusso di aggiornamento di un'applicazioneApplication upgrade flowchart

Il diagramma di flusso che segue questo paragrafo aiuta a capire il processo di aggiornamento di un'applicazione di Service Fabric.The flowchart following this paragraph can help you understand the upgrade process of a Service Fabric application. In particolare, il flusso descrive in che modo i valori di timeout, ad esempio HealthCheckStableDuration, HealthCheckRetryTimeout e UpgradeHealthCheckInterval, consentono di verificare se l'aggiornamento in un dominio di aggiornamento viene considerato riuscito o non riuscito.In particular, the flow describes how the time-outs, including HealthCheckStableDuration, HealthCheckRetryTimeout, and UpgradeHealthCheckInterval, help control when the upgrade in one update domain is considered a success or a failure.

Processo di aggiornamento per un'applicazione di Service Fabric

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 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.