Azure Container Registry의 지리적 복제Geo-replication in Azure Container Registry

로컬 상태나 핫 백업이 필요한 기업은 둘 이상의 Azure 지역에서 서비스를 실행하도록 선택할 수 있습니다.Companies that want a local presence, or a hot backup, choose to run services from multiple Azure regions. 이미지가 실행되는 각 지역에 컨테이너 레지스트리를 배치하면 네트워크와 가까운 곳에서 작업하여 이미지 레이어를 빠르고 안정적으로 전송할 수 있습니다.As a best practice, placing a container registry in each region where images are run allows network-close operations, enabling fast, reliable image layer transfers. 지리적 복제를 사용하면 Azure Container Registry가 단일 레지스트리로 기능하여 다중 마스터 지역 레지스트리가 있는 둘 이상의 지역에 서비스를 제공할 수 있습니다.Geo-replication enables an Azure container registry to function as a single registry, serving multiple regions with multi-master regional registries.

지리적 복제된 레지스트리는 다음과 같은 이점을 제공합니다.A geo-replicated registry provides the following benefits:

  • 단일 레지스트리, 이미지 및 태그 이름을 여러 지역에서 사용할 수 있습니다.Single registry, image, and tag names can be used across multiple regions
  • 네트워크 닫기 레지스트리 액세스를 사용 하 여 지역 배포의 성능 및 안정성 향상Improve performance and reliability of regional deployments with network-close registry access
  • 컨테이너 호스트와 동일 하거나 가까운 지역의 복제 된 로컬 레지스트리에서 이미지 계층을 당겨 데이터 전송 비용을 줄입니다.Reduce data transfer costs by pulling image layers from a local, replicated registry in the same or nearby region as your container host
  • 둘 이상의 지역에서 레지스트리를 단일하게 관리Single management of a registry across multiple regions

참고

둘 이상의 Azure 컨테이너 레지스트리에서 컨테이너 이미지 복사본을 유지해야 하는 경우 Azure Container Registry가 이미지 가져오기도 지원합니다.If you need to maintain copies of container images in more than one Azure container registry, Azure Container Registry also supports image import. 예를 들어 Docker 명령을 사용할 필요 없이 DevOps 워크플로에서 개발 레지스트리의 이미지를 프로덕션 레지스트리로 가져올 수 있습니다.For example, in a DevOps workflow, you can import an image from a development registry to a production registry, without needing to use Docker commands.

사용 사례Example use case

Contoso는 미국, 캐나다, 유럽에서 공개 웹 사이트를 운영하고 있습니다.Contoso runs a public presence website located across the US, Canada, and Europe. Contoso는 미국, 캐나다, 유럽 시장에 네트워크와 가까운 곳에 위치한 로컬 콘텐츠를 제공하기 위해 미국 서부, 미국 동부, 캐나다 중부 및 서유럽에서 Azure Kubernetes Service(AKS) 클러스터를 실행합니다.To serve these markets with local and network-close content, Contoso runs Azure Kubernetes Service (AKS) clusters in West US, East US, Canada Central, and West Europe. Docker 이미지로서 배포된 웹 사이트 애플리케이션은 모든 지역에서 동일한 코드와 이미지를 사용합니다.The website application, deployed as a Docker image, utilizes the same code and image across all regions. 해당 지역의 로컬 콘텐츠는 지역별로 고유하게 프로비전된 데이터베이스에서 가져옵니다.Content, local to that region, is retrieved from a database, which is provisioned uniquely in each region. 각 지역별 배포는 로컬 데이터베이스와 리소스에 대해 고유한 구성을 갖습니다.Each regional deployment has its unique configuration for resources like the local database.

워싱턴주 시애틀에 있는 개발팀은 미국 서부 데이터 센터를 이용합니다.The development team is located in Seattle WA, utilizing the West US data center.

복수의 레지스트리에 밀어넣기Pushing to multiple registries
복수의 레지스트리에 밀어넣기Pushing to multiple registries

Contoso가 지리적 복제 기능을 시용하기 전에는 미국 서부 소재의 미국 기반 레지스트리와 추가로 서유럽 소재의 레지스트리가 있었습니다.Prior to using the geo-replication features, Contoso had a US-based registry in West US, with an additional registry in West Europe. 개발팀은 이렇게 여러 지역에 서비스를 제공하기 위해 두 개의 레지스트리로 이미지를 밀어넣었습니다.To serve these different regions, the development team pushed images to two different registries.

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

복수의 레지스트리에서 가져오기Pulling from multiple registries
복수의 레지스트리에서 가져오기Pulling from multiple registries

둘 이상의 레지스트리가 있는 경우 다음과 같은 문제가 발생할 수 있습니다.Typical challenges of multiple registries include:

  • 미국 동부, 미국 서부, 캐나다 중부 클러스터는 모두 미국 서부 레지스트리에서 콘텐츠를 가져왔는데, 이때 각 원격 컨테이너 호스트가 미국 서부 데이터 센서에서 이미지를 가져와야 했기 때문에 송신 요금이 발생했습니다.The East US, West US, and Canada Central clusters all pull from the West US registry, incurring egress fees as each of these remote container hosts pull images from West US data centers.
  • 개발팀은 미국 서부 레지스트리와 서유럽 레지스트리로 이미지를 밀어넣어야 했습니다.The development team must push images to West US and West Europe registries.
  • 개발팀은 로컬 레지스트리를 참조하는 이미지 이름을 사용하여 각 지역 배포를 구성하고 유지 관리해야 했습니다.The development team must configure and maintain each regional deployment with image names referencing the local registry.
  • 레지스트리 액세스를 지역별로 구성해야 했습니다.Registry access must be configured for each region.

지리적 복제의 이점Benefits of geo-replication

지리적 복제된 레지스트리에서 가져오기

Azure Container Registry의 지리적 복제 기능을 사용하면 다음과 같은 이점을 누릴 수 있습니다.Using the geo-replication feature of Azure Container Registry, these benefits are realized:

  • 모든 지역에서 단일 레지스트리 관리: contoso.azurecr.ioManage a single registry across all regions: contoso.azurecr.io
  • 모든 지역이 동일한 이미지 URL을 사용 하므로 이미지 배포의 단일 구성을 관리 합니다. contoso.azurecr.io/public/products/web:1.2Manage a single configuration of image deployments as all regions use the same image URL: contoso.azurecr.io/public/products/web:1.2
  • 단일 레지스트리로 푸시하면 ACR이 지역 복제를 관리합니다.Push to a single registry, while ACR manages the geo-replication. ACR은 고유한 레이어만 복제 하므로 지역 간에 데이터 전송이 줄어듭니다.ACR only replicates unique layers, reducing data transfer across regions.
  • 특정 복제본의 이벤트를 알리도록 지역 웹 후크 를 구성 합니다.Configure regional webhooks to notify you of events in specific replicas.

또한 Azure Container Registry는 Azure 지역 내에서 복원 력 및 고가용성 Azure 컨테이너 레지스트리를 만들기 위한 가용성 영역 을 지원 합니다.Azure Container Registry also supports availability zones to create a resilient and high availability Azure container registry within an Azure region. 지역 내 중복성에 대 한 가용성 영역을 조합 하 고 여러 지역에서 지역에서 복제를 조합 하 여 레지스트리의 안정성과 성능을 향상 시킵니다.The combination of availability zones for redundancy within a region, and geo-replication across multiple regions, enhances both the reliability and performance of a registry.

지역에서 복제 구성Configure geo-replication

지도에서 해당 지역을 클릭하여 간편하게 지리적 복제를 구성할 수 있습니다.Configuring geo-replication is as easy as clicking regions on a map. Azure CLI에서 az acr replication 명령을 비롯한 도구를 사용하여 지역 복제를 관리하거나 Azure Resource Manager 템플릿을 사용하여 지역 복제가 가능한 레지스트리를 배포할 수도 있습니다.You can also manage geo-replication using tools including the az acr replication commands in the Azure CLI, or deploy a registry enabled for geo-replication with an Azure Resource Manager template.

지역 복제는 프리미엄 레지스트리의 기능입니다.Geo-replication is a feature of Premium registries. Basic 및 Standard 레지스트리를 사용 중인 경우, Azure Portal에서 Premium으로 변경할 수 있습니다.If your registry isn't yet Premium, you can change from Basic and Standard to Premium in the Azure portal:

Azure Portal에서 서비스 계층 전환

프리미엄 레지스트리의 지리적 복제를 구성하려면 Azure Portal( https://portal.azure.com )에 로그인합니다.To configure geo-replication for your Premium registry, log in to the Azure portal at https://portal.azure.com.

Azure Container Registry로 이동하여 복제:Navigate to your Azure Container Registry, and select Replications:

Azure Portal 컨테이너 레지스트리 UI의 복제를 선택합니다.

기존 Azure 지역이 모두 표시된 지도가 나타납니다.A map is displayed showing all current Azure Regions:

Azure Portal의 지역 지도

  • 파란색 육각형은 기존 복제본을 나타냅니다.Blue hexagons represent current replicas
  • 녹색 육각형은 가능한 복제 지역을 나타냅니다.Green hexagons represent possible replica regions
  • 회색 육각형은 복제를 사용할 수 없는 Azure 지역을 나타냅니다.Gray hexagons represent Azure regions not yet available for replication

복제본을 구성하려면 녹색 육각형을 선택하고 만들기 를 선택합니다.To configure a replica, select a green hexagon, then select Create:

Azure Portal에서 복제 UI 만들기

추가로 복제본을 구성하려면 다른 지역의 녹색 육각형을 선택하고 만들기 를 클릭합니다.To configure additional replicas, select the green hexagons for other regions, then click Create.

ACR이 구성된 복제본 사이의 이미지 동기화를 시작합니다.ACR begins syncing images across the configured replicas. 동기화가 완료되면 포털에 준비 라고 표시됩니다.Once complete, the portal reflects Ready. 포털의 복제본 상태는 자동으로 업데이트되지 않습니다.The replica status in the portal doesn't automatically update. 업데이트된 상태를 보려면 새로 고침 단추를 클릭합니다.Use the refresh button to see the updated status.

지역 복제 레지스트리 사용 시 고려 사항Considerations for using a geo-replicated registry

  • 지역 복제 레지스트리의 각 Azure 지역은 일단 설정되면 서로 독립적입니다.Each region in a geo-replicated registry is independent once set up. 지역 복제된 각 Azure 지역에는 Azure Container Registry SLA가 적용됩니다.Azure Container Registry SLAs apply to each geo-replicated region.
  • 지역 복제된 레지스트리에서 이미지를 푸시 또는 풀하면 백그라운드의 Azure Traffic Manager는 네트워크 지연 시간 측면에서 가장 가까운 지역에 있는 레지스트리로 요청을 보냅니다.When you push or pull images from a geo-replicated registry, Azure Traffic Manager in the background sends the request to the registry located in the region that is closest to you in terms of network latency.
  • 가장 가까운 Azure 지역에 이미지 또는 태그 업데이트를 푸시한 후 Azure Container Registry가 매니페스트 및 레이어를 사용자가 옵트인한 나머지 Azure 지역에 복제할 때까지 어느 정도 시간이 걸립니다.After you push an image or tag update to the closest region, it takes some time for Azure Container Registry to replicate the manifests and layers to the remaining regions you opted into. 큰 이미지는 작은 이미지보다 복제 시간이 오래 걸립니다.Larger images take longer to replicate than smaller ones. 이미지 및 태그는 최종 일관성 모델을 사용하여 복제 지역에서 동기화됩니다.Images and tags are synchronized across the replication regions with an eventual consistency model.
  • 지역 복제 레지스트리에 푸시 업데이트를 사용하는 워크플로를 관리하려면 푸시 이벤트에 응답하는 webhook를 구성하는 것이 좋습니다.To manage workflows that depend on push updates to a geo-replicated registry, we recommend that you configure webhooks to respond to the push events. 지역 복제된 Azure 지역에서 완료되는 푸시 이벤트를 추적하도록 지역 복제된 레지스트리 내부에 지역별 webhook를 설정할 수 있습니다.You can set up regional webhooks within a geo-replicated registry to track push events as they complete across the geo-replicated regions.
  • 콘텐츠 계층을 나타내는 blob을 제공 하기 위해 Azure Container Registry는 데이터 끝점을 사용 합니다.To serve blobs representing content layers, Azure Container Registry uses data endpoints. 각 레지스트리의 지역 복제된 지역에서 레지스트리에 대해 전용 데이터 엔드포인트를 사용하도록 설정할 수 있습니다.You can enable dedicated data endpoints for your registry in each of your registry's geo-replicated regions. 이러한 엔드포인트를 사용하면 엄격하게 범위가 지정된 방화벽 액세스 규칙을 구성할 수 있습니다.These endpoints allow configuration of tightly scoped firewall access rules. 문제 해결을 위해 필요에 따라 복제 된 데이터를 유지 하는 동안 복제에 대 한 라우팅을 사용 하지 않도록 설정할 수 있습니다.For troubleshooting purposes, you can optionally disable routing to a replication while maintaining replicated data.
  • 가상 네트워크의 프라이빗 엔드포인트를 사용하여 레지스트리에 프라이빗 링크를 구성하는 경우 각 지역 복제된 지역에서 전용 데이터 엔드포인트가 기본적으로 사용되도록 설정됩니다.If you configure a private link for your registry using private endpoints in a virtual network, dedicated data endpoints in each of the geo-replicated regions are enabled by default.

복제본 삭제Delete a replica

레지스트리에 대한 복제본을 구성한 후 더 이상 필요하지 않은 경우 언제든지 삭제할 수 있습니다.After you've configured a replica for your registry, you can delete it at any time if it's no longer needed. Azure Portal 또는 Azure CLI에서 az acr replication delete 명령과 같은 기타 도구를 사용하여 복제본을 삭제합니다.Delete a replica using the Azure portal or other tools such as the az acr replication delete command in the Azure CLI.

Azure Portal에서 복제본을 삭제하려면 다음을 수행합니다.To delete a replica in the Azure portal:

  1. Azure Container Registry로 이동하여 복제 를 선택합니다.Navigate to your Azure Container Registry, and select Replications.
  2. 복제본의 이름을 선택하고 삭제 를 선택합니다.Select the name of a replica, and select Delete. 복제본을 삭제할지 확인합니다.Confirm that you want to delete the replica.

Azure CLI를 사용하여 미국 동부 지역에 있는 myregistry 의 복제본을 삭제하려면 다음을 수행합니다.To use the Azure CLI to delete a replica of myregistry in the East US region:

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

지역에서 복제 가격 책정Geo-replication pricing

지역 복제는 Azure Container Registry의 프리미엄 서비스 계층의 기능입니다.Geo-replication is a feature of the Premium service tier of Azure Container Registry. 레지스트리를 원하는 지역으로 복제하면 각 지역별로 Premium 레지스트리 요금이 발생합니다.When you replicate a registry to your desired regions, you incur Premium registry fees for each region.

앞의 예에서 Contoso는 미국 동부, 캐나다 중부, 서유럽에 복제본을 추가하여 두 개의 레지스트리를 하나로 통합했습니다.In the preceding example, Contoso consolidated two registries down to one, adding replicas to East US, Canada Central, and West Europe. Contoso는 지금부터 매월 4배의 프리미엄 요금을 지불하게 되며, 구성 또는 관리에 추가로 부과되는 요금은 없습니다.Contoso would pay four times Premium per month, with no additional configuration or management. 각 지역은 이제 로컬에서 이미지를 가져오기 때문에 성능과 안정성이 개선되며, 미국 서부에서 캐나다와 미국 동부로 네트워크 송신 요금이 발생하지 않습니다.Each region now pulls their images locally, improving performance, reliability without network egress fees from West US to Canada and East US.

지역에서 복제된 레지스트리를 사용하여 푸시 작업 문제 해결Troubleshoot push operations with geo-replicated registries

지리적으로 복제된 레지스트리에 이미지를 푸시하는 Docker 클라이언트는 모든 이미지 레이어와 해당 매니페스트를 단일 복제 지역에 푸시할 수 없습니다.A Docker client that pushes an image to a geo-replicated registry may not push all image layers and its manifest to a single replicated region. 이 문제는 Azure Traffic Manager가 레지스트리 요청을 네트워크에서 가장 가까운 복제 레지스트리로 라우팅하기 때문에 발생할 수 있습니다.This may occur because Azure Traffic Manager routes registry requests to the network-closest replicated registry. 레지스트리에 두 개의 인접 복제 지역이 있는 경우 이미지 레이어와 매니페스트를 두 사이트에 배포할 수 있으며 매니페스트의 유효성을 검사할 때 푸시 작업이 실패합니다.If the registry has two nearby replication regions, image layers and the manifest could be distributed to the two sites, and the push operation fails when the manifest is validated. 이 문제는 일부 Linux 호스트에서 레지스트리의 DNS 이름이 확인되기 때문에 발생합니다.This problem occurs because of the way the DNS name of the registry is resolved on some Linux hosts. 클라이언트 쪽 DNS 캐시를 제공하는 Windows에서는 이 문제가 발생하지 않습니다.This issue doesn't occur on Windows, which provides a client-side DNS cache.

이 문제가 발생하는 경우 한 가지 해결 방법은 Linux 호스트에서 dnsmasq와 같은 클라이언트 쪽 DNS 캐시를 적용하는 것입니다.If this problem occurs, one solution is to apply a client-side DNS cache such as dnsmasq on the Linux host. 이렇게 하면 레지스트리의 이름이 일관되게 확인됩니다.This helps ensure that the registry's name is resolved consistently. Azure에서 Linux VM을 사용하여 레지스트리에 푸시하는 경우 Azure의 Linux 가상 머신에 대한 DNS 이름 확인 옵션의 옵션을 참조하세요.If you're using a Linux VM in Azure to push to a registry, see options in DNS Name Resolution options for Linux virtual machines in Azure.

이미지를 푸시할 때 가장 가까운 복제본에 대한 DNS 확인을 최적화하려면 Azure 외부에서 작업할 때 푸시 작업의 원본과 동일한 Azure 지역 또는 가장 가까운 지역의 지역 복제 레지스트리를 구성합니다.To optimize DNS resolution to the closest replica when pushing images, configure a geo-replicated registry in the same Azure regions as the source of the push operations, or the closest region when working outside of Azure.

일시적으로 복제에 대 한 라우팅을 사용 하지 않도록 설정Temporarily disable routing to replication

지역에서 복제 된 레지스트리를 사용 하 여 작업 문제를 해결 하려면 하나 이상의 복제에 대 한 Traffic Manager 라우팅을 일시적으로 사용 하지 않도록 설정 하는 것이 좋습니다.To troubleshoot operations with a geo-replicated registry, you might want to temporarily disable Traffic Manager routing to one or more replications. Azure CLI 버전 2.8부터 --region-endpoint-enabled 복제 된 지역을 만들거나 업데이트할 때 옵션 (미리 보기)을 구성할 수 있습니다.Starting in Azure CLI version 2.8, you can configure a --region-endpoint-enabled option (preview) when you create or update a replicated region. 복제의 옵션을로 설정 하는 경우에 --region-endpoint-enabled false 는 더 이상 docker 밀어넣기 또는 끌어오기 요청을 해당 지역으로 라우트 하지 Traffic Manager.When you set a replication's --region-endpoint-enabled option to false, Traffic Manager no longer routes docker push or pull requests to that region. 기본적으로 모든 복제에 대 한 라우팅은 사용 하도록 설정 되며, 모든 복제에 대 한 데이터 동기화는 라우팅이 사용 되는지 여부에 관계 없이 수행 됩니다.By default, routing to all replications is enabled, and data synchronization across all replications takes place whether routing is enabled or disabled.

기존 복제에 대 한 라우팅을 사용 하지 않도록 설정 하려면 먼저 az acr replication list 를 실행 하 여 레지스트리의 복제를 나열 합니다.To disable routing to an existing replication, first run az acr replication list to list the replications in the registry. 그런 다음 az acr replication update 를 실행 하 고 --region-endpoint-enabled false 특정 복제에 대해를 설정 합니다.Then, run az acr replication update and set --region-endpoint-enabled false for a specific replication. 예를 들어 myregistrywestus 복제에 대 한 설정을 구성 하려면 다음을 수행 합니다.For example, to configure the setting for the westus replication 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

복제에 대 한 라우팅을 복원 하려면:To restore routing to a replication:

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

다음 단계Next steps

총 3부로 구성된 자습서 시리즈 Azure Container Registry의 지리적 복제를 확인하세요.Check out the three-part tutorial series, Geo-replication in Azure Container Registry. 직접 지리적 복제된 레지스트리를 만들어 보고, 컨테이너를 빌드하고, docker push 명령 하나로 여러 지역별 Web Apps for Containers 인스턴스로 배포해 볼 수 있습니다.Walk through creating a geo-replicated registry, building a container, and then deploying it with a single docker push command to multiple regional Web Apps for Containers instances.