Partilhar via


Atualização do aplicativo Service Fabric usando o PowerShell


A abordagem de atualização mais usada e recomendada é a atualização contínua monitorada. O Azure Service Fabric monitora a integridade do aplicativo que está sendo atualizado com base em um conjunto de políticas de integridade. Depois que um domínio de atualização (UD) é atualizado, o Service Fabric avalia a integridade do aplicativo e prossegue para o próximo domínio de atualização ou falha na atualização, dependendo das políticas de integridade.

Uma atualização de aplicativo monitorada pode ser executada usando as APIs gerenciadas ou nativas, PowerShell, CLI do Azure, Java ou REST. Para obter instruções sobre como executar uma atualização usando o Visual Studio, consulte Atualizando seu aplicativo usando o Visual Studio.

Com as atualizações contínuas monitoradas do Service Fabric, o administrador do aplicativo pode configurar a política de avaliação de integridade que o Service Fabric usa para determinar se o aplicativo está íntegro. Além disso, o administrador pode configurar a ação a ser executada quando a avaliação de integridade falhar (por exemplo, fazer uma reversão automática). Esta seção apresenta uma atualização monitorada para um dos exemplos de SDK que usa o PowerShell.

Confira nesta página um vídeo de treinamento que também o orienta através de uma atualização de aplicativo:

Nota

ApplicationParameters não são preservados em uma atualização de aplicativo. Para preservar os parâmetros atuais do aplicativo, o usuário deve obter os parâmetros primeiro e passá-los para a chamada de 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

Etapa 1: Criar e implantar o exemplo de Objetos Visuais

Crie e publique o aplicativo clicando com o botão direito do mouse no projeto do aplicativo, VisualObjectsApplication, e selecionando o comando Publicar. Para obter mais informações, consulte Tutorial de atualização do aplicativo Service Fabric. Como alternativa, você pode usar o PowerShell para implantar seu aplicativo.

Nota

Antes que qualquer um dos comandos do Service Fabric possa ser usado no PowerShell, primeiro você precisa se conectar ao cluster usando o Connect-ServiceFabricCluster cmdlet. Da mesma forma, presume-se que o cluster já tenha sido configurado em sua máquina local. Consulte o artigo sobre como configurar seu ambiente de desenvolvimento do Service Fabric.

Depois de criar o projeto no Visual Studio, você pode usar o comando do PowerShell Copy-ServiceFabricApplicationPackage para copiar o pacote do aplicativo para o ImageStore. Se quiser verificar o pacote do aplicativo localmente, use o cmdlet Test-ServiceFabricApplicationPackage . A próxima etapa é registrar o aplicativo no tempo de execução do Service Fabric usando o cmdlet Register-ServiceFabricApplicationType . A etapa a seguir é iniciar uma instância do aplicativo usando o cmdlet New-ServiceFabricApplication . Essas três etapas são análogas ao uso do item de menu Implantar no Visual Studio. Quando o provisionamento estiver concluído, você deve limpar o pacote de aplicativo copiado do armazenamento de imagens para reduzir os recursos consumidos. Se um tipo de pedido já não for necessário, deve ser cancelado pelo mesmo motivo. Consulte Implantar e remover aplicativos usando o PowerShell para obter mais informações.

Agora, você pode usar o Service Fabric Explorer para exibir o cluster e o aplicativo. O aplicativo tem um serviço Web que pode ser navegado no Internet Explorer digitando http://localhost:8081/visualobjects na barra de endereço. Você deve ver alguns objetos visuais flutuantes se movendo na tela. Além disso, você pode usar Get-ServiceFabricApplication para verificar o status do aplicativo.

Etapa 2: Atualizar o exemplo de objetos visuais

Você pode notar que, com a versão que foi implantada na Etapa 1, os objetos visuais não giram. Vamos atualizar este aplicativo para um onde os objetos visuais também giram.

Selecione o projeto VisualObjects.ActorService dentro da solução VisualObjects e abra o arquivo StatefulVisualObjectActor.cs. Dentro desse arquivo, navegue até o método MoveObject, comente e this.State.Move()descomente this.State.Move(true). Essa alteração gira os objetos depois que o serviço é atualizado.

Também precisamos atualizar o arquivo ServiceManifest.xml (em PackageRoot) do projeto VisualObjects.ActorService. Atualize o CodePackage e a versão de serviço para 2.0 e as linhas correspondentes no arquivo ServiceManifest.xml . Você pode usar a opção Editar arquivos de manifesto do Visual Studio depois de clicar com o botão direito do mouse na solução para fazer as alterações no arquivo de manifesto.

Depois que as alterações forem feitas, o manifesto deve ter a seguinte aparência (partes destacadas mostram as alterações):

<ServiceManifestName="VisualObjects.ActorService" Version="2.0" xmlns="http://schemas.microsoft.com/2011/01/fabric" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance">

<CodePackageName="Code" Version="2.0">

Agora, o arquivo ApplicationManifest.xml (encontrado no projeto VisualObjects na solução VisualObjects) é atualizado para a versão 2.0 do projeto VisualObjects.ActorService. Além disso, a versão do aplicativo é atualizada para 2.0.0.0 de 1.0.0.0. O ApplicationManifest.xml deve ser semelhante ao seguinte trecho:

<ApplicationManifestxmlns:xsd="https://www.w3.org/2001/XMLSchema" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" ApplicationTypeName="VisualObjects" ApplicationTypeVersion="2.0.0.0" xmlns="http://schemas.microsoft.com/2011/01/fabric">

 <ServiceManifestRefServiceManifestName="VisualObjects.ActorService" ServiceManifestVersion="2.0" />

Agora, crie o projeto selecionando apenas o projeto ActorService e, em seguida, clicando com o botão direito do mouse e selecionando a opção Build no Visual Studio. Se você selecionar Reconstruir tudo, deverá atualizar as versões de todos os projetos, pois o código teria sido alterado. Em seguida, vamos empacotar o aplicativo atualizado clicando com o botão direito do mouse em VisualObjectsApplication, selecionando o menu Service Fabric e escolhendo Package. Esta ação cria um pacote de aplicativo que pode ser implantado. Seu aplicativo atualizado está pronto para ser implantado.

Etapa 3: Decidir sobre políticas de integridade e parâmetros de atualização

Familiarize-se com os parâmetros de atualização do aplicativo e o processo de atualização para obter uma boa compreensão dos vários parâmetros de atualização, tempos limite e critérios de integridade aplicados. Para este passo a passo, o critério de avaliação da integridade do serviço é definido como os valores padrão (e recomendados), o que significa que todos os serviços e instâncias devem estar íntegros após a atualização.

No entanto, vamos aumentar o HealthCheckStableDuration para 180 segundos (para que os serviços estejam íntegros por pelo menos 120 segundos antes que a atualização prossiga para o próximo domínio de atualização). Vamos também definir o UpgradeDomainTimeout para ser 1200 segundos e o UpgradeTimeout para ser 3000 segundos.

Por fim, também vamos definir o UpgradeFailureAction como reversão. Essa opção requer que o Service Fabric reverta o aplicativo para a versão anterior se encontrar algum problema durante a atualização. Assim, ao iniciar a atualização (na Etapa 4), os seguintes parâmetros são especificados:

FailureAction = Reversão

HealthCheckStableDurationSec = 180

UpgradeDomainTimeoutSec = 1200

UpgradeTimeout = 3000

Etapa 4: Preparar o aplicativo para atualização

Agora o aplicativo está criado e pronto para ser atualizado. Se você abrir uma janela do PowerShell como administrador e digitar Get-ServiceFabricApplication, ele deverá informar que é o tipo de aplicativo 1.0.0.0 de VisualObjects que foi implantado.

O pacote do aplicativo é armazenado no seguinte caminho relativo onde você descompactou o SDK do Service Fabric: Samples\Services\Stateful\VisualObjects\VisualObjects\obj\x64\Debug. Você deve encontrar uma pasta "Package" nesse diretório, onde o pacote do aplicativo está armazenado. Verifique os carimbos de data/hora para garantir que é a compilação mais recente (talvez seja necessário modificar os caminhos apropriadamente também).

Agora vamos copiar o pacote de aplicativo atualizado para o Service Fabric ImageStore (onde os pacotes de aplicativos são armazenados pelo Service Fabric). O parâmetro ApplicationPackagePathInImageStore informa ao Service Fabric onde ele pode encontrar o pacote do aplicativo. Colocamos o aplicativo atualizado em "VisualObjects_V2" com o seguinte comando (você pode precisar modificar os caminhos novamente apropriadamente).

Copy-ServiceFabricApplicationPackage -ApplicationPackagePath .\Samples\Services\Stateful\VisualObjects\VisualObjects\obj\x64\Debug\Package -ApplicationPackagePathInImageStore "VisualObjects\_V2"

A próxima etapa é registrar esse aplicativo no Service Fabric, o que pode ser executado usando o comando Register-ServiceFabricApplicationType :

Register-ServiceFabricApplicationType -ApplicationPathInImageStore "VisualObjects\_V2"

Se o comando anterior não for bem-sucedido, é provável que você precise de uma reconstrução de todos os serviços. Como mencionado na Etapa 2, você pode ter que atualizar sua versão do WebService também.

É recomendável remover o pacote do aplicativo depois que o aplicativo for registrado com êxito. A exclusão de pacotes de aplicativos do armazenamento de imagens libera recursos do sistema. Manter pacotes de aplicativos não utilizados consome armazenamento em disco e leva a problemas de desempenho do aplicativo.

Remove-ServiceFabricApplicationPackage -ApplicationPackagePathInImageStore "VisualObjects\_V2" -ImageStoreConnectionString fabric:ImageStore

Etapa 5: Iniciar a atualização do aplicativo

Agora, estamos prontos para iniciar a atualização do aplicativo usando o comando Start-ServiceFabricApplicationUpgrade :

Start-ServiceFabricApplicationUpgrade -ApplicationName fabric:/VisualObjects -ApplicationTypeVersion 2.0.0.0 -HealthCheckStableDurationSec 60 -UpgradeDomainTimeoutSec 1200 -UpgradeTimeout 3000   -FailureAction Rollback -Monitored

O nome do aplicativo é o mesmo que foi descrito no arquivo ApplicationManifest.xml . O Service Fabric usa esse nome para identificar qual aplicativo está sendo atualizado. Se você definir os tempos limite para ser muito curto, você pode encontrar uma mensagem de falha que declara o problema. Consulte a seção de solução de problemas ou aumente os tempos limites.

Agora, à medida que a atualização do aplicativo prossegue, você pode monitorá-lo usando o Service Fabric Explorer ou usando o comando Get-ServiceFabricApplicationUpgrade PowerShell:

Get-ServiceFabricApplicationUpgrade fabric:/VisualObjects

Em alguns minutos, o status obtido usando o comando PowerShell anterior deve indicar que todos os domínios de atualização foram atualizados (concluídos). E você deve descobrir que os objetos visuais na janela do seu navegador começaram a girar!

Você pode tentar atualizar da versão 2 para a versão 3 ou da versão 2 para a versão 1 como um exercício. Mudar da versão 2 para a versão 1 também é considerado uma atualização. Brinque com os tempos limite e as políticas de saúde para se familiarizar com eles. Quando você está implantando em um cluster do Azure, os parâmetros precisam ser definidos adequadamente. É bom definir os tempos limite de forma conservadora.

Próximos passos

Atualizar seu aplicativo usando o Visual Studio orienta você através de uma atualização de aplicativo usando o Visual Studio.

Controle como seu aplicativo é atualizado usando parâmetros de atualização.

Torne as atualizações do seu aplicativo compatíveis aprendendo a usar a serialização de dados.

Saiba como usar a funcionalidade avançada ao atualizar seu aplicativo consultando tópicos avançados.

Corrija problemas comuns em atualizações de aplicativos consultando as etapas em Solução de problemas de atualizações de aplicativos.