Replica geografica nel servizio Registro Azure Container

Le aziende che vogliono una presenza locale o un backup ad accesso frequente scelgono di eseguire servizi da più aree di Azure. Come procedura consigliata, l'inserimento di un registro contenitori in ogni area in cui vengono eseguite le immagini consente l'esecuzione di operazioni in posizioni di rete vicine e quindi di trasferimenti di livelli di immagine più veloci e affidabili. La replica geografica consente a un registro Azure Container di funzionare come un singolo registro, che gestisce più aree con registri regionali multi-primario.

Un registro con replica geografica offre i vantaggi seguenti:

  • I singoli nomi di registro, immagine e tag possono essere usati in più aree
  • Migliorare le prestazioni e l'affidabilità delle distribuzioni a livello di area con accesso al Registro di sistema di chiusura della rete
  • Ridurre i costi di trasferimento dei dati eseguendo il pull dei livelli di immagine da un registro locale replicato nella stessa area o nelle vicinanze dell'host del contenitore
  • Gestione unica di un registro in più aree
  • Resilienza del Registro di sistema se si verifica un'interruzione a livello di area

Nota

  • Se è necessario conservare una copia delle immagini del contenitore in più di un registro contenitori di Azure, il Registro Azure Container supporta anche l'importazione delle immagini. Ad esempio, in un flusso di lavoro DevOps è possibile importare un'immagine da un registro di sviluppo in un registro di produzione senza dover usare i comandi Docker.
  • Se si vuole spostare un registro in un'area di Azure diversa, anziché replicare geograficamente il registro, vedere Spostare manualmente un registro contenitori in un'altra area.

Prerequisiti

  • L'utente richiede le autorizzazioni seguenti (a livello di Registro di sistema) per creare/eliminare le repliche:

    Autorizzazione Descrizione
    Microsoft.ContainerRegistry/registries/write Creare una replica
    Microsoft.ContainerRegistry/registries/replications/write Eliminare una replica

Esempio di caso d'uso

Contoso gestisce un sito Web per la presenza online pubblica esteso a Stati Uniti, Canada ed Europa. Per gestire questi mercati con contenuti in locale e in una posizione di rete vicina, Contoso esegue cluster del servizio Azure Kubernetes nelle aree Stati Uniti occidentali, Stati Uniti orientali, Canada centrale ed Europa occidentale. L'applicazione del sito Web, distribuita come un'immagine Docker, usa lo stesso codice e la stessa immagine in tutte le aree. Il contenuto locale in tale area viene recuperato da un database, di cui viene effettuato il provisioning in modo univoco in ogni area. Ogni distribuzione regionale dispone della relativa configurazione univoca per risorse quali, ad esempio, il database locale.

Il team di sviluppo si trova a Seattle, WA e usa il data center Stati Uniti occidentali.

Esecuzione del push in più registri
Esecuzione del push in più registri

Prima di usare le funzionalità di replica geografica, Contoso dispone di un registro situato negli Stati Uniti occidentali e di un registro aggiuntivo situato in Europa occidentale. Per gestire queste due aree, il team di sviluppo ha eseguito il push delle immagini in due registri diversi.

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

Esecuzione del pool da più registri
Esecuzione del pool da più registri

Le tipiche problematiche relative alla presenza di più registri sono descritte di seguito:

  • Tutti i cluster Stati Uniti orientali, Stati Uniti occidentali e Canada centrale estraggono dal registro Stati Uniti occidentali, incorrendo in costi di uscita, in quanto ognuno di questi host contenitori remoti esegue il pull delle immagini dai data center degli Stati Uniti occidentali.
  • Il team di sviluppo deve eseguire il push delle immagini nei registri presenti nelle aree Stati Uniti occidentali ed Europa occidentale.
  • Il team di sviluppo deve configurare e gestire ogni distribuzione regionale mediante nomi di immagini che fanno riferimento al registro in locale.
  • L'accesso al registro deve essere configurato per ogni area.

Vantaggi della replica geografica

Esecuzione del pull da un registro con replica geografica

La funzionalità di replica geografica di Registro Azure Container offre i vantaggi seguenti:

  • Gestione di un unico registro per tutte le aree: contoso.azurecr.io
  • Gestire una singola configurazione delle distribuzioni di immagini perché tutte le aree usano lo stesso URL immagine: contoso.azurecr.io/public/products/web:1.2
  • Eseguire il push in un singolo registro mentre Registro Azure Container gestisce automaticamente la replica geografica. Registro Azure Container replica solo livelli univoci, riducendo il trasferimento dei dati tra aree.
  • Configurare webhook a livello di area per notificare gli eventi in repliche specifiche.
  • Fornire un registro a disponibilità elevata resiliente alle interruzioni a livello di area.

Registro Azure Container supporta anche le zone di disponibilità per creare un registro Azure Container resiliente e a disponibilità elevata all'interno di un'area di Azure. La combinazione di zone di disponibilità per la ridondanza all'interno di un'area e la replica geografica in più aree migliora sia l'affidabilità che le prestazioni di un registro.

Configurare una replica geografica

La configurazione della replica geografica è un'operazione semplice basata sulla selezione delle aree mediante clic su una mappa. È anche possibile gestire la replica geografica usando strumenti quali i comandi az acr replication nell'interfaccia della riga di comando di Azure o distribuire un registro abilitato per la replica geografica con un modello di Azure Resource Manager.

La replica geografica è una funzionalità disponibile per i registri Premium. Se la versione del registro non è Premium, è possibile passare dalla versione Basic e quella Standard e infine a quella Premium nel portale di Azure:

Modificare i livelli di servizio nel portale di Azure

Per configurare la replica geografica per il Registro di sistema Premium, accedere al portale di Azure.

Passare a Registro Azure Container e selezionare Repliche:

Repliche nell'interfaccia utente del registro contenitori del portale di Azure

Viene visualizzata una mappa che mostra tutte le aree correnti di Azure:

Mappa delle aree nel portale di Azure

  • Gli esagoni blu rappresentano le repliche correnti
  • Gli esagoni verdi rappresentano le possibili aree di replica
  • Gli esagoni grigi rappresentano le aree di Azure non ancora disponibili per la replica

Per configurare una replica, selezionare un esagono verde e quindi fare clic su Crea:

Interfaccia utente Crea replica nel portale di Azure

Per configurare repliche aggiuntive, selezionare gli esagoni verdi per le altre aree e quindi fare clic su Crea.

Il servizio Registro Azure Container inizia a sincronizzare le immagine tra le repliche configurate. Al termine dell'operazione, nel portale viene visualizzata la dicitura Pronto. Lo stato della replica nel portale non viene aggiornato automaticamente. Usare il pulsante Aggiorna per visualizzare lo stato aggiornato.

Considerazioni sull'uso di un registro con replica geografica

  • Ogni area in un registro con replica geografica è indipendente dopo la configurazione. I contratti di servizio del Registro Azure Container si applicano a ogni area con replica geografica.
  • Per ogni operazione di push o pull dell'immagine in un registro con replica geografica, Gestione traffico di Azure in background invia una richiesta alla posizione più vicina del Registro di sistema nell'area per mantenere la latenza di rete.
  • Una volta eseguito il push dell'aggiornamento di un'immagine o un tag nell'area più vicina, il Registro Azure Container impiega del tempo per replicare i livelli e i manifesti nelle rimanenti aree scelte. La replica delle immagini di grandi dimensioni richiede più tempo rispetto alla replica delle immagini più piccole. Immagini e tag vengono sincronizzati tra le aree di replica con un modello di coerenza finale.
  • Per gestire i flussi di lavoro che dipendono da aggiornamenti push a un registro con replica geografica, è consigliabile configurare webhook per rispondere agli eventi push. È possibile configurare webhook regionali all'interno di un registro con replica geografica per tenere traccia degli eventi push man mano che vengono completati tra le aree con replica geografica.
  • Per gestire i BLOB che rappresentano i livelli di contenuto, Registro Azure Container usa endpoint dati. È possibile abilitare gli endpoint dei dati dedicati per il registro in ognuna delle aree con replica geografica del registro. Questi endpoint consentono la configurazione di regole di accesso del firewall con ambito molto rigorose. Ai fini della risoluzione dei problemi, è possibile disabilitare facoltativamente il routing a una replica mantenendo i dati replicati.
  • Se si configura un collegamento privato per il registro usando endpoint privati in una rete virtuale, gli endpoint di dati dedicati in ognuna delle aree con replica geografica sono abilitati per impostazione predefinita.

Considerazioni sulla disponibilità elevata

  • Per la disponibilità elevata e la resilienza, è consigliabile creare un registro in un'area che supporta l'abilitazione della ridondanza della zona. È anche consigliabile abilitare la ridondanza della zona in ogni area di replica.
  • Se si verifica un'interruzione nell'area principale del Registro di sistema (l'area in cui è stata creata) o una delle relative aree di replica, un registro con replica geografica rimane disponibile per le operazioni del piano dati, ad esempio il push o il pull delle immagini del contenitore.
  • Se l'area principale del Registro di sistema non è più disponibile, potrebbe non essere possibile eseguire operazioni di gestione del Registro di sistema, inclusa la configurazione delle regole di rete, l'abilitazione delle zone di disponibilità e la gestione delle repliche.
  • Per pianificare la disponibilità elevata di un registro con replica geografica crittografata con una chiave gestita dal cliente archiviata in un insieme di credenziali delle chiavi di Azure, vedere le indicazioni per il failover e la ridondanza dell'insieme di credenziali delle chiavi.

Eliminare una replica

Dopo aver configurato una replica per il registro, è possibile eliminarla in qualsiasi momento, se non è più necessaria. Eliminare la replica usando il portale di Azure o altri strumenti, ad esempio il comando az acr replication delete nell'interfaccia della riga di comando di Azure.

Per eliminare una replica nel portale di Azure:

  1. Passare al Registro Azure Container e selezionare Repliche.
  2. Selezionare il nome di una replica e selezionare Elimina. Confermare che si vuole eliminare la replica.

Per usare l'interfaccia della riga di comando di Azure per eliminare una replica di myregistry nell'area Stati Uniti orientali:

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

Prezzi della replica geografica

La replica geografica è una funzionalità del livello di servizio Premium di Registro Azure Container. Quando viene eseguita la replica di un registro nelle aree desiderate, si devono sostenere i costi relativi a un registro Premium per ogni area.

Nell'esempio precedente, Contoso ha unificato due registri mediante il consolidamento e ha aggiunto repliche per le aree Stati Uniti orientali, Canada centrale ed Europa occidentale. Contoso dovrà pagare quattro tariffe Premium al mese, senza costi aggiuntivi per la configurazione e la gestione. Ogni area esegue ora il pull delle immagini in locale, migliorando le prestazioni e l'affidabilità senza tariffe di uscita di rete dagli Stati Uniti occidentali al Canada e agli Stati Uniti orientali.

Risolvere i problemi relativi alle operazioni push con registri con replica geografica

In caso di push di un'immagine in un registro con replica geografica, un client Docker potrebbe non eseguire il push di tutti i livelli dell'immagine e del relativo manifesto in un'unica area replicata. Questo può verificarsi perché Gestione traffico di Azure indirizza le richieste al registro replicato nella posizione di rete più vicina. Se il registro ha due aree di replica nelle vicinanze, i livelli dell'immagine e il manifesto potrebbero essere distribuiti nei due siti e l'operazione push avrà esito negativo quando viene convalidato il manifesto. Questo problema è causato dal modo in cui il nome DNS del registro viene risolto in alcuni host Linux. Non si verifica in Windows, che offre una cache DNS sul lato client.

Se il problema si verifica, una soluzione consiste nell'applicare una cache DNS sul lato client, come dnsmasq, nell'host Linux. In questo modo, il nome del registro verrà risolto in modo coerente. Se si usa una VM Linux in Azure per il push in un registro, vedere le opzioni illustrate in Opzioni di risoluzione dei nomi DNS per macchine virtuali Linux in Azure.

Per ottimizzare la risoluzione DNS nella replica più vicina quando si esegue il push di immagini, configurare un registro con replica geografica nelle stesse aree di Azure dell'origine delle operazioni push oppure nell'area più vicina se si lavora all'esterno di Azure.

Disabilitare temporaneamente il routing alla replica

Per risolvere i problemi relativi alle operazioni con un registro con replica geografica, è possibile disabilitare temporaneamente il routing Gestione traffico a una o più repliche. A partire dalla versione 2.8 dell'interfaccia della riga di comando di Azure, è possibile configurare un'opzione --region-endpoint-enabled (anteprima) quando si crea o si aggiorna un'area replicata. Quando si imposta l'opzione di --region-endpoint-enabled una replica su false, Gestione traffico non instrada più le richieste docker push o pull a tale area. Per impostazione predefinita, il routing a tutte le repliche è abilitato e la sincronizzazione dei dati in tutte le repliche viene eseguita indipendentemente dal fatto che il routing sia abilitato o disabilitato.

Per disabilitare il routing a una replica esistente, eseguire prima az acr replication list per elencare le repliche nel Registro di sistema. Eseguire quindi az acr replication update e impostare --region-endpoint-enabled false per una replica specifica. Ad esempio, per configurare l'impostazione per la replica westus in 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

Per ripristinare il routing a una replica:

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

Creazione della replica per un Registro di sistema attivato per l'endpoint privato

Quando si crea una nuova replica del Registro di sistema per il Registro di sistema primario abilitato con l'endpoint privato, è consigliabile convalidare che l'identità utente abbia autorizzazioni di creazione dell'endpoint privato valide. In caso contrario, l'operazione si blocca nello stato di provisioning durante la creazione della replica.

Se si è bloccato nello stato di provisioning durante la creazione della replica del Registro di sistema, seguire questa procedura:

  • Eliminare manualmente la replica bloccata nello stato di provisioning.
  • Aggiungere l'autorizzazione Microsoft.Network/privateEndpoints/privateLinkServiceProxies/write per l'identità utente.
  • Ricreare la richiesta di replica del Registro di sistema.

Questo controllo delle autorizzazioni è applicabile solo ai registri con endpoint privato abilitato.

Passaggi successivi

Fare riferimento alla serie di esercitazioni in tre parti relativa alla replica geografica in Registro Azure Container. Eseguire la procedura dettagliata relativa alla creazione di un registro con replica geografica, alla compilazione di un contenitore e alla sua distribuzione mediante un unico comando docker push in più istanze regionali delle app Web per contenitori.