Georreplicação no Azure Container Registry
As empresas que desejam uma presença local ou um hot backup optam por executar serviços de várias regiões do Azure. Como melhor prática, a colocação de um registo de contentor em cada região onde as imagens são executadas possibilitam operações perto da rede que, por sua vez, permitem transferências de camadas de imagens rápidas e fiá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 multiprimários.
Um registo com georreplicação proporciona as seguintes vantagens:
- Nomes de registro, imagem e tag únicos podem ser usados em várias regiões
- Melhore o desempenho e a confiabilidade de implantações regionais com acesso ao Registro de fechamento de rede
- Reduza os custos de transferência de dados extraindo camadas de imagem de um registro local replicado na mesma região ou nas proximidades do host do contêiner
- Gestão única de um registo em múltiplas regiões
- Resiliência do registro se ocorrer uma interrupção regional
Nota
- 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 dá 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 precisar 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 requer as seguintes permissões (no nível do Registro) para criar/excluir replicações:
Permissão Description Microsoft.ContainerRegistry/registries/write Criar uma replicação Microsoft.ContainerRegistry/registros/replicações/gravação Excluir uma replicação
Exemplo de caso de uso
A Contoso executa um site de presença pública localizado nos EUA, Canadá e Europa. Para atender a esses mercados com conteúdo local e de fechamento de rede, a Contoso executa clusters do Serviço Kubernetes do Azure (AKS) no oeste dos EUA, leste dos EUA, Canadá Central e Europa Ocidental. O aplicativo de site, implantado como uma imagem do Docker, utiliza o mesmo código e imagem em todas as regiões. O conteúdo local dessa região é recuperado de um banco de dados, que é 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.
Envio para vários registos
Antes de usar os recursos de replicação geográfica, a Contoso tinha um registro baseado nos EUA no oeste dos EUA, com um registro adicional na Europa Ocidental. Para atender a essas diferentes regiões, a equipe de desenvolvimento enviou 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
Extração de vários registos
Os desafios típicos de vários registos incluem:
- Todos os clusters Leste dos EUA, Oeste dos EUA e Canadá Central extraem do registro do Oeste dos EUA, incorrendo em taxas de saída à medida que cada um desses hosts de contêiner remoto extrai imagens dos data centers do oeste dos EUA.
- A equipe de desenvolvimento deve enviar imagens para os 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 fazendo referência ao registro local.
- O acesso ao Registro deve ser configurado para cada região.
Benefícios da replicação geográfica
O recurso de replicação geográfica do Registro de Contêiner do Azure tem os seguintes benefícios:
- Gerencie um único registro em todas as regiões:
contoso.azurecr.io
- Gerencie uma única configuração de implantações de imagem, pois todas as regiões usam a mesma URL de imagem:
contoso.azurecr.io/public/products/web:1.2
- Envie por push para um único registro enquanto o ACR gerencia automaticamente a replicação geográfica. O ACR replica apenas camadas exclusivas, reduzindo a transferência de dados entre regiões.
- Configure webhooks regionais para notificá-lo de 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 dá suporte a 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 dentro de uma região e replicação geográfica em várias regiões melhora a confiabilidade e o desempenho de um registro.
Configurar georreplicação
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, incluindo os comandos de replicação az acr 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 é uma característica dos registos Premium. Se o seu registo ainda não for Premium, pode mudar de Basic e Standard para Premium no portal do Azure:
Para configurar a replicação geográfica para o seu registo Premium, inicie sessão no portal do Azure.
Navegue até o Registro de Contêiner do Azure e selecione Replicações:
Um mapa é exibido mostrando todas as regiões atuais do Azure:
- Hexágonos azuis representam réplicas atuais
- Hexágonos verdes representam possíveis regiões de réplica
- Hexágonos cinzas 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, selecione Criar:
Para configurar réplicas adicionais, selecione os hexágonos verdes para outras regiões e clique em Criar.
O ACR começa a sincronizar imagens nas réplicas configuradas. Uma vez concluído, o portal reflete Ready. 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 replicado geograficamente
- Cada região em um registro replicado geograficamente é independente uma vez configurada. Os SLAs do Registro de Contêiner do Azure se aplicam a cada região replicada geograficamente.
- Para cada operação de push ou pull image em um registro replicado geograficamente, o Gerenciador de Tráfego do Azure em segundo plano envia uma solicitação para o local mais próximo do Registro na região para manter a latência da rede.
- Depois de enviar a atualização de uma imagem ou etiqueta para a região mais próxima, demora algum tempo para o Azure Container Registry replicar os manifestos e as camadas para as regiões restantes que optou. As imagens maiores demoram mais tempo a replicar do que as mais pequenas. As imagens e as etiquetas são sincronizadas entre as regiões de replicação com um eventual modelo de consistência.
- Para gerenciar fluxos de trabalho que dependem de atualizações por push para um registro replicado geograficamente, recomendamos que você configure webhooks para responder aos eventos push. Você pode configurar webhooks regionais dentro de um registro replicado geograficamente para acompanhar eventos de push à medida que eles são concluídos nas regiões replicadas geograficamente.
- Para servir 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 seu registro. Esses pontos de extremidade permitem a configuração de regras de acesso ao firewall com escopo rígido. Para fins de solução de problemas, você pode, opcionalmente , desabilitar o roteamento para uma replicação enquanto mantém os dados replicados.
- Se você configurar um link privado para seu registro usando pontos de extremidade privados em uma rede virtual, os pontos de extremidade de dados dedicados em cada uma das regiões replicadas geograficamente serão habilitados por padrão.
Considerações para alta disponibilidade
- Para alta disponibilidade e resiliência, recomendamos a criação de um registro em uma região que ofereça 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 inicial do registro (a região onde ele foi criado) ou em uma de suas regiões de réplica, um registro replicado geograficamente permanecerá disponível para operações de plano de dados, como enviar ou extrair imagens de contêiner.
- Se a região base do Registro ficar indisponível, talvez você não consiga realizar operações de gerenciamento do 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 diretrizes para failover e redundância do cofre de chaves.
Eliminar réplicas
Depois de configurar uma réplica para o seu registo, pode eliminá-la a qualquer momento se já não for 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:
- Navegue até o Registro de Contêiner do Azure e selecione Replicações.
- Selecione o nome de uma réplica e selecione Excluir. Confirme que 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 georreplicação
A replicação geográfica é um recurso da camada de serviço Premium do Registro de Contêiner do Azure. Ao replicar um registro para as regiões desejadas, você incorre em taxas de registro Premium para cada região.
No exemplo anterior, a Contoso consolidou dois registros em um, adicionando réplicas ao Leste dos EUA, Canadá Central e Europa Ocidental. A Contoso pagaria quatro vezes Premium por mês, sem configuração ou gerenciamento adicionais. Cada região agora extrai 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.
Solucionar problemas de operações de push com registros replicados geograficamente
Um cliente do Docker que envia uma imagem para um registro replicado geograficamente pode não enviar todas as camadas de imagem e seu manifesto para uma única região replicada. Isto pode ocorrer porque o Azure Traffic Manager encaminha os pedidos de registo para o registo 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. Este problema ocorre devido à forma como o nome DNS do registo é resolvido em alguns anfitriões Linux. Este problema não ocorre no Windows, que fornece uma cache DNS do lado do cliente.
Se este problema ocorrer, uma solução é aplicar uma cache DNS do lado do cliente como dnsmasq
no Linux anfitrião. Isto ajuda a garantir que o nome do registo é resolvido de forma consistente. Se você estiver usando uma VM Linux no Azure para enviar por push para um Registro, consulte Opções em Opções de Resolução de Nomes DNS para máquinas virtuais Linux no Azure.
Para otimizar a resolução de DNS para a réplica mais próxima ao enviar imagens, configure um registo georreplicado nas mesmas regiões do Azure que a origem das operações de envio ou na região mais próxima ao trabalhar fora do Azure.
Desativar temporariamente o roteamento para replicação
Para solucionar problemas de operações com um registro replicado geograficamente, convém desabilitar temporariamente o roteamento do Gerenciador de Tráfego para uma ou mais replicações. A partir da CLI do Azure versão 2.8, você pode configurar uma --region-endpoint-enabled
opção (visualização) ao criar ou atualizar uma região replicada. Quando você define a opção de uma replicação como false
, o Gerenciador de --region-endpoint-enabled
Tráfego não roteia mais solicitações de 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 em todas as replicações ocorre independentemente de o roteamento estar 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 do westus em 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
Criar uma replicação para um registo ativado para o Ponto Final Privado
Ao criar uma nova replicação do Registro para o registro primário habilitado com o Ponto de Extremidade Privado, recomendamos validar se a Identidade do Usuário tem permissões válidas de criação do Ponto Final Privado. Caso contrário, a operação fica bloqueada no estado de aprovisionamento durante a criação da 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
Microsoft.Network/privateEndpoints/privateLinkServiceProxies/write
permissão para a Identidade do Usuário. - Recrie a solicitação de replicação do Registro.
Esta verificação de permissão só é aplicável aos registos com o Ponto Final Privado ativado.
Próximos passos
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 replicado geograficamente, a criação de um contêiner e, em seguida, a implantação com um único docker push
comando em várias instâncias regionais de Aplicativos Web para Contêineres.