Geo-replicatie in Azure Container Registry

Bedrijven die een lokale aanwezigheid of een dynamische back-up willen, kiezen ervoor om services uit te voeren vanuit meerdere Azure-regio's. Het wordt aanbevolen een containerregister in elke regio te plaatsen waar installatiekopieën worden uitgevoerd om bewerkingen dicht bij het netwerk mogelijk te maken, wat voor snelle, betrouwbare overdracht van installatiekopielagen zorgt. Met geo-replicatie kan een Azure-containerregister functioneren als één register, waarbij meerdere regio's worden geleverd met regionale registers met meerdere primaire regionale registers.

Een register met geo-replicatie biedt de volgende voordelen:

  • Namen van één register, installatiekopieën en tags kunnen worden gebruikt in meerdere regio's
  • Prestaties en betrouwbaarheid van regionale implementaties verbeteren met netwerktoegang tot het register
  • Kosten voor gegevensoverdracht verlagen door installatiekopielagen op te halen uit een lokaal, gerepliceerd register in dezelfde of nabijgelegen regio als uw containerhost
  • Eén beheerpunt voor een register in meerdere regio's
  • Registertolerantie als er een regionale storing optreedt

Notitie

  • Als u kopieën van containerinstallaties in meer dan één Azure-containerregister wilt behouden, kunt u met Azure Container Registry ook installatiekopieën importeren. In een DevOps-werkstroom kunt u bijvoorbeeld een installatiekopieën uit een ontwikkelingsregister importeren in een productieregister zonder Docker-opdrachten te hoeven gebruiken.
  • Als u een register naar een andere Azure-regio wilt verplaatsen in plaats van het register geografisch te repliceren, raadpleegt u Handmatig een containerregister verplaatsen naar een andere regio.

Vereisten

  • De gebruiker heeft de volgende machtigingen (op registerniveau) nodig om replicaties te maken/verwijderen:

    Machtiging Beschrijving
    Microsoft.ContainerRegistry/registries/write Een replicatie maken
    Microsoft.ContainerRegistry/registries/replications/write Een replicatie verwijderen

Voorbeeld van een toepassing

Contoso voert een website voor openbare aanwezigheid uit voor de VS, Canada en Europa. Contoso voert AKS-clusters (Azure Kubernetes Service) uit in VS - west, VS - oost, Canada - centraal en Europa - west om deze markten met lokale inhoud van dicht bij het netwerk te bedienen. De webtoepassing, geïmplementeerd als een Docker-installatiekopie, gebruikt dezelfde code en installatiekopie in alle regio's. Inhoud lokaal naar die regio wordt opgehaald uit een database, die uniek is ingericht in elke regio. Elke regionale implementatie heeft een unieke configuratie voor resources zoals de lokale database.

Het ontwikkelteam bevindt zich in Seattle, WA en maakt gebruik van het datacenter VS - west.

Pushen naar meerdere registers
Pushen naar meerdere registers

Voordat Contoso de functies voor geo-replicatie ging gebruiken, had het bedrijf een in de VS gebaseerd register in VS - west, met een extra register in Europa - west. Het ontwikkelteam pushte installatiekopieën naar twee verschillende registers om deze verschillende regio's te bedienen.

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

Ophalen vanuit meerdere registers
Ophalen vanuit meerdere registers

Typische uitdagingen van meerdere registers zijn onder meer:

  • Alle clusters VS - oost, VS - west en Canada - centraal worden opgehaald uit het register VS - west, waardoor uitgaande kosten in rekening worden gebracht, omdat elk van deze externe containerhosts installatiekopieën ophaalt uit datacenters in vs - west.
  • Het ontwikkelteam moet installatiekopieën pushen naar registers in VS - west en Europa - west.
  • Het ontwikkelteam moet elke regionale implementatie configureren en onderhouden met installatiekopienamen die verwijzen naar het lokale register.
  • Toegang tot het register moet voor elke regio worden geconfigureerd.

Voordelen van geo-replicatie

Ophalen vanuit een geo-gerepliceerd register

De functie voor geo-replicatie van Azure Container Registry heeft de volgende voordelen:

  • Eén register beheren voor alle regio's: contoso.azurecr.io
  • Eén configuratie van installatiekopieënimplementaties beheren omdat alle regio's dezelfde installatiekopieën-URL gebruiken: contoso.azurecr.io/public/products/web:1.2
  • Push naar één register terwijl ACR de geo-replicatie automatisch beheert. ACR repliceert alleen unieke lagen, waardoor de gegevensoverdracht tussen regio's wordt verminderd.
  • Configureer regionale webhooks om u op de hoogte te stellen van gebeurtenissen in specifieke replica's.
  • Geef een maximaal beschikbaar register op dat bestand is tegen regionale storingen.

Azure Container Registry biedt ook ondersteuning voor beschikbaarheidszones voor het maken van een flexibele en hoge beschikbaarheid van Azure-containerregisters binnen een Azure-regio. De combinatie van beschikbaarheidszones voor redundantie binnen een regio en geo-replicatie in meerdere regio's verbetert zowel de betrouwbaarheid als de prestaties van een register.

Geo-replicatie configureren

Het configureren van geo-replicatie is net zo gemakkelijk als regio's aanklikken op een kaart. U kunt geo-replicatie ook beheren met behulp van hulpprogramma's, waaronder de az acr-replicatieopdrachten in de Azure CLI, of een register implementeren dat is ingeschakeld voor geo-replicatie met een Azure Resource Manager-sjabloon.

Geo-replicatie is een functie van Premium-registers. Als uw register nog niet Premium is, kunt u overstappen van Basic en Standard naar Premium in de Azure-portal:

Schakelen tussen servicelagen in Azure Portal

Als u geo-replicatie voor uw Premium-register wilt configureren, meldt u zich aan bij Azure Portal.

Ga naar Azure Container Registry en selecteer Replicaties:

Replicaties in de containerregister-UI van Azure Portal

Er wordt een kaart weergegeven met alle huidige Azure-regio's:

Kaart met regio's in Azure Portal

  • Blauwe zeshoeken staan voor huidige replica's
  • Groene zeshoeken staan voor mogelijk replicatieregio's
  • Grijze zeshoeken staan voor Azure-regio's die nog niet beschikbaar zijn voor replicatie

Als u een replica wilt configureren, selecteert u een groene zeshoek en selecteert u vervolgens Maken:

Gebruikersinterface voor het maken van een replicatie in Azure Portal

Als u extra replica's wilt configureren, selecteert u de groene zeshoeken voor andere regio's en klikt u op Maken.

ACR begint installatiekopieën te synchroniseren voor de geconfigureerde replica's. Zodra dit is voltooid, geeft de portal Gereed weer. De status van de replica in de portal wordt niet automatisch bijgewerkt. Gebruik de vernieuwknop om de bijgewerkte status te bekijken.

Overwegingen voor het gebruik van een geo-gerepliceerd register

  • Elke regio in een geo-gerepliceerd register is onafhankelijk na het instellen. Azure Container Registry SLA's zijn van toepassing op elke geografisch gerepliceerde regio.
  • Voor elke push- of pull-installatiekopiebewerking in een geo-gerepliceerd register verzendt Azure Traffic Manager op de achtergrond een aanvraag naar de dichtstbijzijnde locatie van het register in de regio om de netwerklatentie te behouden.
  • Nadat u een installatiekopie- of tag-update naar de dichtstbijzijnde regio hebt gepusht, duurt het even voordat Azure Container Registry de manifesten en lagen repliceert naar de resterende regio's waar u zich hebt aangemeld. Het duurt langer om grotere afbeeldingen te repliceren dan kleinere afbeeldingen. Afbeeldingen en tags worden gesynchroniseerd in de replicatieregio's met een uiteindelijk consistentiemodel.
  • Als u werkstromen wilt beheren die afhankelijk zijn van push-updates naar een geo-gerepliceerd register, raden we u aan webhooks te configureren om te reageren op de pushgebeurtenissen. U kunt regionale webhooks instellen in een geo-gerepliceerd register om pushgebeurtenissen bij te houden zodra ze zijn voltooid in de geografisch gerepliceerde regio's.
  • Azure Container Registry maakt gebruik van gegevenseindpunten voor blobs die inhoudslagen vertegenwoordigen. U kunt toegewezen gegevenseindpunten inschakelen voor uw register in elk van de geografisch gerepliceerde regio's van uw register. Met deze eindpunten is de configuratie van strikt bereikbare firewalltoegangsregels mogelijk. Voor probleemoplossingsdoeleinden kunt u optioneel routering naar een replicatie uitschakelen terwijl gerepliceerde gegevens worden onderhouden.
  • Als u een privékoppeling voor uw register configureert met behulp van privé-eindpunten in een virtueel netwerk, worden toegewezen gegevenseindpunten in elk van de geografisch gerepliceerde regio's standaard ingeschakeld.

Overwegingen voor hoge beschikbaarheid

  • Voor hoge beschikbaarheid en tolerantie raden we u aan een register te maken in een regio die ondersteuning biedt voor het inschakelen van zoneredundantie. Het inschakelen van zoneredundantie in elke replicaregio wordt ook aanbevolen.
  • Als er een storing optreedt in de basisregio van het register (de regio waar deze is gemaakt) of een van de replicaregio's, blijft een geo-gerepliceerd register beschikbaar voor gegevensvlakbewerkingen, zoals het pushen of ophalen van containerinstallatiekopieën.
  • Als de basisregio van het register niet meer beschikbaar is, kunt u mogelijk geen registerbeheerbewerkingen uitvoeren, waaronder het configureren van netwerkregels, het inschakelen van beschikbaarheidszones en het beheren van replica's.
  • Als u een hoge beschikbaarheid van een geo-gerepliceerd register wilt plannen dat is versleuteld met een door de klant beheerde sleutel die is opgeslagen in een Azure-sleutelkluis, raadpleegt u de richtlijnen voor failover en redundantie van de sleutelkluis.

Een replica verwijderen

Nadat u een replica voor uw register hebt geconfigureerd, kunt u deze op elk gewenst moment verwijderen als deze niet meer nodig is. Verwijder een replica met behulp van Azure Portal of andere hulpprogramma's, zoals de opdracht az acr replication delete in de Azure CLI.

Ga als volgt te werk om een replica te verwijderen in Azure Portal:

  1. Navigeer naar uw Azure Container Registry en selecteer Replicaties.
  2. Selecteer de naam van een replica en selecteer Verwijderen. Bevestig dat u de replica wilt verwijderen.

Als u de Azure CLI wilt gebruiken om een replica van mijn register te verwijderen in de regio VS - oost:

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

Prijzen van geo-replicatie

Geo-replicatie is een functie van de Premium-servicelaag van Azure Container Registry. Wanneer u een register naar de gewenste regio's repliceert, worden er kosten voor het Premium-register voor elke regio gemaakt.

In het voorgaande voorbeeld ging Contoso van twee registers naar één en voegde het bedrijf replica's toe aan VS - oost, Canada - centraal en Europa - west. Contoso zou vier keer per maand Premium betalen, zonder extra configuratie of beheer. Elke regio haalt nu hun installatiekopieën lokaal op, waardoor de prestaties en betrouwbaarheid worden verbeterd zonder kosten voor uitgaand verkeer van het netwerk van VS - west naar Canada en VS - oost.

Problemen met pushbewerkingen met geo-gerepliceerde registers oplossen

Een Docker-client die een installatiekopieën naar een geo-gerepliceerd register pusht, pusht mogelijk niet alle lagen van de installatiekopieën en het bijbehorende manifest naar één gerepliceerde regio. Dit kan gebeuren omdat Azure Traffic Manager registeraanvragen naar het dichtstbijzijnde gerepliceerde register bij het netwerk routeert. Als het register twee replicatieregio's in de buurt heeft, kunnen afbeeldingslagen en het manifest worden gedistribueerd naar de twee sites en mislukt de pushbewerking wanneer het manifest wordt gevalideerd. Dit probleem treedt op vanwege de manier waarop de DNS-naam van het register wordt opgelost op sommige Linux-hosts. Dit probleem treedt niet op in Windows, wat een DNS-cache aan de clientzijde biedt.

Als dit probleem zich voordoet, is één oplossing het toepassen van een DNS-cache aan de clientzijde, zoals dnsmasq op de Linux-host. Dit zorgt ervoor dat de naam van het register consistent wordt opgelost. Als u een Virtuele Linux-machine in Azure gebruikt om naar een register te pushen, raadpleegt u opties in OPTIES voor DNS-naamomzetting voor virtuele Linux-machines in Azure.

Configureer een geo-gerepliceerd register in dezelfde Azure-regio's als de bron van de pushbewerkingen of de dichtstbijzijnde regio wanneer u buiten Azure werkt om de DNS-resolutie te optimaliseren naar de dichtstbijzijnde replica bij het pushen van installatiekopieën.

Routering naar replicatie tijdelijk uitschakelen

Als u problemen met bewerkingen met een geo-gerepliceerd register wilt oplossen, kunt u de Routering van Traffic Manager tijdelijk uitschakelen naar een of meer replicaties. Vanaf Azure CLI versie 2.8 kunt u een --region-endpoint-enabled optie (preview) configureren wanneer u een gerepliceerde regio maakt of bijwerkt. Wanneer u de optie falsevan --region-endpoint-enabled een replicatie instelt, stuurt Traffic Manager docker-push- of pull-aanvragen niet meer naar die regio. Standaard is routering naar alle replicaties ingeschakeld en vindt gegevenssynchronisatie voor alle replicaties plaats, ongeacht of routering is ingeschakeld of uitgeschakeld.

Als u routering naar een bestaande replicatie wilt uitschakelen, voert u eerst az acr replication list uit om de replicaties in het register weer te geven. Voer vervolgens az acr replication update uit en stel --region-endpoint-enabled false deze in voor een specifieke replicatie. Als u bijvoorbeeld de instelling voor de westus-replicatie in myregistry wilt configureren:

# 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

Routering naar een replicatie herstellen:

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

Een replicatie maken voor een register waarvoor een privé-eindpunt is ingeschakeld

Wanneer u een nieuwe registerreplicatie maakt voor het primaire register dat is ingeschakeld met een privé-eindpunt, wordt u aangeraden te valideren dat de gebruikersidentiteit geldige machtigingen voor het maken van privé-eindpunten heeft. Anders loopt de bewerking vast in de inrichtingsstatus tijdens het maken van de replicatie.

Volg de onderstaande stappen als u vastloopt in de inrichtingsstatus tijdens het maken van de registerreplicatie:

  • Verwijder handmatig de replicatie die vastgelopen is in de inrichtingsstatus.
  • Voeg de Microsoft.Network/privateEndpoints/privateLinkServiceProxies/write machtiging voor de gebruikersidentiteit toe.
  • Maak de registerreplicatieaanvraag opnieuw.

Deze machtigingscontrole is alleen van toepassing op de registers waarvoor privé-eindpunt is ingeschakeld.

Volgende stappen

Bekijk de driedelige zelfstudiereeks Geo-replicatie in Azure Container Registry. Ontdek hoe u een geo-gerepliceerd register maakt, een container bouwt en het vervolgens met één docker push-opdracht implementeert naar meerdere regionale Web App for Containers-instanties.