Atualização da aplicação do Service Fabric

Uma aplicação do Azure Service Fabric é uma coleção de serviços. Durante uma atualização, o Service Fabric compara o novo manifesto da aplicação com a versão anterior e determina quais os serviços na aplicação que necessitam de atualizações. O Service Fabric compara a versão nos manifestos do serviço com a versão na versão anterior. Se a versão do serviço não tiver sido alterada, esse serviço não será atualizado.

Nota

Os ApplicationParameters não são preservados numa atualização da aplicação. Para preservar os parâmetros atuais da aplicação, o utilizador deve obter primeiro os parâmetros e transmiti-los para a chamada à API de atualização, como abaixo:

$myApplication = Get-ServiceFabricApplication -ApplicationName fabric:/myApplication
$appParamCollection = $myApplication.ApplicationParameters

$applicationParameterMap = @{}
foreach ($pair in $appParamCollection)
{
    $applicationParameterMap.Add($pair.Name, $pair.Value);
}

Start-ServiceFabricApplicationUpgrade -ApplicationName fabric:/myApplication -ApplicationTypeVersion 2.0.0 -ApplicationParameter $applicationParameterMap -Monitored -FailureAction Rollback

Descrição geral das atualizações sem interrupção

Numa atualização sem interrupção da aplicação, a atualização é efetuada por fases. Em cada fase, a atualização é aplicada a um subconjunto de nós no cluster, denominado domínio de atualização. Como resultado, a aplicação permanece disponível durante toda a atualização. Durante a atualização, o cluster pode conter uma combinação das versões antigas e novas.

Por esse motivo, as duas versões têm de ser retrocompatíveis e retrocompatíveis. Se não forem compatíveis, o administrador da aplicação é responsável por testar uma atualização de várias fases para manter a disponibilidade. Numa atualização de várias fases, o primeiro passo é atualizar para uma versão intermédia da aplicação compatível com a versão anterior. O segundo passo é atualizar a versão final que interrompe a compatibilidade com a versão de pré-atualização, mas é compatível com a versão intermédia.

Os domínios de atualização são especificados no manifesto do cluster quando configura o cluster. Os domínios de atualização não recebem atualizações por uma ordem específica. Um domínio de atualização é uma unidade lógica de implementação para uma aplicação. Os domínios de atualização permitem que os serviços permaneçam em elevada disponibilidade durante uma atualização.

As atualizações sem interrupção são possíveis se a atualização for aplicada a todos os nós no cluster, o que acontece quando a aplicação tem apenas um domínio de atualização. Esta abordagem não é recomendada, uma vez que o serviço fica inativo e não está disponível no momento da atualização. Além disso, o Azure não fornece quaisquer garantias quando um cluster é configurado com apenas um domínio de atualização.

Após a conclusão da atualização, todos os serviços e réplicas (instâncias) permanecerão na mesma versão, ou seja, se a atualização for bem-sucedida, serão atualizados para a nova versão; Se a atualização falhar e for revertida, estas serão revertidas para a versão antiga.

Verificações de estado de funcionamento durante atualizações

Para uma atualização, as políticas de estado de funcionamento têm de ser definidas (ou podem ser utilizados valores predefinidos). Uma atualização é denominada 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 em bom estado de funcionamento. Um domínio de atualização em bom estado de funcionamento significa que o domínio de atualização passou todas as verificações de estado de funcionamento especificadas na política de estado de funcionamento. Por exemplo, uma política de estado de funcionamento pode exigir que todos os serviços numa instância de aplicação estejam em bom estado de funcionamento, uma vez que o estado de funcionamento é definido pelo Service Fabric.

As políticas de estado de funcionamento e as verificações durante a atualização pelo Service Fabric são agnósticas ao serviço e à aplicação. Ou seja, não são realizados testes específicos do serviço. Por exemplo, o serviço pode ter um requisito de débito, mas o Service Fabric não tem as informações para verificar o débito. Veja os artigos de estado de funcionamento das verificações efetuadas. As verificações que ocorrem durante uma atualização incluem testes para saber se o pacote de aplicação foi copiado corretamente, se a instância foi iniciada, etc.

O estado de funcionamento da aplicação é uma agregação das entidades subordinados da aplicação. Resumindo, o Service Fabric avalia o estado de funcionamento da aplicação através do estado de funcionamento comunicado na aplicação. Também avalia o estado de funcionamento de todos os serviços da aplicação desta forma. O Service Fabric avalia ainda mais o estado de funcionamento dos serviços da aplicação ao agregar o estado de funcionamento dos menores, como a réplica de serviço. Assim que a política de estado de funcionamento da aplicação estiver satisfeita, a atualização pode continuar. Se a política de estado de funcionamento for violada, a atualização da aplicação falhará.

Modos de atualização

O modo que recomendamos para a atualização da aplicação é o modo monitorizado, que é o modo mais utilizado. O modo monitorizado efetua a atualização num domínio de atualização e, se todas as verificações de estado de funcionamento forem aprovadas (de acordo com a política especificada), passa automaticamente para o domínio de atualização seguinte. Se as verificações de estado de funcionamento falharem e/ou forem atingidos tempos limite, a atualização será revertida para o domínio de atualização ou o modo será alterado para manual não monitorizado. Pode configurar a atualização para escolher um desses dois modos para atualizações falhadas.

O modo manual não monitorizado necessita de intervenção manual após cada atualização num domínio de atualização, para iniciar a atualização no domínio de atualização seguinte. Não são efetuadas verificações de estado de funcionamento do Service Fabric. O administrador efetua as verificações de estado de funcionamento antes de iniciar a atualização no domínio de atualização seguinte.

Atualizar serviços predefinidos

Alguns parâmetros de serviço predefinidos definidos no manifesto da aplicação também podem ser atualizados como parte de uma atualização da aplicação. Apenas os parâmetros de serviço que suportam a alteração através de Update-ServiceFabricService podem ser alterados como parte de uma atualização. O comportamento da alteração dos serviços predefinidos durante a atualização da aplicação é o seguinte:

  1. São criados serviços predefinidos no novo manifesto de aplicação que ainda não existem no cluster.
  2. Os serviços predefinidos que existem nos manifestos da aplicação anterior e no novo são atualizados. Os parâmetros do serviço predefinido no novo manifesto de aplicação substituem os parâmetros do serviço existente. A atualização da aplicação será revertida automaticamente se a atualização de um serviço predefinido falhar.
  3. Os serviços predefinidos que não existem no novo manifesto de aplicação são eliminados se existirem no cluster. Tenha em atenção que a eliminação de um serviço predefinido resultará na eliminação de todo o estado desse serviço e não poderá ser anulada.

Quando uma atualização da aplicação é revertida, os parâmetros de serviço predefinidos são revertidos para os valores antigos antes do início da atualização, mas os serviços eliminados não podem ser recriados com o estado antigo.

Dica

A definição de configuração do cluster EnableDefaultServicesUpgrade tem de ser verdadeira para ativar as regras 2) e 3) acima (atualização e eliminação de serviço predefinidas). Esta funcionalidade é suportada a partir da versão 5.5 do Service Fabric.

Atualizar várias aplicações com pontos finais HTTPS

Tem de ter cuidado para não utilizar a mesma porta para instâncias diferentes da mesma aplicação ao utilizar HTTPS. O motivo é que o Service Fabric não conseguirá atualizar o certificado para uma das instâncias da aplicação. Por exemplo, se a aplicação 1 ou aplicação 2 quiser atualizar o certificado 1 para o certificado 2. Quando a atualização ocorre, o Service Fabric pode ter limpo o registo do certificado 1 com http.sys mesmo que a outra aplicação ainda o esteja a utilizar. Para evitar esta situação, o Service Fabric deteta que já existe outra instância de aplicação registada na porta com o certificado (devido a http.sys) e falha na operação.

Por conseguinte, o Service Fabric não suporta a atualização de dois serviços diferentes com a mesma porta em instâncias de aplicações diferentes. Por outras palavras, não pode utilizar o mesmo certificado em serviços diferentes na mesma porta. Se precisar de ter um certificado partilhado na mesma porta, tem de garantir que os serviços são colocados em diferentes computadores com restrições de colocação. Em alternativa, considere utilizar portas dinâmicas do Service Fabric, se possível, para cada serviço em cada instância de aplicação.

Se vir uma falha de atualização com https, um aviso de erro a indicar "A API do Servidor HTTP do Windows não suporta vários certificados para aplicações que partilham uma porta".

Fluxograma de atualização de aplicações

O fluxograma que se segue a este parágrafo pode ajudá-lo a compreender o processo de atualização de uma aplicação do Service Fabric. Em particular, o fluxo descreve como os tempos limite, incluindo HealthCheckStableDuration, HealthCheckRetryTimeout e UpgradeHealthCheckInterval, ajudam a controlar quando a atualização num domínio de atualização é considerada um sucesso ou uma falha.

O processo de atualização de uma Aplicação do Service Fabric

Passos seguintes

Atualizar a aplicação com o Visual Studio orienta-o ao longo de uma atualização da aplicação com o Visual Studio.

Atualizar a aplicação com o PowerShell orienta-o ao longo de uma atualização da aplicação com o PowerShell.

Controle a forma como a sua aplicação é atualizada através dos Parâmetros de Atualização.

Torne as atualizações da sua aplicação compatíveis ao aprender a utilizar a Serialização de Dados.

Saiba como utilizar funcionalidades avançadas ao atualizar a sua aplicação ao consultar Tópicos Avançados.

Corrija problemas comuns nas atualizações de aplicações ao consultar os passos em Resolução de Problemas de Atualizações de Aplicações.