Udostępnij za pośrednictwem


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. Jako najlepsza praktyka, umieszczenie rejestru kontenerów w każdym regionie, w którym działają obrazy, pozwala na operacje blisko sieci, co umożliwia szybkie i niezawodne przesyłanie warstw obrazów. 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/rejestry/replikacje/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 przypisana w sposób unikalny dla każdego regionu. Dla każdego wdrożenia regionalnego istnieje unikatowa konfiguracja zasobów, takich jak lokalna baza danych.

Zespół rozwoju znajduje się w Seattle, WA i korzysta z centrum danych zachodniego USA.

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

Zanim firma Contoso zaczęła używać funkcji replikacji geograficznej, miała repozytorium znajdujące się w Zachodnich Stanach Zjednoczonych oraz dodatkowe repozytorium w Europie Zachodniej. W celu obsługi tych różnych regionów zespół deweloperski przesyła 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 z regionów Wschodnie Wybrzeże USA, Zachodnie Wybrzeże USA i Kanada Środkowa pobierają dane z rejestru w Zachodnim Wybrzeżu USA, co wiąże się z kosztami transferu, ponieważ każdy z tych zdalnych hostów kontenerowych pobiera obrazy z centrów danych w tym rejonie.
  • Zespół rozwojowy musi przesyłać obrazy do repozytoriów w regionach Zachodniego USA i Europy Zachodniej.
  • Zespół deweloperski musi konfigurować i utrzymywać każde regionalne wdrożenie, używając nazw obrazów odnoszących się do lokalnego rejestru.
  • 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
  • Wypychaj do pojedynczego rejestru, podczas 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 webhooki, aby powiadamiać 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 z włączoną replikacją geograficzną przy użyciu szablonu usługi Azure Resource Manager.

Replikacja geograficzna jest funkcją rejestrów 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 dla replikacji w Portal Azure

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

ACR rozpoczyna synchronizację 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, które zostały wybrane, wymaga pewnego 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. Możesz skonfigurować regionalne webhooki w rejestrze z replikacją geograficzną, aby śledzić zdarzenia wypychania w miarę ich zakończenia w regionach z replikacją geograficzną.
  • 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 w twoim rejestrze w każdym z geograficznie zreplikowanych regionów twojego rejestru. 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 nadmiarowość strefy. Zaleca się również włączenie nadmiarowości strefowej w każdym regionie repliki.
  • Jeśli wystąpi awaria w regionie macierzystym rejestru (regionie, w którym został utworzony) lub w jednym z regionów repliki, rejestr z replikacją geograficzną 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ą zaszyfrowanego przy użyciu klucza zarządzanego przez klienta, przechowywanego w magazynie kluczy platformy Azure, zapoznaj się ze wskazówkami dotyczącymi problemów z awaryjnym przełączeniem 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 portalu Azure lub innych narzędzi, takich jak polecenie az acr replication delete w Azure CLI.

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 myregistry w regionie Wschodnie USA:

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

Cennik replikacji geograficznej

Replikacja geograficzna to funkcja poziomu usługi Premium Azure Container Registry. Kiedy replikuje się rejestr w żądanych regionach, naliczane są opłaty za rejestr w wersji Premium dla każdego z tych regionów.

W poprzednim przykładzie firma Contoso skonsolidowała dwa rejestry w ramach jednego, dodając repliki do Wschodniego USA, do Kanady Środkowej i do Europy Zachodniej. 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 oraz Wschodnich Stanów USA.

Rozwiązywanie problemów z operacjami wysyłania 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 blisko położone regiony replikacji, warstwy obrazu i manifest mogą być rozdzielone pomiędzy dwie lokalizacje, a operacja przesyłania kończy się niepowodzeniem podczas weryfikacji 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 wysyłania do rejestru, zobacz opcje 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 usługi Azure co miejsce pochodzenia operacji wypychania lub w najbliższym regionie 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 Azure CLI 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 false, usługa Traffic Manager nie kieruje już żądań push ani pull 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 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 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 w 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.
  • Dodaj uprawnienie Microsoft.Network/privateEndpoints/privateLinkServiceProxies/write 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. Przejdź przez tworzenie rejestru z replikacją geograficzną, budowanie kontenera, a następnie wdrażanie go za pomocą pojedynczego polecenia docker push w wielu regionalnych instancjach Web Apps dla kontenerów.