Replicação geográfica no Registro de Contêiner do Azure

As empresas que querem ter uma presença local ou um backup frequente optam por executar os serviços de várias regiões do Azure. Como prática recomendada, colocar um Registro de contêiner em cada região em que as imagens são executadas permite operações perto da rede, possibilitando transferências de camada de imagem rápidas e confiáveis. A replicação geográfica permite que um Registro de contêiner do Azure funcione como um único Registro, atendendo a várias regiões com registros regionais primários.

Um Registro com replicação geográfica oferece os seguintes benefícios:

  • Nomes de marca, imagem, registro únicos podem ser usados em várias regiões
  • Melhora o desempenho e a confiabilidade de implantações regionais com acesso ao registro de fechamento de rede
  • Reduz os custos de transferência de dados ao extrair as camadas de imagem de um registro local replicado na região igual ou adjacente ao seu host de contêiner
  • Gerenciamento único de um Registro entre várias regiões
  • Resiliência do registro se ocorrer uma interrupção regional

Observação

  • Se você precisar manter cópias de imagens de contêiner em mais de um registro de contêiner do Azure, o Registro de Contêiner do Azure também dará suporte à importação de imagens. Por exemplo, em um fluxo de trabalho de DevOps, você pode importar uma imagem de um registro de desenvolvimento para um registro de produção, sem a necessidade de usar comandos do Docker.
  • Se você quiser mover um registro para uma região diferente do Azure, em vez de replicar geograficamente o registro, consulte Mover manualmente um registro de contêiner para outra região.

Pré-requisitos

  • O usuário precisa das seguintes permissões (no nível do registro) para criar/excluir replicações:

    Permissão Descrição
    Microsoft.ContainerRegistry/registries/write Criar uma replicação
    Microsoft.ContainerRegistry/registries/replications/write Excluir uma replicação

Caso de uso de exemplo

A Contoso executa um site com presença pública localizado nos EUA, Canadá e Europa. Para atender a esses mercados com conteúdo local e perto da rede, a Contoso executa os clusters do Serviço de Kubernetes do Azure (AKS) no Oeste dos EUA, Leste dos EUA, Canadá Central e Europa Ocidental. O aplicativo do site, implantado como uma imagem do Docker, utiliza os mesmos código e imagem em todas as regiões. O conteúdo local para essa região é recuperado de um banco de dados, provisionado exclusivamente em cada região. Cada implantação regional tem sua configuração exclusiva para recursos como o banco de dados local.

A equipe de desenvolvimento está localizada em Seattle – WA, e utiliza o data center do Oeste dos EUA.

Efetuando push para vários registros
Efetuando push para vários Registros

Antes de usar os recursos de replicação geográfica, a Contoso tinha um Registro no Oeste dos EUA, com um Registro adicional na Europa Ocidental. Para atender a essas regiões diferentes, a equipe de desenvolvimento precisava efetuar push de imagens para dois registros diferentes.

docker push contoso.azurecr.io/public/products/web:1.2
docker push contosowesteu.azurecr.io/public/products/web:1.2

Efetuando pull de vários registros
Efetuando pull de vários Registros

Os desafios comuns de vários Registros incluem:

  • Foi efetuado pull de todos os clusters do Leste dos EUA, Oeste dos EUA e Canadá Central no registro do Oeste dos EUA, incorrendo em valores de saída à medida que é efetuado pull de imagens dos data centers do Oeste dos EUA por cada um desses hosts de contêineres remotos.
  • A equipe de desenvolvimento deve efetuar push de imagens para Registros do Oeste dos EUA e da Europa Ocidental.
  • A equipe de desenvolvimento deve configurar e manter cada implantação regional com nomes de imagem que referenciam o Registro local.
  • O acesso ao Registro deve ser configurado para cada região.

Benefícios da replicação geográfica

Efetuando pull de um Registro com replicação geográfica

O recurso de replicação geográfica do Registro de Contêiner do Azure tem os seguintes benefícios:

  • Gerenciar um único Registro em todas as regiões:contoso.azurecr.io
  • Gerenciar uma única configuração de implantações de imagem, pois todas as regiões usavam a mesma URL de imagem: contoso.azurecr.io/public/products/web:1.2
  • Enviar por push para um único registro, enquanto o ACR gerencia a replicação geográfica automaticamente. O ACR só replica camadas exclusivas, reduzindo a transferência de dados entre regiões.
  • Configure webhooks regionais para receber notificações sobre eventos em réplicas específicas.
  • Forneça um registro altamente disponível que seja resiliente a interrupções regionais.

O Registro de Contêiner do Azure também apoiam as zonas de disponibilidade para criar um registro de contêiner do Azure resiliente e de alta disponibilidade em uma região do Azure. A combinação de zonas de disponibilidade para redundância em uma região e replicação geográfica em várias regiões aumenta a confiabilidade e o desempenho de um registro.

Configurar a replicação geográfica

Configurar a replicação geográfica é tão fácil quanto clicar em regiões em um mapa. Você também pode gerenciar a replicação geográfica usando ferramentas que incluem os comandos az acr replication na CLI do Azure ou implantar um registro habilitado para replicação geográfica com um modelo do Azure Resource Manager.

A replicação geográfica é um recurso de Registros Premium. Se seu Registro ainda não é Premium, é possível alterar de Básico e Standard para Premium no Portal do Azure:

Como alternar camadas de serviço no portal do Azure

Para configurar a replicação geográfica para o registro do Premium, faça logon no Portal do Azure.

Navegue até o Registro de Contêiner do Azure e selecione Replicações:

Replicações na interface do usuário de Registro de contêiner do Portal do Azure

Um mapa é exibido mostrando todas as regiões atuais do Azure:

Mapa de região no Portal do Azure

  • Hexágonos azuis representam réplicas atuais
  • Hexágonos verdes representam regiões de réplica possíveis
  • Hexágonos cinza representam regiões do Azure ainda não disponíveis para replicação

Para configurar uma réplica, selecione um hexágono verde e, em seguida, Criar:

Criar a interface do usuário de replicação no Portal do Azure

Para configurar réplicas adicionais, selecione os hexágonos verdes para outras regiões e, em seguida, clique em Criar.

O ACR começa a sincronizar imagens em réplicas configurados. Depois de concluído, o portal reflete Pronto. O status da réplica no portal não é atualizado automaticamente. Use o botão Atualizar para ver o status atualizado.

Considerações sobre o uso de um registro com replicação geográfica

  • Cada região em um registro replicado geograficamente é independente após a configuração. Os SLAs de Registro de Contêiner do Azure se aplicam a cada região geográfica replicada.
  • Para cada operação de push ou pull de imagem em um registro replicado geograficamente, o Gerenciador de Tráfego do Azure em segundo plano envia uma solicitação ao local mais próximo do registro na região para manter a latência da rede.
  • Depois que você envia uma atualização de imagem ou marca por push para a região mais próxima, demora algum tempo até o Registro de Contêiner do Azure replicar as camadas e manifestos para as demais regiões que você aceitou. As imagens maiores demoram mais tempo para replicar do que as menores. As imagens e marcas são sincronizadas em todas as regiões de replicação com um modelo de consistência eventual.
  • Para gerenciar fluxos de trabalho que dependem de atualizações por push para um registro com replicação geográfica, recomendamos que você configure webhooks para responder a eventos por push. Você pode configurar webhooks regionais dentro de um registro com replicação geográfica para acompanhar eventos por push, conforme eles são concluídos em todas as regiões com replicação geográfica.
  • Para atender a blobs que representam camadas de conteúdo, o Registro de Contêiner do Azure usa pontos de extremidade de dados. Você pode habilitar pontos de extremidade de dados dedicados para seu registro em cada uma das regiões replicadas geograficamente do registro. Esses pontos de extremidade permitem a configuração de regras de acesso a firewall com escopo bem delimitado. Para fins de solução de problemas, opcionalmente, você pode desabilitar o roteamento para uma replicação, mantendo os dados replicados.
  • Se você configurar um link privado para o registro usando pontos de extremidade privados em uma rede virtual, os pontos de extremidade de dados dedicados em cada uma das regiões com replicação geográfica serão habilitados por padrão.

Considerações sobre alta disponibilidade

  • Para alta disponibilidade e resiliência, é recomendável criar um registro em uma região que dê suporte à habilitação da redundância de zona. Também é recomendável habilitar a redundância de zona em cada região de réplica.
  • Se ocorrer uma interrupção na região de origem do registro (a região em que ele foi criado) ou em uma das regiões de réplica, um registro replicado geograficamente permanecerá disponível para operações de plano de dados, como efetuar push ou pull das imagens de contêiner.
  • Se a região de origem do registro ficar indisponível, talvez você não consiga realizar operações de gerenciamento de registro, incluindo a configuração de regras de rede, a habilitação de zonas de disponibilidade e o gerenciamento de réplicas.
  • Para planejar a alta disponibilidade de um registro replicado geograficamente criptografado com uma chave gerenciada pelo cliente armazenada em um cofre de chaves do Azure, revise as orientações sobre failover e redundância do cofre de chaves.

Excluir uma réplica

Depois de configurar uma réplica para o registro, você poderá excluí-la a qualquer momento se ela não for mais necessária. Exclua uma réplica usando o portal do Azure ou outras ferramentas, como o comando az acr replication delete na CLI do Azure.

Para excluir uma réplica no portal do Azure:

  1. Navegue até o Registro de Contêiner do Azure e selecione Replicações.
  2. Selecione o nome de uma réplica e selecione Excluir. Confirme que você realmente deseja excluir a réplica.

Para usar a CLI do Azure para excluir uma réplica de myregistry na região leste dos EUA:

az acr replication delete --name eastus --registry myregistry

Preços da replicação geográfica

A replicação geográfica é um recurso da camada de serviço Premium do Registro de Contêiner do Azure. Quando você replica um Registro para as regiões desejadas, incorre em taxas de Registro do Premium para cada região.

No exemplo anterior, a Contoso consolidou dois registros inoperantes em um, adicionado réplicas ao Oeste dos EUA, Canadá Central e Europa Ocidental. A Contoso pagaria o Premium quatro vezes por mês, sem nenhuma configuração ou gerenciamento adicional. Agora cada região efetua pull de suas imagens localmente, melhorando o desempenho e a confiabilidade sem taxas de saída de rede do Oeste dos EUA para o Canadá e o Leste dos EUA.

Solução de problemas de operações de push com registros com replicação geográfica

Um cliente do Docker que efetua push de uma imagem para um registro com replicação geográfica pode não efetuar push de todas as camadas de imagem e seu manifesto para uma única região replicada. Isso pode ocorrer porque o Gerenciador de Tráfego do Azure roteia as solicitações de registro para o registro replicado mais próximo da rede. Se o registro tiver duas regiões de replicação próximas, as camadas de imagem e o manifesto poderão ser distribuídos para os dois sites, e a operação de push falhará quando o manifesto for validado. Esse problema ocorre devido à maneira como o nome DNS do registro é resolvido em alguns hosts Linux. Esse problema não ocorre no Windows, que fornece um cache DNS do lado do cliente.

Se esse problema ocorrer, uma solução será aplicar um cache DNS do lado do cliente, como dnsmasq, no host Linux. Isso ajuda a garantir que o nome do registro seja resolvido de forma consistente. Caso esteja usando uma VM do Linux no Azure para efetuar push para um registro, confira as opções em Opções de resolução de nomes DNS para máquinas virtuais do Linux no Azure.

Para otimizar a resolução DNS para a réplica mais próxima ao efetuar push de imagens, configure um registro com replicação geográfica nas mesmas regiões do Azure da origem das operações de push ou a região mais próxima ao trabalhar fora do Azure.

Desabilitar temporariamente o roteamento para replicação

Para solucionar problemas de operações com um registro replicado geograficamente, você também pode desabilitar temporariamente o roteamento do Gerenciador de Tráfego para uma ou mais replicações. A partir da versão 2.8 da CLI do Azure, você pode configurar uma opção --region-endpoint-enabled (versão prévia) ao criar ou atualizar uma região replicada. Quando você define a opção de replicação --region-endpoint-enabled como false, o Gerenciador de Tráfego não roteia mais as solicitações push ou pull do docker para essa região. Por padrão, o roteamento para todas as replicações é habilitado, e a sincronização de dados entre todas as replicações ocorrerá se o roteamento estiver habilitado ou desabilitado.

Para desabilitar o roteamento para uma replicação existente, primeiro execute az acr replication list para listar as replicações no registro. Em seguida, execute az acr replication update e defina --region-endpoint-enabled false para uma replicação específica. Por exemplo, para definir a configuração para a replicação westus no myregistry:

# Show names of existing replications
az acr replication list --registry --output table

# Disable routing to replication
az acr replication update --name westus \
  --registry myregistry --resource-group MyResourceGroup \
  --region-endpoint-enabled false

Para restaurar o roteamento para uma replicação:

az acr replication update --name westus \
  --registry myregistry --resource-group MyResourceGroup \
  --region-endpoint-enabled true

Criando replicação de um registro habilitado para ponto de extremidade privado

Ao criar uma nova replicação de registro para o registro primário habilitado com o Ponto de Extremidade Privado, recomendamos garantir que a Identidade do Usuário tem permissões válidas de criação de Ponto de Extremidade Privado. Caso contrário, a operação fica presa no estado de provisionamento ao criar a replicação.

Siga as etapas abaixo se você ficou preso no estado de provisionamento ao criar a replicação do Registro:

  • Exclua manualmente a replicação que ficou presa no estado de provisionamento.
  • Adicione a permissão Microsoft.Network/privateEndpoints/privateLinkServiceProxies/write para a Identidade do Usuário.
  • Recriar a solicitação de replicação do Registro.

Esta verificação de permissão é aplicável somente aos registros com o Ponto de Extremidade Privado ativado.

Próximas etapas

Confira a série de tutoriais em três partes, Replicação geográfica no Registro de Contêiner do Azure. Percorra a criação de um Registro com replicação geográfica, criando um contêiner e, em seguida, implantando-o com um único comando docker push em várias instâncias regionais dos Aplicativos Web para Contêineres.