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

Alcuni parametri di servizi predefiniti nel manifesto dell'applicazione possono essere aggiornati anche durante un aggiornamento dell'applicazione.Some default service parameters defined in the application manifest can also be upgraded as part of an application upgrade. Durante un aggiornamento possono essere modificati solo i parametri di servizi che supportano la modifica tramite Update-ServiceFabricService.Only the service parameters that support being changed through Update-ServiceFabricService can be changed as part of an upgrade. Di seguito viene illustrato il comportamento in caso di modifica dei servizi predefiniti durante l'aggiornamento dell'applicazione:The behavior of changing default services during application upgrade is as follows:

  1. I servizi predefiniti presenti nel nuovo manifesto dell'applicazione che ancora non esistono nel cluster vengono creati.Default services in the new application manifest that do not already exist in the cluster are created.
  2. I servizi predefiniti che esistono sia nel manifesto dell'applicazione precedente sia in quello nuovo vengono aggiornati.Default services that exist in both the previous and new application manifests are updated. I parametri del servizio predefinito presente nel nuovo manifesto dell'applicazione sovrascrivono i parametri del servizio esistente.The parameters of the default service in the new application manifest overwrite the parameters of the existing service. Se si verifica un errore durante l'aggiornamento di un servizio predefinito, verrà eseguito il rollback automatico dell'aggiornamento dell'applicazione.The application upgrade will rollback automatically if updating a default service fails.
  3. I servizi predefiniti che non esistono nel nuovo manifesto dell'applicazione ma sono presenti nel cluster vengono eliminati.Default services that do not exist in the new application manifest are deleted if they exist in the cluster. Si noti che l'eliminazione di un servizio predefinito comporterà l'eliminazione di tutti gli stati del servizio e questa operazione non potrà essere annullata.Note that deleting a default service will result in deleting all that service's state and cannot be undone.

Quando viene eseguito il rollback di un aggiornamento dell'applicazione, vengono ripristinati i valori dei parametri del servizio predefinito precedenti all'avvio dell'aggiornamento. Tuttavia, non è possibile ricreare i servizi eliminati con lo stato precedente.When an application upgrade is rolled back, default service parameters are reverted back to their old values before the upgrade started but deleted services cannot be re-created with their old state.

Suggerimento

Il valore dell'impostazione di configurazione del cluster EnableDefaultServicesUpgrade deve essere true per abilitare le regole 2) e 3) indicate in precedenza (aggiornamento ed eliminazione di un servizio predefinito).The EnableDefaultServicesUpgrade cluster config setting must be true to enable rules 2) and 3) above (default service update and deletion). Questa funzionalità è supportata in Service Fabric a partire dalla versione 5.5.This feature is supported starting in Service Fabric version 5.5.

Aggiornamento di più applicazioni con endpoint HTTPSUpgrading multiple applications with HTTPS endpoints

Quando si usa HTTPS, è necessario prestare attenzione a non usare la stessa porta per istanze diverse della stessa applicazione.You need to be careful not to use the same port for different instances of the same application when using HTTPS. Ciò è dovuto al fatto che Service Fabric non sarà in grado di aggiornare il certificato per una delle istanze dell'applicazione.The reason is that Service Fabric won't be able to upgrade the cert for one of the application instances. Ad esempio, se sia l'applicazione 1 che l'applicazione 2 desiderano eseguire l'aggiornamento del certificato 1 al certificato 2.For example, if application 1 or application 2 both want to upgrade their cert 1 to cert 2. Al momento dell'aggiornamento, Service Fabric potrebbe avere eliminato la registrazione del certificato 1 con http.sys anche se è ancora utilizzato dall'altra applicazione.When the upgrade happens, Service Fabric might have cleaned up the cert 1 registration with http.sys even though the other application is still using it. Per evitare questo problema, Service Fabric rileva che è già presente un'altra istanza dell'applicazione registrata sulla porta con il certificato (a causa di http.sys) e l'operazione ha esito negativo.To prevent this, Service Fabric detects that there is already another application instance registered on the port with the certificate (due to http.sys) and fails the operation.

Pertanto Service Fabric non supporta l'aggiornamento di due servizi diversi mediante la stessa porta in istanze dell'applicazione diverse.Hence Service Fabric does not support upgrading two different services using the same port in different application instances. In altre parole, non è possibile utilizzare lo stesso certificato in servizi diversi sulla stessa porta.In other words, you cannot use the same certificate on different services on the same port. Se è necessario avere un certificato condiviso sulla stessa porta, occorre verificare che i servizi si trovino su computer diversi con vincoli di posizionamento.If you need to have a shared certificate on the same port, you need to ensure that the services are placed on different machines with placement constraints. In alternativa, utilizzare le porte dinamiche di Service Fabric se possibile per ogni servizio in ogni istanza dell'applicazione.Or consider using Service Fabric dynamic ports if possible for each service in each application instance.

Se si verifica un errore di aggiornamento con https, viene visualizzato un avviso indicante che l'API del server Windows HTTP non supporta più certificati per le applicazioni che condividono una porta.If you see an upgrade fail with https, an error warning saying "The Windows HTTP Server API does not support multiple certificates for applications that share a port.”

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.