次の方法で共有


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 プロバイダーは、指定の 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

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

作成する各レプリカには、対応するエンドポイントがあります。 アプリケーションが複数の地理位置に存在する場合、それぞれの場所にデプロイされた各アプリケーションを更新して、その場所にできるだけ近いレプリカに接続するようにすれば、アプリケーションと 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)。

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

レプリカを使用した負荷分散

既定では、フェールオーバーが発生した場合を除き、アプリケーションは常に、指定した最も優先度の高いエンドポイントに要求を送信します。 ただし、フェールオーバーに加えて、レプリカを使用して要求の負荷を分散することもできます。 時間の経過に応じて使用可能なレプリカ間で要求を事前に分散することで、1 つのレプリカの要求クォータが使い果たされるのを回避し、アプリケーションの全体的なスケーラビリティを向上させることができます。

App Configuration プロバイダーは、コードで提供される場合でも、自動的に検出された場合でも、レプリカ間の負荷分散に対して組み込みのサポートを提供します。 次のコード サンプルを使用して、アプリケーションでこの機能を有効にすることができます (推奨されます)。

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

configurationBuilder.AddAzureAppConfiguration(options =>
{
    // Enable load balancing
    options.LoadBalancingEnabled = true;

    // Other changes to options
});

Note

負荷分散は、次のいずれかのパッケージのバージョン 8.0.0-preview.3 以降を使用している場合に利用できます。

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

次のステップ