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
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
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
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:
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:
Zostanie wyświetlona mapa przedstawiająca wszystkie bieżące regiony platformy Azure:
- 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:
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:
- Przejdź do usługi Azure Container Registry i wybierz pozycję Replikacje.
- 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 false
usł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
.