Replikacja geograficzna w usłudze Azure Container Registry

Firmy, które chcą mieć lokalną obecność lub gorącą kopię zapasową, zdecydują się uruchamiać usługi z wielu regionów świadczenia usługi Azure. Najlepszym rozwiązaniem jest umieszczenie rejestru kontenerów w każdym regionie, w którym uruchamiane są obrazy. Dzięki temu operacje są wykonywane w pobliżu własnych wdrożeń, co umożliwia szybkie i niezawodne przesyłanie warstwy obrazu. Replikacja geograficzna umożliwia rejestrowi kontenerów platformy Azure działanie jako pojedynczy rejestr obsługujący wiele regionów z wieloma podstawowymi rejestrami regionalnymi.

Rejestr z replikacją geograficzną zapewnia następujące korzyści:

  • Nazwy pojedynczych rejestrów, obrazów i tagów mogą być używane w wielu regionach
  • Zwiększanie wydajności i niezawodności wdrożeń regionalnych przy użyciu dostępu do rejestru w pobliżu sieci
  • Zmniejsz koszty transferu danych, ściągając warstwy obrazów z lokalnego, replikowanego rejestru w tym samym lub pobliskim regionie co host kontenera
  • Ujednolicone zarządzanie rejestrem w wielu regionach
  • Odporność rejestru w przypadku awarii regionalnej

Uwaga

  • Jeśli zachodzi potrzeba obsługi kopii obrazów kontenerów w więcej niż jednym rejestrze kontenerów platformy Azure, usługa Azure Container Registry obsługuje również importowanie obrazów. Na przykład w przepływie pracy DevOps można zaimportować obraz z rejestru deweloperskiego do rejestru produkcyjnego bez konieczności używania poleceń platformy Docker.
  • Jeśli chcesz przenieść rejestr do innego regionu świadczenia usługi Azure, zamiast replikować geograficznie rejestr, zobacz Ręczne przenoszenie rejestru kontenerów do innego regionu.

Wymagania wstępne

  • Użytkownik wymaga następujących uprawnień (na poziomie rejestru) do tworzenia/usuwania replikacji:

    Uprawnienie opis
    Microsoft.ContainerRegistry/registries/write Tworzenie replikacji
    Microsoft.ContainerRegistry/registries/replications/write Usuwanie replikacji

Przykładowy przypadek użycia

Firma Contoso posiada dostępną publicznie witryny internetową zlokalizowaną w Stanach Zjednoczonych, Kanadzie i Europie. Aby obsługiwać te rynki przy użyciu zawartości lokalnej dostępnej w pobliskiej sieci, firma Contoso uruchamia klastry usługi Azure Kubernetes Service (AKS) w regionach Zachodnie stany USA, Wschodnie stany USA, Kanada Środkowa i Europa Zachodnia. Aplikacja internetowa wdrożona jako obraz platformy Docker korzysta z tego samego kodu i obrazu we wszystkich regionach. Zawartość lokalna w tym regionie jest pobierana z bazy danych, która jest aprowizowana unikatowo w każdym regionie. Dla każdego wdrożenia regionalnego istnieje unikatowa konfiguracja zasobów, takich jak lokalna baza danych.

Zespół deweloperów znajduje się w Seattle, WA i korzysta z centrum danych Zachodnie stany USA.

Wypychanie do wielu rejestrów
Wypychanie do wielu rejestrów

Zanim były używane funkcje replikacji geograficznej, firma Contoso posiadała rejestr znajdujący się w regionie Zachodnie stany USA oraz dodatkowy rejestr w regionie Europa Zachodnia. W celu obsługi tych regionów zespół programistyczny wypychał obrazy do dwóch różnych rejestrów.

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

Ściąganie z wielu rejestrów
Ściąganie z wielu rejestrów

Typowe wyzwania związane z korzystaniem z wielu rejestrów:

  • Wszystkie klastry Wschodnie stany USA, Zachodnie stany USA i Kanada Środkowa ściągają z rejestru Zachodnie stany USA, generując opłaty za ruch wychodzący, ponieważ każdy z tych zdalnych hostów kontenerów ściąga obrazy z centrów danych w regionie Zachodnie stany USA.
  • Zespół programistyczny musi wypychać obrazy do rejestrów w regionach Zachodnie stany USA i Europa Zachodnia.
  • Zespół programistyczny musi konfigurować i konserwować każde wdrożenie regionalne przy użyciu nazw obrazów odwołujących się do rejestru lokalnego.
  • Dostęp do rejestru musi być skonfigurowany dla każdego regionu.

Korzyści z replikacji geograficznej

Ściąganie z rejestru z replikacją geograficzną

Funkcja replikacji geograficznej usługi Azure Container Registry ma następujące korzyści:

  • Zarządzanie pojedynczym rejestrem w wielu regionach: contoso.azurecr.io
  • Zarządzaj pojedynczą konfiguracją wdrożeń obrazów, ponieważ wszystkie regiony używają tego samego adresu URL obrazu: contoso.azurecr.io/public/products/web:1.2
  • Wypychanie do pojedynczego rejestru, gdy usługa ACR automatycznie zarządza replikacją geograficzną. Usługa ACR replikuje tylko unikatowe warstwy, co zmniejsza transfer danych między regionami.
  • Skonfiguruj regionalne elementy webhook , aby otrzymywać powiadomienia o zdarzeniach w określonych replikach.
  • Podaj rejestr o wysokiej dostępności, który jest odporny na awarie regionalne.

Usługa Azure Container Registry obsługuje również strefy dostępności w celu utworzenia odpornego i wysokiej dostępności rejestru kontenerów platformy Azure w regionie świadczenia usługi Azure. Połączenie stref dostępności na potrzeby nadmiarowości w regionie i replikacji geograficznej w wielu regionach zwiększa niezawodność i wydajność rejestru.

Konfigurowanie replikacji geograficznej

Konfigurowanie replikacji geograficznej jest równie proste, co klikanie regionów na mapie. Można również zarządzać replikacją geograficzną przy użyciu narzędzi, w tym poleceń az acr replication w interfejsie wiersza polecenia platformy Azure, lub wdrożyć rejestr włączony na potrzeby replikacji geograficznej przy użyciu szablonu usługi Azure Resource Manager.

Replikacja geograficzna to funkcja rejestrów w warstwie Premium. Jeśli Twój rejestr nie znajduje się jeszcze w warstwie Premium, możesz zmienić warstwę z warstwy Podstawowa i Standardowa na warstwę Premium w witrynie Azure Portal:

Przełączanie warstw usług w witrynie Azure Portal

Aby skonfigurować replikację geograficzną dla rejestru Premium, zaloguj się do witryny Azure Portal.

Przejdź do używanego rejestru Azure Container Registry, a następnie wybierz pozycję Replikacje:

Replikacje w interfejsie użytkownika rejestru kontenerów w witrynie Azure Portal

Zostanie wyświetlona mapa przedstawiająca wszystkie bieżące regiony platformy Azure:

Mapa regionów w witrynie Azure Portal

  • Niebieskie sześciokąty reprezentują bieżące repliki
  • Zielone sześciokąty reprezentują możliwe regiony replik
  • Szare sześciokąty reprezentują regiony platformy Azure, które nie są jeszcze dostępne dla replikacji

Aby skonfigurować replikę, wybierz zielony sześciokąt, a następnie wybierz pozycję Utwórz:

Tworzenie interfejsu użytkownika replikacji w witrynie Azure Portal

Aby skonfigurować dodatkowe repliki, wybierz zielone sześciokąty dla innych regionów, a następnie kliknij pozycję Utwórz.

Usługa ACR rozpocznie synchronizowanie obrazów między skonfigurowanymi replikami. Po ukończeniu tego zadania w portalu zostanie wyświetlony stan Gotowe. Stan repliki w portalu nie jest automatycznie aktualizowany. Użyj przycisku odświeżania, aby wyświetlić zaktualizowany stan.

Zagadnienia dotyczące korzystania z rejestru replikowanego geograficznie

  • Każdy region w rejestrze replikowanym geograficznie jest niezależny po skonfigurowaniu. Umowy SLA usługi Azure Container Registry mają zastosowanie do każdego regionu replikowanego geograficznie.
  • W przypadku każdej operacji wypychania lub ściągania obrazu w rejestrze replikowanym geograficznie usługa Azure Traffic Manager w tle wysyła żądanie do najbliższej lokalizacji rejestru w regionie, aby zachować opóźnienie sieci.
  • Po wypchnięciu obrazu lub aktualizacji tagu do najbliższego regionu replikacja manifestów i warstw do pozostałych regionów, do których wyrazisz zgodę, zajmuje trochę czasu. Replikowanie większych obrazów trwa dłużej niż w przypadku mniejszych obrazów. Obrazy i tagi są synchronizowane w regionach replikacji z modelem spójności ostatecznej.
  • Aby zarządzać przepływami pracy, które zależą od aktualizacji wypychanych do rejestru replikowanego geograficznie, zalecamy skonfigurowanie elementów webhook w celu reagowania na zdarzenia wypychania. Regionalne elementy webhook można skonfigurować w rejestrze replikowanym geograficznie w celu śledzenia zdarzeń wypychania w miarę ich wykonywania w regionach replikowanych geograficznie.
  • Aby obsłużyć obiekty blob reprezentujące warstwy zawartości, usługa Azure Container Registry używa punktów końcowych danych. Możesz włączyć dedykowane punkty końcowe danych dla rejestru w każdym z regionów replikowanych geograficznie w rejestrze. Te punkty końcowe umożliwiają konfigurację ściśle ograniczonych reguł dostępu do zapory. Na potrzeby rozwiązywania problemów można opcjonalnie wyłączyć routing do replikacji przy zachowaniu replikowanych danych.
  • Jeśli skonfigurujesz link prywatny dla rejestru przy użyciu prywatnych punktów końcowych w sieci wirtualnej, dedykowane punkty końcowe danych w każdym z regionów replikowanych geograficznie są domyślnie włączone.

Zagadnienia dotyczące wysokiej dostępności

  • Aby zapewnić wysoką dostępność i odporność, zalecamy utworzenie rejestru w regionie obsługującym włączanie nadmiarowości strefy. Zalecane jest również włączenie nadmiarowości strefy w każdym regionie repliki.
  • Jeśli wystąpi awaria w regionie macierzystych rejestru (regionie, w którym został utworzony) lub w jednym z regionów repliki, rejestr replikowany geograficznie pozostaje dostępny dla operacji płaszczyzny danych, takich jak wypychanie lub ściąganie obrazów kontenerów.
  • Jeśli region macierzystych rejestru stanie się niedostępny, może nie być w stanie przeprowadzić operacji zarządzania rejestrem, w tym konfigurowania reguł sieciowych, włączania stref dostępności i zarządzania replikami.
  • Aby zaplanować wysoką dostępność rejestru z replikacją geograficzną zaszyfrowaną przy użyciu klucza zarządzanego przez klienta przechowywanego w magazynie kluczy platformy Azure, zapoznaj się ze wskazówkami dotyczącymi trybu failover i nadmiarowości magazynu kluczy.

Usuwanie repliki

Po skonfigurowaniu repliki dla rejestru można ją usunąć w dowolnym momencie, jeśli nie jest już potrzebna. Usuń replikę przy użyciu witryny Azure Portal lub innych narzędzi, takich jak polecenie az acr replication delete w interfejsie wiersza polecenia platformy Azure.

Aby usunąć replikę w witrynie Azure Portal:

  1. Przejdź do usługi Azure Container Registry i wybierz pozycję Replikacje.
  2. Wybierz nazwę repliki i wybierz pozycję Usuń. Upewnij się, że chcesz usunąć replikę.

Aby użyć interfejsu wiersza polecenia platformy Azure do usunięcia repliki bazy danych myregistry w regionie Wschodnie stany USA:

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

Cennik replikacji geograficznej

Replikacja geograficzna to funkcja warstwy usługi Premium usługi Azure Container Registry. Replikacja rejestru w żądanych regionach wiąże się z naliczaniem opłat za rejestr w warstwie Premium w danym regionie.

W poprzednim przykładzie firma Contoso skonsolidowała dwa rejestry w ramach jednego, dodając repliki do regionu Wschodnie stany USA, Kanada Środkowa i Europa Zachodnia. Firma Contoso zapłaciłaby miesięcznie czterokrotną opłatę za warstwę Premium bez dodatkowej konfiguracji ani zarządzania. Każdy region pobiera teraz obrazy lokalnie, zwiększając wydajność i niezawodność bez opłat za ruch wychodzący z zachodnich stanów USA do Kanady i Wschodnie stany USA.

Rozwiązywanie problemów z operacjami wypychania przy użyciu rejestrów replikowanych geograficznie

Klient platformy Docker, który wypycha obraz do rejestru replikowanego geograficznie, może nie wypchnąć wszystkich warstw obrazu i manifestu do pojedynczego zreplikowanego regionu. Może się tak zdarzyć, ponieważ usługa Azure Traffic Manager kieruje żądania rejestru do najbliższego zreplikowanego rejestru w sieci. Jeśli rejestr ma dwa regiony replikacji w pobliżu , warstwy obrazu i manifest mogą być dystrybuowane do dwóch lokacji, a operacja wypychania kończy się niepowodzeniem po zweryfikowaniu manifestu. Ten problem występuje z powodu sposobu rozpoznawania nazwy DNS rejestru na niektórych hostach z systemem Linux. Ten problem nie występuje w systemie Windows, który zapewnia pamięć podręczną DNS po stronie klienta.

Jeśli wystąpi ten problem, jednym z rozwiązań jest zastosowanie pamięci podręcznej DNS po stronie klienta, takiej jak dnsmasq na hoście z systemem Linux. Pomaga to zagwarantować, że nazwa rejestru jest spójnie rozpoznawana. Jeśli używasz maszyny wirtualnej z systemem Linux na platformie Azure do wypychania do rejestru, zobacz opcje w opcjach rozpoznawania nazw DNS dla maszyn wirtualnych z systemem Linux na platformie Azure.

Aby zoptymalizować rozpoznawanie nazw DNS do najbliższej repliki podczas wypychania obrazów, skonfiguruj rejestr replikowany geograficznie w tych samych regionach świadczenia usługi Azure co źródło operacji wypychania lub najbliższy region podczas pracy poza platformą Azure.

Tymczasowo wyłącz routing do replikacji

Aby rozwiązać problemy z operacjami w rejestrze replikowanym geograficznie, możesz tymczasowo wyłączyć routing usługi Traffic Manager do co najmniej jednej replikacji. Począwszy od interfejsu wiersza polecenia platformy Azure w wersji 2.8, można skonfigurować --region-endpoint-enabled opcję (wersja zapoznawcza) podczas tworzenia lub aktualizowania replikowanego regionu. Po ustawieniu opcji replikacji --region-endpoint-enabled na falseusługa Traffic Manager nie kieruje już żądań wypychania ani ściągnięcia platformy Docker do tego regionu. Domyślnie routing do wszystkich replikacji jest włączony, a synchronizacja danych we wszystkich replikacjach odbywa się niezależnie od tego, czy routing jest włączony, czy wyłączony.

Aby wyłączyć routing do istniejącej replikacji, najpierw uruchom polecenie az acr replication list , aby wyświetlić listę replikacji w rejestrze. Następnie uruchom polecenie az acr replication update i ustaw --region-endpoint-enabled false dla określonej replikacji. Aby na przykład skonfigurować ustawienie replikacji westus w usłudze 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

Aby przywrócić routing do replikacji:

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

Tworzenie replikacji dla rejestru z włączoną obsługą prywatnego punktu końcowego

Podczas tworzenia nowej replikacji rejestru dla rejestru podstawowego z włączonym prywatnym punktem końcowym zalecamy zweryfikowanie, czy tożsamość użytkownika ma prawidłowe uprawnienia do tworzenia prywatnego punktu końcowego. W przeciwnym razie operacja zostaje zablokowana w stanie aprowizacji podczas tworzenia replikacji.

Wykonaj poniższe kroki, jeśli stan aprowizacji został zablokowany podczas tworzenia replikacji rejestru:

  • Ręcznie usuń replikację, która utknęła w stanie aprowizacji.
  • Microsoft.Network/privateEndpoints/privateLinkServiceProxies/write Dodaj uprawnienie dla tożsamości użytkownika.
  • Utwórz ponownie żądanie replikacji rejestru.

To sprawdzanie uprawnień dotyczy tylko rejestrów z włączonym prywatnym punktem końcowym.

Następne kroki

Zapoznaj się z trzyczęściową serią samouczków dostępną w sekcji Replikacja geograficzna w usłudze Azure Container Registry. Opisano w niej tworzenie rejestru z replikacją geograficzną, tworzenie kontenera, a następnie wdrażanie go w ramach wielu regionalnych aplikacji usługi Web Apps na potrzeby wystąpień kontenerów za pomocą pojedynczego polecenia docker push.