Reliability in Azure VM Image Builder

O Azure VM Image Builder é um serviço gerido que constrói e personaliza imagens de máquinas virtuais (VM), distribuindo depois as imagens resultantes para destinos como o Azure Compute Gallery ou discos rígidos virtuais (VHDs) no Armazenamento de Blobs do Azure. O serviço não exige que mantenhas uma infraestrutura de build duradoura.

Quando você usa o Azure, a confiabilidade é uma responsabilidade compartilhada. A Microsoft fornece uma variedade de recursos para oferecer suporte à resiliência e à recuperação. Você é responsável por entender como esses recursos funcionam em todos os serviços que você usa e selecionar os recursos necessários para atender aos seus objetivos de negócios e metas de tempo de atividade.

Este artigo descreve como tornar o Azure VM Image Builder resiliente a várias potenciais interrupções e problemas, incluindo falhas transitórias, falhas em zonas de disponibilidade, falhas regionais e manutenção de serviços. Descreve também opções de backup e restauro, soluções multirregional personalizadas e informações-chave sobre o acordo de nível de serviço (SLA) do Azure VM Image Builder.

Recomendações de implantação de produção

Considere as seguintes recomendações ao desenhar um pipeline de construção de imagens de produção:

  • Defina os seus modelos de imagem usando infraestrutura como código, como Bicep ou Terraform, e armazene as definições no controlo de versão.

  • Distribua as imagens finalizadas para as regiões onde as suas cargas de trabalho correm, como através da replicação do Azure Compute Gallery, para evitar dependências desnecessárias entre regiões durante a criação, expansão horizontal (scale-out) e reimagem da VM.

  • Armazene scripts de personalização, pacotes e outras dependências de build em armazenamento que tenha as características de redundância que a sua carga de trabalho exige.

Visão geral da arquitetura de confiabilidade

Esta secção descreve alguns dos aspetos importantes do funcionamento do serviço que são mais relevantes do ponto de vista da fiabilidade. A secção apresenta a arquitetura lógica, que inclui alguns dos recursos e funcionalidades que implementa e utiliza. Também discute a arquitetura física, detalhando como o serviço funciona nos bastidores.

Arquitetura lógica

Quando usas o VM Image Builder, implementas um template de imagem numa única região do Azure, que se torna a região de origem do template.

Depois de criar o template, executa uma build, que executa uma série de passos para criar a imagem da VM. Esses passos podem executar scripts ou incluir pacotes que queres incorporar na imagem.

O serviço cria ou utiliza um grupo de recursos de staging e implementa a infraestrutura de construção na sua subscrição. Após a compilação, o serviço remove recursos temporários, incluindo a VM de compilação e os recursos de rede associados. O grupo de recursos de staging e os seus recursos de armazenamento mantêm-se enquanto existir o recurso modelo de imagem.

O VM Image Builder distribui a imagem finalizada para um ou mais destinos que especificar. Alvos comuns incluem:

  • Azure Compute Gallery (anteriormente conhecida como Shared Image Gallery): A Compute Gallery fornece replicação multirregional de imagens VM. Por exemplo, pode construir uma imagem numa região e distribuir a versão resultante da imagem do Azure Compute Gallery para várias regiões alvo.

  • Armazenamento de Blobs do Azure: O serviço pode armazenar o VHD na conta de armazenamento que o VM Image Builder implementa/cria ou numa conta de armazenamento e contentor de blob que especificar.

    Se usar a conta de armazenamento gerido pelo serviço como destino de distribuição de VHD, o serviço armazena o VHD no grupo de recursos de staging. Quando apagas o modelo de imagem, o serviço também apaga o VHD. Para manter o VHD independentemente do modelo de imagem, distribui-lo para uma conta de armazenamento personalizada ou copiá-lo para outro local antes de apagares o modelo.

Azure Compute Gallery e Armazenamento de Blobs são serviços separados do VM Image Builder. Podes distribuir imagens para múltiplos alvos, incluindo alvos em diferentes regiões do Azure. Este modelo de distribuição ajuda-te a separar a região onde constróis uma imagem das regiões onde a consomes.

Note

O VM Image Builder também suporta imagens geridas, que são um destino de distribuição legado. Este artigo não aborda imagens geridas pelo utilizador. Para cenários de produção, use o Azure Compute Gallery.

Arquitetura física

O VM Image Builder utiliza Isolated Image Builds para executar o processo central de personalização e validação da imagem. O serviço implementa um recurso dedicado do Azure Container Instances e uma máquina virtual de compilação no grupo de recursos de staging na sua subscrição. O recurso Container Instances executa o HashiCorp Packer para personalizar e validar a imagem, e o VM Image Builder coordena a compilação.

Para executar builds de imagens, regista o fornecedor de recursos Microsoft.ContainerInstance e assegura-te de que a tua subscrição tem quota suficiente de Container Instances. Para mais informações sobre a arquitetura do serviço, regiões suportadas e processo de compilação, consulte a visão geral do Azure VM Image Builder.

Serviços Azure separados, como Azure Compute Gallery e Armazenamento de Blobs, armazenam imagens finalizadas. Configure cada alvo de distribuição para satisfazer os seus requisitos de resiliência.

Resiliência a falhas transitórias

Falhas transitórias são falhas curtas e intermitentes em componentes. Eles ocorrem com frequência em um ambiente distribuído, como a nuvem, e são uma parte normal das operações. As falhas transitórias corrigem-se após um curto período de tempo. É importante que seus aplicativos possam lidar com falhas transitórias, geralmente tentando novamente as solicitações afetadas.

Todos os aplicativos hospedados na nuvem devem seguir as diretrizes de tratamento de falhas transitórias do Azure quando se comunicam com quaisquer APIs, bancos de dados e outros componentes hospedados na nuvem. Para obter mais informações, consulte Recomendações para o tratamento de falhas transitórias.

Normalmente, interage com o Azure VM Image Builder usando o portal Azure, CLI do Azure, Azure PowerShell ou infraestrutura como código, como o Bicep. O seu pipeline de build é responsável por lidar com falhas transitórias. Se o Azure Resource Manager devolver uma resposta de erro transitória, tente novamente o pedido com o backoff adequado.

Se uma build falhar, inspecione o seu lastRunStatus, os registos de personalização e validação, e as saídas da execução de distribuição antes de a reexecutar. Estes detalhes ajudam-no a determinar se uma condição de falha transitória, uma etapa de personalização ou uma operação de distribuição de imagem causou a falha. Para mais informações, veja Troubleshoot VM Image Builder build failures.

As operações de compilação também podem depender de sistemas externos, como contas de armazenamento, repositórios de pacotes, localizações de imagens de origem e alvos de distribuição. Projete os seus passos de personalização e pipelines para suportar retentativas após um problema temporário de rede, plataforma ou dependência.

Resiliência a falhas na zona de disponibilidade

As operações de compilação e as imagens finalizadas comportam-se de forma diferente durante falhas na zona.

  • Builds: O VM Image Builder não suporta zonas de disponibilidade nem oferece garantia de resiliência de zonas para modelos de imagem ou operações de build. Se uma falha de zona afetar os recursos que uma compilação utiliza, a compilação pode falhar em iniciar ou ser interrompida. O VM Image Builder não move automaticamente a build para outra zona.

    Se precisares de executar builds de imagem durante interrupções de zona, implementa os teus templates de imagem e recursos de suporte em várias regiões do Azure. Para mais informações, consulte Soluções multirregional personalizadas para resiliência.

  • Imagens: As imagens finalizadas permanecem disponíveis se o seu armazenamento for resiliente em zonas.

    • Azure Compute Gallery: As versões de imagem da Azure Compute Gallery podem usar armazenamento redundante por zona (ZRS) em regiões alvo que suportam zonas de disponibilidade. Para cada região-alvo, selecione ZRS como o tipo de replicação da conta de armazenamento. O padrão é armazenamento localmente redundante (LRS), que não é resiliente a falhas de zona. Para mais informações, consulte a alta disponibilidade do Azure Compute Gallery.

    • VHDs no Armazenamento de Blobs do Azure: Se não usar uma conta de armazenamento personalizada, o VM Image Builder cria uma conta de armazenamento ZRS por defeito em regiões que suportam zonas de disponibilidade. Se usares uma conta de armazenamento personalizada, és responsável por configurar a redundância para satisfazer os teus requisitos. Utilize o ZRS para armazenar cópias do VHD em várias zonas de disponibilidade. Para mais informações sobre como funciona o ZRS, consulte Fiabilidade no Armazenamento de Blobs do Azure.

Resiliência a falhas em toda a região

As operações de build e as imagens finalizadas comportam-se de forma diferente durante falhas em toda a região.

  • Builds: O Azure VM Image Builder é um serviço de região única e não fornece failover multirregional incorporado. Se a região que aloja o seu modelo de imagem ficar indisponível, o modelo de imagem e as operações de construção nessa região também ficam indisponíveis. O serviço não faz failover automaticamente para outra região.

    Se precisares de executar builds de imagem durante interrupções regionais, implementa os teus templates de imagem e recursos de suporte em várias regiões do Azure. Para mais informações, consulte Soluções multirregional personalizadas para resiliência.

  • Imagens: As imagens finalizadas permanecem disponíveis se o seu armazenamento for resistente a falhas em toda a região.

    • Azure Compute Gallery: Pode configurar o Azure Compute Gallery para replicar versões de imagem em várias regiões. A replicação é assíncrona, e só podes usar uma versão da imagem numa região alvo depois de terminar a replicação nessa região.

      Durante uma interrupção numa região, as réplicas completas permanecem disponíveis para implementações de máquinas virtuais em regiões alvo saudáveis. No entanto, se a região que contém o recurso da galeria não estiver disponível, não pode criar nem atualizar recursos da galeria. Se precisares de continuar a publicar versões das imagens durante a indisponibilidade de uma região, mantém galerias separadas em regiões de construção separadas. Para mais informações, consulte replicação da Azure Compute Gallery e melhores práticas.

    • VHDs no Armazenamento de Blobs do Azure: O destino VHD gerido por serviço por defeito não fornece geo-redundância. Em regiões que suportam zonas de disponibilidade, utiliza ZRS, que não protege contra uma falha de toda a região.

      Numa região com uma região emparelhada, pode distribuir o VHD para uma conta de armazenamento personalizada que utiliza armazenamento geo-redundante (GRS) ou armazenamento redundante por zona geográfica (GZRS). O GRS de acesso de leitura (RA-GRS) e o GZRS de acesso de leitura (RA-GZRS) fornecem acesso apenas de leitura através de um endpoint secundário, mas não realizam failover. Para restaurar o acesso normal de leitura-escrita na região emparelhada, inicie um failover gerido pelo cliente ou copie o VHD do endpoint secundário para uma conta de armazenamento separada. A geo-replicação é assíncrona, por isso um failover não planeado pode perder dados que não foram replicados. Verifique a propriedade Hora da Última Sincronização da conta de armazenamento antes do failover sempre que possível.

      Para mais informações sobre o comportamento de failover do Armazenamento de Blobs e abordagens alternativas para replicar dados entre regiões não emparelhadas, consulte Fiabilidade no Armazenamento de Blobs do Azure.

Soluções multirregional personalizadas para resiliência

Se precisares de continuar a construir imagens durante uma interrupção regional, és responsável por implementar e operar ambientes de construção independentes em várias regiões.

Escolha regiões que suportem o VM Image Builder. Em cada região de compilação, pré-implemente um modelo de imagem e as suas dependências específicas por região, incluindo identidades geridas e atribuições de funções, configuração de rede, artefactos de personalização, uma imagem de origem ou réplica de imagem, e alvos de distribuição.

Se precisar de publicar imagens enquanto a região de uma galeria não estiver disponível, utilize um recurso independente da Compute Gallery em cada região de compilação. Replicar versões de imagens a partir de uma única galeria não torna a galeria um recurso totalmente multirregional.

Defina esses recursos usando infraestrutura como código e trate essas definições como fonte de verdade. Mantenha os ambientes regionais sincronizados quando a configuração muda e teste regularmente se cada ambiente consegue construir e distribuir uma imagem.

Backup e restauração

O Azure VM Image Builder não substitui o seu processo de backup e recuperação. Na maioria dos casos, o artefacto que importa para a recuperação é a imagem finalizada que publicas no Azure Compute Gallery ou no armazenamento VHD.

Para melhorar a recuperação após corrupção ou de uma interrupção prolongada e não planeada, siga estas recomendações:

  • Mantenha as imagens publicadas no Azure Compute Gallery ou noutros alvos de distribuição de acordo com os seus requisitos de retenção.

  • Se criares um VHD e usares o destino padrão do VHD, copia o VHD para o teu próprio armazenamento durável antes de apagares o modelo de imagem.

  • Utilize o controlo de código-fonte para armazenar e controlar versões de definições de modelos de imagem.

  • Utilize o controlo de código-fonte ou outro tipo de armazenamento durável para armazenar e criar versões de scripts e pacotes de personalização.

  • Valide regularmente que cada ambiente de recuperação pré-implementado pode construir e distribuir uma imagem.

Resiliência à manutenção de serviços

A Microsoft gere a manutenção do Azure VM Image Builder. O VM Image Builder não serve tráfego de aplicações em tempo de execução, por isso a manutenção não afeta VMs que já criou a partir de imagens publicadas. Se uma compilação for atrasada ou interrompida durante a manutenção ou outro evento de serviço, inspecione o seu estado e registos, e volte a executá-la.

Use o Azure Service Health para monitorizar a manutenção planeada e incidentes de serviço que possam afetar a sua região de compilação.

Contrato de nível de serviço

O Azure VM Image Builder não fornece um acordo de nível de serviço (SLA) de disponibilidade.

Qualquer SLA que se aplique a um destino de distribuição ou serviço de armazenamento aplica-se separadamente e não fornece um compromisso de disponibilidade para o template do VM Image Builder ou operações de compilação.