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


A abordagem de atualização recomendada e utilizada mais frequentemente é a atualização sem interrupção monitorizada. O Azure Service Fabric monitoriza o estado de funcionamento da aplicação que está a ser atualizada com base num conjunto de políticas de estado de funcionamento. Assim que um domínio de atualização (UD) é atualizado, o Service Fabric avalia o estado de funcionamento da aplicação e avança para o domínio de atualização seguinte ou falha a atualização dependendo das políticas de estado de funcionamento.

Uma atualização de aplicação monitorizada pode ser efetuada com as APIs geridas ou nativas, o PowerShell, a CLI do Azure, o Java ou o REST. Para obter instruções sobre como efetuar uma atualização com o Visual Studio, veja Atualizar a sua aplicação com o Visual Studio.

Com as atualizações sem interrupção monitorizadas do Service Fabric, o administrador da aplicação pode configurar a política de avaliação do estado de funcionamento que o Service Fabric utiliza para determinar se a aplicação está em bom estado de funcionamento. Além disso, o administrador pode configurar a ação a ser executada quando a avaliação do estado de funcionamento falhar (por exemplo, efetuar uma reversão automática.) Esta secção explica uma atualização monitorizada para um dos exemplos do SDK que utiliza o PowerShell.

Consulte esta página para ver um vídeo de formação que também o orienta através de uma atualização da aplicação:

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

Passo 1: criar e implementar o exemplo de Objetos Visuais

Crie e publique a aplicação ao clicar com o botão direito do rato no projeto da aplicação, VisualObjectsApplication e selecionar o comando Publicar . Para obter mais informações, veja Tutorial de atualização de aplicações do Service Fabric. Em alternativa, pode utilizar o PowerShell para implementar a sua aplicação.

Nota

Antes de qualquer um dos comandos do Service Fabric poder ser utilizado no PowerShell, primeiro tem de se ligar ao cluster com o Connect-ServiceFabricCluster cmdlet . Da mesma forma, presume-se que o Cluster já foi configurado no seu computador local. Veja o artigo sobre como configurar o ambiente de desenvolvimento do Service Fabric.

Depois de criar o projeto no Visual Studio, pode utilizar o comando do PowerShell Copy-ServiceFabricApplicationPackage para copiar o pacote de aplicação para o ImageStore. Se quiser verificar o pacote de aplicações localmente, utilize o cmdlet Test-ServiceFabricApplicationPackage . O passo seguinte consiste em registar a aplicação no runtime do Service Fabric com o cmdlet Register-ServiceFabricApplicationType . O passo seguinte é iniciar uma instância da aplicação com o cmdlet New-ServiceFabricApplication . Estes três passos são análogos à utilização do item de menu Implementar no Visual Studio. Assim que o aprovisionamento estiver concluído, deve limpar o pacote de aplicação copiado do arquivo de imagens para reduzir os recursos consumidos. Se um tipo de aplicação já não for necessário, deve ser anulado pelo mesmo motivo. Veja Implementar e remover aplicações com o PowerShell para obter mais informações.

Agora, pode utilizar Service Fabric Explorer para ver o cluster e a aplicação. A aplicação tem um serviço Web para o qual pode navegar no Internet Explorer ao escrever http://localhost:8081/visualobjects na barra de endereço. Deverá ver alguns objetos de elementos visuais flutuantes a moverem-se no ecrã. Além disso, pode utilizar Get-ServiceFabricApplication para verificar o estado da aplicação.

Passo 2: Atualizar o exemplo de Objetos Visuais

Poderá reparar que, com a versão que foi implementada no Passo 1, os objetos visuais não são rodados. Vamos atualizar esta aplicação para uma em que os objetos visuais também rodam.

Selecione o projeto VisualObjects.ActorService na solução VisualObjects e abra o ficheiro StatefulVisualObjectActor.cs. Nesse ficheiro, navegue para o método MoveObject, comente e this.State.Move()anule o comentário this.State.Move(true). Esta alteração roda os objetos após a atualização do serviço.

Também precisamos de atualizar o ficheiro deServiceManifest.xml (em PackageRoot) do projeto VisualObjects.ActorService. Atualize o CodePackage e a versão do serviço para 2.0 e as linhas correspondentes no ficheiro ServiceManifest.xml . Pode utilizar a opção Editar Ficheiros de Manifesto do Visual Studio depois de clicar com o botão direito do rato na solução para fazer alterações ao ficheiro de manifesto.

Depois de efetuar as alterações, o manifesto deverá ter o seguinte aspeto (as partes realçadas 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 ficheiro ApplicationManifest.xml (que se encontra no projeto VisualObjects na solução VisualObjects ) é atualizado para a versão 2.0 do projeto VisualObjects.ActorService . Além disso, a versão da Aplicação é atualizada para 2.0.0.0 a partir de 1.0.0.0. O ApplicationManifest.xml deve ter o seguinte aspeto:

<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 ao selecionar apenas o projeto ActorService e, em seguida, clique com o botão direito do rato e selecione a opção Criar no Visual Studio. Se selecionar Reconstruir tudo, deve atualizar as versões de todos os projetos, uma vez que o código teria sido alterado. Em seguida, vamos empacotar a aplicação atualizada ao clicar com o botão direito do rato em VisualObjectsApplication, selecionar o Menu do Service Fabric e selecionar Pacote. Esta ação cria um pacote de aplicação que pode ser implementado. A sua aplicação atualizada está pronta para ser implementada.

Passo 3: decidir sobre as políticas de estado de funcionamento e os parâmetros de atualização

Familiarize-se com os parâmetros de atualização da aplicação e o processo de atualização para compreender bem os vários parâmetros de atualização, tempos limite e critérios de estado de funcionamento aplicados. Para estas instruções, o critério de avaliação do estado de funcionamento do serviço está definido para os valores predefinidos (e recomendados), o que significa que todos os serviços e instâncias devem estar em bom estado de funcionamento após a atualização.

No entanto, vamos aumentar o HealthCheckStableDuration para 180 segundos (para que os serviços estejam em bom estado de funcionamento durante, pelo menos, 120 segundos antes de a atualização avançar para o domínio de atualização seguinte). Também vamos definir o UpgradeDomainTimeout como 1200 segundos e o UpgradeTimeout como 3000 segundos.

Por fim, vamos também definir a atualizaçãoFailureAction para reverter. Esta opção requer que o Service Fabric reverta a aplicação para a versão anterior, caso se depare com problemas durante a atualização. Assim, ao iniciar a atualização (no Passo 4), são especificados os seguintes parâmetros:

FailureAction = Reversão

HealthCheckStableDurationSec = 180

UpgradeDomainTimeoutSec = 1200

UpgradeTimeout = 3000

Passo 4: Preparar a aplicação para atualização

Agora, a aplicação está criada e pronta para ser atualizada. Se abrir uma janela do PowerShell como administrador e escrever Get-ServiceFabricApplication, deverá informá-lo de que é o tipo de aplicação 1.0.0.0 dos VisualObjects que foram implementados .

O pacote de aplicação é armazenado no seguinte caminho relativo onde descomprimiu o SDK do Service Fabric: Samples\Services\Stateful\VisualObjects\VisualObjects\obj\x64\Debug. Deverá encontrar uma pasta "Pacote" nesse diretório, onde o pacote de aplicação está armazenado. Verifique os carimbos de data/hora para garantir que é a compilação mais recente (também poderá ter de modificar os caminhos adequadamente).

Agora, vamos copiar o pacote de aplicação atualizado para o Service Fabric ImageStore (onde os pacotes de aplicações são armazenados pelo Service Fabric). O parâmetro ApplicationPackagePathInImageStore informa o Service Fabric onde pode encontrar o pacote de aplicação. Colocámos a aplicação atualizada em "VisualObjects_V2" com o seguinte comando (poderá ter de modificar os caminhos novamente adequadamente).

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

O próximo passo é registar esta aplicação no Service Fabric, que pode ser efetuada com o comando Register-ServiceFabricApplicationType :

Register-ServiceFabricApplicationType -ApplicationPathInImageStore "VisualObjects\_V2"

Se o comando anterior não for bem-sucedido, é provável que precise de uma reconstrução de todos os serviços. Conforme mencionado no Passo 2, também poderá ter de atualizar a versão do WebService.

Recomenda-se que remova o pacote de aplicação depois de a aplicação ser registada com êxito. Eliminar pacotes de aplicações do arquivo de imagens liberta recursos do sistema. Manter pacotes de aplicações não utilizados consome armazenamento em disco e origina problemas de desempenho da aplicação.

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

Passo 5: Iniciar a atualização da aplicação

Agora, estamos prontos para iniciar a atualização da aplicação com 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 da aplicação é o mesmo que foi descrito no ficheiro deApplicationManifest.xml . O Service Fabric utiliza este nome para identificar que aplicação está a ser atualizada. Se definir os tempos limite para serem demasiado curtos, poderá encontrar uma mensagem de falha que indica o problema. Veja a secção resolução de problemas ou aumente os tempos limite.

Agora, à medida que a atualização da aplicação avança, pode monitorizá-la com Service Fabric Explorer ou com o comando Get-ServiceFabricApplicationUpgrade do PowerShell:

Get-ServiceFabricApplicationUpgrade fabric:/VisualObjects

Em poucos minutos, o estado que obteve com o comando anterior do PowerShell deve indicar que todos os domínios de atualização foram atualizados (concluídos). E deve descobrir que os objetos visuais na janela do browser começaram a rodar!

Pode tentar atualizar da versão 2 para a versão 3 ou da versão 2 para a versão 1 como exercício. A mudança da versão 2 para a versão 1 também é considerada uma atualização. Experimente tempos limite e políticas de saúde para se familiarizar com elas. Quando estiver a implementar num cluster do Azure, os parâmetros têm de ser definidos adequadamente. É bom definir os tempos limite conservadores.

Passos seguintes

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

Controle a forma como a sua aplicação é atualizada com os 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.