geo レプリケーションを有効にする

この記事では、Azure App Configuration ストアのレプリケーションについて説明します。 構成ストアでレプリカを作成、使用、削除する方法について説明します。

geo レプリケーションの概念の詳細については、Azure App Configuration での geo レプリケーションに関するページを参照してください。

前提条件

レプリカを作成して一覧表示する

ポータルで構成ストアのレプリカを作成するには、次の手順に従います。

Note

静的 IP で構成されたプライベート エンドポイントを使用して App Configuration ストアのレプリカを作成することはサポートされていません。 静的 IP 構成のプライベート エンドポイントを使用する場合は、プライベート エンドポイントをストアに追加する前にレプリカを作成する必要があります。

  1. App Configuration ストアの [設定] で、[geo レプリケーション] を選択します。

  2. [レプリカ][作成] を選択します。 ドロップダウンで新しいレプリカの場所を選択し、レプリカに名前を割り当てます。 このレプリカの名前は一意である必要があります。

    強調表示された [geo レプリケーション] ボタンとレプリカの [作成] ボタンのスクリーンショット。

  3. [作成] を選択します

  4. [レプリカ] の下に新しいレプリカが表示されます。 レプリカの状態が "成功" であることを確認します。これは、レプリカが正常に作成されたことを示します。

    構成ストア向けに作成されたレプリカのリストのスクリーンショット。

レプリカの削除

ポータルでレプリカを削除するには、次の手順に従います。

  1. App Configuration ストアの [設定] で、[geo レプリケーション] を選択します。

  2. [レプリカ] で、削除するレプリカの右側にある [...] を選択します。 ドロップダウンで [削除] を選択します。

    選択されたレプリカの右側の 3 つのドットが示され、削除オプションが示されたスクリーンショット。

  3. 削除するレプリカの名前を確認し、[OK] を選択して確定します。

  4. プロセスが完了したら、正しいレプリカが削除されたことをレプリカの一覧で確認します。

レプリカを使ったスケーリングとフェールオーバー

作成する各レプリカには、対応するエンドポイントがあります。 アプリケーションが複数の地理位置に存在する場合、それぞれの場所にデプロイされた各アプリケーションを更新して、その場所にできるだけ近いレプリカに接続するようにすれば、アプリケーションと App Configuration との間のネットワーク待ち時間を最小限に抑えることができます。 それぞれのレプリカに与えられる要求クォータは独立しているため、この設定は、複数リージョンに分散されたサービスとして拡大するアプリケーションのスケーラビリティにも寄与します。

geo レプリケーションが有効になっている場合、いずれかのレプリカがアクセス不能になっても、アプリケーションを別のレプリカにフェールオーバーさせることで回復性を高めることができます。 App Configuration プロバイダー ライブラリは、複数のレプリカ エンドポイントに対応しているため、ビルトインでフェールオーバーがサポートされます。 優先度の最も高いエンドポイントから最も低いエンドポイントの順番で、一連のレプリカ エンドポイントを提供することができます。 プロバイダー ライブラリは、現在のエンドポイントにアクセスできなくなると、それよりも優先度の低いエンドポイントにフェールオーバーしますが、より優先度が高いエンドポイントへの接続は随時試行されます。 より優先度の高いエンドポイントが使用可能になると、そのエンドポイントが、以降の要求を処理するようになります。

Azure App Configuration を使用するアプリケーションがあると仮定すると、フェールオーバー機能を利用するために、次のサンプル コードのようにアプリケーションを更新できます。 Microsoft Entra 認証用のエンドポイントの一覧、またはアクセス キーベースの認証用の接続文字列の一覧のいずれかを指定できます。

AddAzureAppConfiguration メソッドの呼び出しを編集します。これは、アプリケーションの program.cs ファイルでよく見られます。

Microsoft Entra ID を使用して接続する

configurationBuilder.AddAzureAppConfiguration(options =>
{
    // Provide an ordered list of replica endpoints
    var endpoints = new Uri[] {
        new Uri("<first-replica-endpoint>"),
        new Uri("<second-replica-endpoint>") };
    
    // Connect to replica endpoints using Microsoft Entra authentication
    options.Connect(endpoints, new DefaultAzureCredential());

    // Other changes to options
});

接続文字列を使用して接続する

configurationBuilder.AddAzureAppConfiguration(options =>
{
    // Provide an ordered list of replica connection strings
    var connectionStrings = new string[] {
        Environment.GetEnvironmentVariable("FIRST_REPLICA_CONNECTION_STRING"),
        Environment.GetEnvironmentVariable("SECOND_REPLICA_CONNECTION_STRING") };
    
    // Connect to replica endpoints using connection strings
    options.Connect(connectionStrings);

    // Other changes to options
});

Note

フェールオーバーのサポートは、次のいずれかのパッケージのバージョン 6.0.0 以降を使用している場合に利用できます。

  • Microsoft.Extensions.Configuration.AzureAppConfiguration
  • Microsoft.Azure.AppConfiguration.AspNetCore
  • Microsoft.Azure.AppConfiguration.Functions.Worker

フェールオーバーは、App Configuration プロバイダーが次の条件を満たした場合に発生します。

  • サービス利用不可状態 (HTTP 状態コード 500 以上) の応答を受信した。
  • ネットワーク接続の問題が発生した。
  • 要求がスロットルされた (HTTP 状態コード 429)。

認証エラーなどのクライアント エラーでは、フェールオーバーは発生しません。

レプリカの自動検出

アプリケーションの接続先またはフェールオーバー先として、geo レプリケーションが有効な App Configuration ストアのエンドポイントを 1 つ以上指定できます。 ただし、これらのエンドポイントのいずれにもアクセスできない場合、App Configuration プロバイダー ライブラリを使ってその他のレプリカを自動的に検出し、それらへの接続を試みることができます。 この機能を使うと、コードを変更したりアプリケーションを再デプロイしたりすることなく、geo レプリケーションの恩恵を受けることができます。 つまり、アプリケーションをデプロイした後でも、geo レプリケーションを有効にすることや、さらにレプリカを追加することができます。

自動的に検出されたレプリカがランダムに選ばれ、使われます。 特定のレプリカを優先する場合は、そのエンドポイントを明示的に指定できます。 この機能は既定で有効になっていますが、次のサンプル コードを参照して無効にすることができます。

AddAzureAppConfiguration メソッドの呼び出しを編集します。これは、アプリケーションの program.cs ファイルでよく見られます。

configurationBuilder.AddAzureAppConfiguration(options =>
{
    // Disable automatic replica discovery
    options.ReplicaDiscoveryEnabled = false;

    // Other changes to options
});

Note

自動レプリカ検出のサポートは、次のいずれかのパッケージのバージョン 7.1.0 以降を使っている場合に利用できます。

  • Microsoft.Extensions.Configuration.AzureAppConfiguration
  • Microsoft.Azure.AppConfiguration.AspNetCore
  • Microsoft.Azure.AppConfiguration.Functions.Worker

次のステップ