Azure Container Registry の geo レプリケーション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. geo レプリケーションにより、Azure コンテナー レジストリが単一のレジストリとして機能することが可能になり、マルチマスター リージョン レジストリで複数のリージョンに対応できます。Geo-replication enables an Azure container registry to function as a single registry, serving multiple regions with multi-master regional registries.

geo レプリケートされたレジストリには次の利点があります。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. たとえば DevOps ワークフローでは、Docker コマンドを使用する必要なしに、開発レジストリから運用レジストリにイメージをインポートできます。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 では、米国、カナダ、ヨーロッパにまたがる パブリック プレゼンスの Web サイトを運用しています。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 イメージとしてデプロイされた Web サイト アプリケーションでは、すべてのリージョンで同じコードとイメージを使用します。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 では、geo レプリケーション機能を使用する前は、米国西部では米国ベースのレジストリを使用し、西ヨーロッパでは追加のレジストリを使用していました。Prior to using the geo-replication features, Contoso had a US-based registry in West US, with an additional registry in West Europe. これらの異なるリージョンに対応するために、開発チームは 2 つの異なるレジストリにイメージをプッシュしていました。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.

geo レプリケーションのメリットBenefits of geo-replication

geo レプリケートされたレジストリからのプル

Azure Container Registry の geo レプリケーション機能を使用すると、次のメリットが実現されます。Using the geo-replication feature of Azure Container Registry, these benefits are realized:

  • すべてのリージョンにまたがる 1 つのレジストリ (contoso.azurecr.io) を管理すれば済む。Manage a single registry across all regions: contoso.azurecr.io
  • すべてのリージョンで同じイメージ URL (contoso.azurecr.io/public/products/web:1.2) が使用されるので、イメージのデプロイの 1 つの構成を管理すれば済む。Manage a single configuration of image deployments as all regions use the same image URL: contoso.azurecr.io/public/products/web:1.2
  • 1 つのレジストリにプッシュすれば済む。geo レプリケーションは、ACR が管理する。Push to a single registry, while ACR manages the geo-replication. ACR は一意のレイヤーのみをレプリケートし、リージョン間のデータ転送を削減する。ACR only replicates unique layers, reducing data transfer across regions.
  • 特定のレプリカ内のイベントを通知するように、リージョン Webhook を構成する。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. リージョン内の冗長性のための可用性ゾーンと、複数のリージョンをまたぐ geo レプリケーションを組み合わせることで、レジストリの信頼性とパフォーマンスが強化されます。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.

geo レプリケーションの構成Configure geo-replication

geo レプリケーションは、マップ上でリージョンをクリックして簡単に構成できます。Configuring geo-replication is as easy as clicking regions on a map. Azure CLI の az acr replication コマンドなどのツールを使用して geo レプリケーションを管理することや、Azure Resource Manager テンプレートを使用して geo レプリケーションが有効なレジストリをデプロイすることもできます。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 レプリケーションは、Premium レジストリの機能です。Geo-replication is a feature of Premium registries. レジストリがまだ Premium でない場合は、Azure Portal で Basic および Standard から Premium に変更できます。If your registry isn't yet Premium, you can change from Basic and Standard to Premium in the Azure portal:

Azure portal でのサービス レベルの切り替え

Premium レジストリの geo レプリケーションを構成するには、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.

geo レプリケーションされたレジストリの使用に関する注意点Considerations for using a geo-replicated registry

  • geo レプリケーションされたレジストリの各リージョンは、設定後は独立しています。Each region in a geo-replicated registry is independent once set up. Azure Container Registry の SLA は、geo レプリケーションされた各リージョンに適用されます。Azure Container Registry SLAs apply to each geo-replicated region.
  • geo レプリケーションされたレジストリからイメージをプッシュまたはプルすると、バックグラウンドの 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 Container Registry がマニフェストとレイヤーを、選択された残りのリージョンにレプリケートするまでに、少し時間がかかります。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.
  • geo レプリケーションされたレジストリへのプッシュ更新に依存するワークフローを管理するには、プッシュ イベントに応答するように 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. geo レプリケーションされたレジストリ内にリージョンの Webhook を設定して、geo レプリケーションされたすべてのリージョンにわたってプッシュ イベントが完了したときにそれを追跡できます。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. 各レジストリの geo レプリケートされたリージョンで、レジストリの専用データ エンドポイントを有効にすることができます。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.
  • 仮想ネットワークのプライベート エンドポイントを使用して、レジストリの Private Link を構成した場合、geo レプリケートされた各リージョンの専用データ エンドポイントが既定で有効になります。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 レプリケーションの価格Geo-replication pricing

geo レプリケーションは、Azure Container Registry の Premium サービス レベルの機能です。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 は、米国東部、カナダ中部、西ヨーロッパにレプリカを追加して、2 つのレジストリを 1 つに統合しました。In the preceding example, Contoso consolidated two registries down to one, adding replicas to East US, Canada Central, and West Europe. Contoso には、1 か月あたり 4 倍の Premium 料金が課金されます。追加の構成や管理は不要です。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.

geo レプリカ レジストリでプッシュ操作の問題を解決するTroubleshoot push operations with geo-replicated registries

geo レプリカ レジストリにイメージをプッシュする Docker クライアントでは、イメージ層とそのマニフェストの一部が 1 つのレプリカ リージョンにプッシュされないことがあります。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. レジストリに 近くの レプリケーション リージョンが 2 つある場合、イメージ層とマニフェストはその 2 つのサイトに分配されることがあり、マニフェストの有効性が検証されると、プッシュ操作に失敗します。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. この問題は、レジストリの DNS 名が一部の Linux ホストで解決される方法に起因して発生します。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 キャッシュを適用することが 1 つの解決策です。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 外での作業となる場合、最も近くのリージョンで geo レプリカ レジストリを構成します。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

Geo レプリケートされたレジストリでの操作をトラブルシューティングする場合、1 つまたは複数のレプリケーションへの 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 に設定すると、Traffic Manager はそのリージョンに docker push 要求または docker pull 要求をルーティングしなくなります。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

Azure Container Registry の geo レプリケーションに関する 3 部構成のチュートリアル シリーズを確認します。Check out the three-part tutorial series, Geo-replication in Azure Container Registry. これらのチュートリアルでは、geo レプリケートされたレジストリを作成する方法、コンテナーをビルドする方法、1 つの docker push コマンドを使用してリージョンの複数の Web App 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.