Atualização de aplicação do Service FabricService Fabric application upgrade

Um aplicativo Service Fabric do Azure é uma coleção de serviços.An Azure Service Fabric application is a collection of services. Durante uma atualização, o Service Fabric compara o novo manifesto do aplicativo com a versão anterior e determina quais serviços no aplicativo exigem atualizações.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 compara os números de versão nos manifestos do serviço com os números de versão na versão anterior.Service Fabric compares the version numbers in the service manifests with the version numbers in the previous version. Se um serviço não tiver sido alterado, esse serviço não será atualizado.If a service has not changed, that service is not upgraded.

Visão geral das atualizações sem interrupçãoRolling upgrades overview

Em uma atualização de aplicativo sem interrupção, a atualização é executada em estágios.In a rolling application upgrade, the upgrade is performed in stages. Em cada estágio, a atualização é aplicada a um subconjunto de nós no cluster, chamado de domínio de atualização.At each stage, the upgrade is applied to a subset of nodes in the cluster, called an update domain. Como resultado, o aplicativo permanecerá disponível durante a atualização.As a result, the application remains available throughout the upgrade. Durante a atualização, o cluster pode conter uma combinação das versões antiga e nova.During the upgrade, the cluster may contain a mix of the old and new versions.

Por esse motivo, as duas versões devem ser compatíveis com versões posteriores e retroativas.For that reason, the two versions must be forward and backward compatible. Se não forem compatíveis, o administrador do aplicativo será responsável por preparar uma atualização de várias fases para manter a disponibilidade.If they are not compatible, the application administrator is responsible for staging a multiple-phase upgrade to maintain availability. Em uma atualização de várias fases, a primeira etapa é atualizar para uma versão intermediária do aplicativo compatível com a versão anterior.In a multiple-phase upgrade, the first step is upgrading to an intermediate version of the application that is compatible with the previous version. A segunda etapa é atualizar a versão final que interrompe a compatibilidade com a versão anterior à atualização, mas é compatível com a versão intermediária.The second step is to upgrade the final version that breaks compatibility with the pre-update version, but is compatible with the intermediate version.

Os domínios de atualização são especificados no manifesto do cluster quando você configura o cluster.Update domains are specified in the cluster manifest when you configure the cluster. Os domínios de atualização não recebem atualizações em uma ordem específica.Update domains do not receive updates in a particular order. Um domínio de atualização é uma unidade lógica de implantação para um aplicativo.An update domain is a logical unit of deployment for an application. Os domínios de atualização permitem que os serviços permaneçam em alta disponibilidade durante uma atualização.Update domains allow the services to remain at high availability during an upgrade.

Atualizações sem interrupção serão possíveis se a atualização for aplicada a todos os nós no cluster, que é o caso quando o aplicativo tem apenas um domínio de atualização.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. Essa abordagem não é recomendada, pois o serviço fica inativo e não está disponível no momento da atualização.This approach is not recommended, since the service goes down and isn't available at the time of upgrade. Além disso, o Azure não fornece nenhuma garantia quando um cluster é configurado com apenas um domínio de atualização.Additionally, Azure doesn't provide any guarantees when a cluster is set up with only one update domain.

Após a conclusão da atualização, todos os serviços e réplicas (instâncias) permanecerão na mesma versão-i. e. se a atualização for bem sucedido, ela será atualizada para a nova versão; se a atualização falhar e for revertida, ela será revertida para a versão antiga.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.

Verificações de integridade durante atualizaçõesHealth checks during upgrades

Para uma atualização, as políticas de integridade precisam ser definidas (ou valores padrão podem ser usados).For an upgrade, health policies have to be set (or default values may be used). Uma atualização é concluída com êxito quando todos os domínios de atualização são atualizados dentro dos tempos limite especificados e quando todos os domínios de atualização são considerados íntegros.An upgrade is termed successful when all update domains are upgraded within the specified time-outs, and when all update domains are deemed healthy. Um domínio de atualização íntegro significa que o domínio de atualização passou todas as verificações de integridade especificadas na política de integridade.A healthy update domain means that the update domain passed all the health checks specified in the health policy. Por exemplo, uma política de integridade pode exigir que todos os serviços em uma instância de aplicativo devem estar íntegros, pois a integridade é definida por 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.

As políticas de integridade e verificações durante a atualização por Service Fabric são independentes de serviço e aplicativo.Health policies and checks during upgrade by Service Fabric are service and application agnostic. Ou seja, nenhum teste específico de serviço é feito.That is, no service-specific tests are done. Por exemplo, o serviço pode ter um requisito de taxa de transferência, mas Service Fabric não tem as informações para verificar a taxa de transferência.For example, your service might have a throughput requirement, but Service Fabric does not have the information to check throughput. Consulte os artigos de integridade para as verificações que são executadas.Refer to the health articles for the checks that are performed. As verificações que ocorrem durante uma atualização incluem testes para se o pacote de aplicativos foi copiado corretamente, se a instância foi iniciada e assim por diante.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.

A integridade do aplicativo é uma agregação das entidades filho do aplicativo.The application health is an aggregation of the child entities of the application. Em suma, Service Fabric avalia a integridade do aplicativo por meio da integridade relatada no aplicativo.In short, Service Fabric evaluates the health of the application through the health that is reported on the application. Ele também avalia a integridade de todos os serviços do aplicativo dessa maneira.It also evaluates the health of all the services for the application this way. Service Fabric avalia ainda mais a integridade dos serviços de aplicativo agregando a integridade de seus filhos, como a réplica de serviço.Service Fabric further evaluates the health of the application services by aggregating the health of their children, such as the service replica. Depois que a política de integridade do aplicativo for satisfeita, a atualização poderá continuar.Once the application health policy is satisfied, the upgrade can proceed. Se a política de integridade for violada, a atualização do aplicativo falhará.If the health policy is violated, the application upgrade fails.

Modos de atualizaçãoUpgrade modes

O modo que recomendamos para a atualização do aplicativo é o modo monitorado, que é o modo usado normalmente.The mode that we recommend for application upgrade is the monitored mode, which is the commonly used mode. O modo monitorado executa a atualização em um domínio de atualização e, se todas as verificações de integridade forem aprovadas (de acordo com a política especificada), o próximo domínio de atualização será movido automaticamente.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. Se as verificações de integridade falharem e/ou o tempo limite forem atingidos, a atualização será revertida para o domínio de atualização ou o modo será alterado para manual não monitorado.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. Você pode configurar a atualização para escolher um desses dois modos para atualizações com falha.You can configure the upgrade to choose one of those two modes for failed upgrades.

O modo manual não monitorado precisa de intervenção manual após cada atualização em um domínio de atualização para iniciar a atualização no próximo domínio de atualização.Unmonitored manual mode needs manual intervention after every upgrade on an update domain, to kick off the upgrade on the next update domain. Nenhuma verificação de integridade Service Fabric é executada.No Service Fabric health checks are performed. O administrador executa as verificações de integridade ou de status antes de iniciar a atualização no próximo domínio de atualização.The administrator performs the health or status checks before starting the upgrade in the next update domain.

Atualizar serviços padrãoUpgrade default services

Alguns parâmetros de serviço padrão definidos no manifesto do aplicativo também podem ser atualizados como parte de uma atualização de aplicativo.Some default service parameters defined in the application manifest can also be upgraded as part of an application upgrade. Somente os parâmetros de serviço que dão suporte à alteração por meio de Update-ServiceFabricService podem ser alterados como parte de uma atualização.Only the service parameters that support being changed through Update-ServiceFabricService can be changed as part of an upgrade. O comportamento da alteração de serviços padrão durante a atualização do aplicativo é o seguinte:The behavior of changing default services during application upgrade is as follows:

  1. Os serviços padrão no novo manifesto do aplicativo que ainda não existem no cluster são criados.Default services in the new application manifest that do not already exist in the cluster are created.
  2. Os serviços padrão que existem nos manifestos de aplicativo anteriores e novos são atualizados.Default services that exist in both the previous and new application manifests are updated. Os parâmetros do serviço padrão no novo manifesto do aplicativo substituem os parâmetros do serviço existente.The parameters of the default service in the new application manifest overwrite the parameters of the existing service. A atualização do aplicativo será revertida automaticamente se a atualização de um serviço padrão falhar.The application upgrade will rollback automatically if updating a default service fails.
  3. Os serviços padrão que não existem no novo manifesto do aplicativo serão excluídos se existirem no cluster.Default services that do not exist in the new application manifest are deleted if they exist in the cluster. Observe que a exclusão de um serviço padrão resultará na exclusão de todo o estado do serviço e não poderá ser desfeita.Note that deleting a default service will result in deleting all that service's state and cannot be undone.

Quando uma atualização de aplicativo é revertida, os parâmetros de serviço padrão são revertidos para seus valores antigos antes do início da atualização, mas os serviços excluídos não podem ser recriados com seu estado antigo.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.

Dica

A configuração de cluster EnableDefaultServicesUpgrade deve ser verdadeira para habilitar as regras 2) e 3) acima (atualização e exclusão de serviço padrão).The EnableDefaultServicesUpgrade cluster config setting must be true to enable rules 2) and 3) above (default service update and deletion). Esse recurso tem suporte a partir do Service Fabric versão 5,5.This feature is supported starting in Service Fabric version 5.5.

Atualizando vários aplicativos com pontos de extremidade HTTPSUpgrading multiple applications with HTTPS endpoints

Você precisa ter cuidado para não usar a mesma porta para instâncias diferentes do mesmo aplicativo ao usar httpS.You need to be careful not to use the same port for different instances of the same application when using HTTPS. O motivo é que Service Fabric não poderá atualizar o certificado para uma das instâncias do aplicativo.The reason is that Service Fabric won't be able to upgrade the cert for one of the application instances. Por exemplo, se o aplicativo 1 ou o aplicativo 2 quiser atualizar seu certificado 1 para CERT 2.For example, if application 1 or application 2 both want to upgrade their cert 1 to cert 2. Quando ocorre a atualização, Service Fabric pode ter limpado o registro do certificado 1 com o http. sys, mesmo que o outro aplicativo ainda o esteja usando.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. Para evitar isso, Service Fabric detecta que já existe outra instância do aplicativo registrada na porta com o certificado (devido a http. sys) e falha na operação.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.

Portanto Service Fabric não dá suporte à atualização de dois serviços diferentes usando a mesma porta em diferentes instâncias de aplicativo.Hence Service Fabric does not support upgrading two different services using the same port in different application instances. Em outras palavras, você não pode usar o mesmo certificado em serviços diferentes na mesma porta.In other words, you cannot use the same certificate on different services on the same port. Se precisar ter um certificado compartilhado na mesma porta, você precisará garantir que os serviços sejam colocados em computadores diferentes com restrições de posicionamento.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. Ou considere usar Service Fabric portas dinâmicas, se possível, para cada serviço em cada instância do aplicativo.Or consider using Service Fabric dynamic ports if possible for each service in each application instance.

Se você vir uma falha de atualização com HTTPS, um aviso de erro dizendo "a API do servidor HTTP do Windows não dá suporte a vários certificados para aplicativos que compartilham uma 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.”

Fluxograma de atualização de aplicativoApplication upgrade flowchart

O fluxograma após este parágrafo pode ajudá-lo a entender o processo de atualização de um aplicativo Service Fabric.The flowchart following this paragraph can help you understand the upgrade process of a Service Fabric application. Em particular, o fluxo descreve como os tempos limite, incluindo HealthCheckStableDuration, HealthCheckRetryTimeoute UpgradeHealthCheckInterval, ajudam a controlar quando a atualização em um domínio de atualização é considerada um êxito ou uma falha.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.

O processo de atualização para um aplicativo Service Fabric

Passos seguintesNext steps

Atualizar seu aplicativo usando o Visual Studio orienta você durante uma atualização de aplicativo usando o Visual Studio.Upgrading your Application Using Visual Studio walks you through an application upgrade using Visual Studio.

Atualizar seu aplicativo usando o PowerShell orienta você durante uma atualização de aplicativo usando o PowerShell.Upgrading your Application Using PowerShell walks you through an application upgrade using PowerShell.

Controle como o aplicativo é atualizado usando parâmetros de atualização.Control how your application upgrades by using Upgrade Parameters.

Faça com que o aplicativo seja atualizado de forma compatível aprendendo a usar a serialização de dados.Make your application upgrades compatible by learning how to use Data Serialization.

Saiba como usar a funcionalidade avançada ao atualizar seu aplicativo consultando Tópicos avançados.Learn how to use advanced functionality while upgrading your application by referring to Advanced Topics.

Corrija problemas comuns em atualizações de aplicativos consultando as etapas em solução de problemas de atualizações de aplicativos.Fix common problems in application upgrades by referring to the steps in Troubleshooting Application Upgrades.