複数の Azure リージョンに Azure API Management サービス インスタンスをデプロイする方法How to deploy an Azure API Management service instance to multiple Azure regions

Azure API Management では複数リージョンのデプロイメントがサポートされており、API パブリッシャーは 1 つの Azure API Management サービスを任意の数の Azure リージョンに分散できます。Azure API Management supports multi-region deployment, which enables API publishers to distribute a single Azure API management service across any number of desired Azure regions. これにより、地理的に分散した API コンシューマーによって認識される要求待ち時間が短くなり、1 つのリージョンがオフラインになった場合でもサービスの可用性を向上できます。This helps reduce request latency perceived by geographically distributed API consumers and also improves service availability if one region goes offline.

新しい Azure API Management サービスには、最初は単一の Azure リージョン (プライマリ リージョン) 内に 1 つのユニットのみが含まれています。A new Azure API Management service initially contains only one unit in a single Azure region, the Primary Region. リージョンは Azure Portal で簡単に追加できます。Additional regions can be easily added through the Azure portal. 各リージョンには API Management のゲートウェイ サーバーがデプロイされており、呼び出しのトラフィックは、待ち時間の観点から最も近いゲートウェイにルーティングされます。An API Management gateway server is deployed to each region and call traffic will be routed to the closest gateway in terms of latency. リージョンがオフラインになった場合、トラフィックは自動的に次に最も近いゲートウェイにリダイレクトされます。If a region goes offline, the traffic is automatically redirected to the next closest gateway.

注意

Azure API Management は、リージョン間で API ゲートウェイ コンポーネントのみをレプリケートします。Azure API Management replicates only the API gateway component across regions. サービス管理コンポーネントは、プライマリ リージョンでのみホストされます。The service management component is hosted only in the Primary Region. プライマリ リージョンでシステム停止が発生した場合、設定またはポリシーの更新プログラムを含む構成の変更を Azure API Management サービス インスタンスに適用することはできません。In case of an outage in the Primary Region, applying configuration changes to an Azure API Management service instance is not possible - including settings or policies updates.

可用性Availability

重要

この機能は、API Management の Premium レベルでのみ使用できます。This feature is available only in the Premium tier of API Management.

新しいリージョンに API Management サービス インスタンスをデプロイする Deploy an API Management service instance to a new region

注意

API Management サービス インスタンスをまだ作成していない場合は、API Management サービス インスタンスの作成に関するページを参照してください。If you have not yet created an API Management service instance, see Create an API Management service instance.

Azure Portal で API Management サービス インスタンスの [スケールと料金] ページに移動します。In the Azure portal, navigate to the Scale and pricing page for your API Management service instance.

[スケール] タブ

新しいリージョンにデプロイするには、ツールバーの [+ 地域の追加] をクリックします。To deploy to a new region, click on + Add region from the toolbar.

リージョンの追加

ドロップダウン リストから場所を選択し、スライダーでユニット数を設定します。Select the location from the drop-down list and set the number of units for with the slider.

ユニットの指定

[追加] をクリックすると、選択した内容が場所のテーブルに記載されます。Click Add to place your selection in the Locations table.

すべての場所が構成されるまでこのプロセスを繰り返したら、ツールバーの [保存] をクリックして、デプロイ プロセスを開始します。Repeat this process until you have all locations configured and click Save from the toolbar to start the deployment process.

場所から API Management サービス インスタンスを削除する Delete an API Management service instance from a location

Azure Portal で API Management サービス インスタンスの [スケールと料金] ページに移動します。In the Azure portal, navigate to the Scale and pricing page for your API Management service instance.

[スケール] タブ

テーブルの右端にある [...] ボタンを使用して、削除する場所のコンテキスト メニューを開きます。For the location you would like to remove, open the context menu using the ... button at the right end of the table. [削除] を選択します。Select the Delete option.

削除されたことを確認したら、[保存] をクリックして変更を適用します。Confirm the deletion and click Save to apply the changes.

リージョンのバックエンド サービスに API 呼び出しをルーティングする Route API calls to regional backend services

Azure API Management は、バックエンド サービスの URL が 1 つだけであることを特徴としています。Azure API Management features only one backend service URL. 複数のリージョンに Azure API Management インスタンスがある場合でも、API ゲートウェイは、1 つのリージョンのみにデプロイされる同じバックエンド サービスに要求を転送します。Even though there are Azure API Management instances in various regions, the API gateway will still forward requests to the same backend service, which is deployed in only one region. この場合、要求に固有のリージョンで Azure API Management 内にキャッシュされた応答でのみパフォーマンスが向上し、グローバルなバックエンドへの接続では引き続き長い待ち時間が発生します。In this case, the performance gain will come only from responses cached within Azure API Management in a region specific to the request, but contacting the backend across the globe may still cause high latency.

システムの地理的な分散を十分に活用するには、Azure API Management インスタンスと同じリージョンにバックエンド サービスをデプロイする必要があります。To fully leverage geographical distribution of your system, you should have backend services deployed in the same regions as Azure API Management instances. その後、ポリシーと @(context.Deployment.Region) プロパティを使用して、バックエンドのローカル インスタンスにトラフィックをルーティングできます。Then, using policies and @(context.Deployment.Region) property, you can route the traffic to local instances of your backend.

  1. Azure API Management インスタンスに移動し、左側のメニューから [API] をクリックします。Navigate to your Azure API Management instance and click on APIs from the left menu.

  2. 目的の API を選択します。Select your desired API.

  3. [受信処理] で、矢印のドロップダウンから [コード エディター] をクリックします。Click Code editor from the arrow dropdown in the Inbound processing.

    API コード エディター

  4. set-backendchoose 条件ポリシーを組み合わせて使用して、ファイルの <inbound> </inbound> セクション内に適切なルーティング ポリシーを作成します。Use the set-backend combined with conditional choose policies to construct a proper routing policy in the <inbound> </inbound> section of the file.

    たとえば、次の XML ファイルは、米国西部リージョンと東アジア リージョンで機能します。For example, the below XML file would work for West US and East Asia regions:

    <policies>
        <inbound>
            <base />
            <choose>
                <when condition="@("West US".Equals(context.Deployment.Region, StringComparison.OrdinalIgnoreCase))">
                    <set-backend-service base-url="http://contoso-us.com/" />
                </when>
                <when condition="@("East Asia".Equals(context.Deployment.Region, StringComparison.OrdinalIgnoreCase))">
                    <set-backend-service base-url="http://contoso-asia.com/" />
                </when>
                <otherwise>
                    <set-backend-service base-url="http://contoso-other.com/" />
                </otherwise>
            </choose>
        </inbound>
        <backend>
            <base />
        </backend>
        <outbound>
            <base />
        </outbound>
        <on-error>
            <base />
        </on-error>
    </policies>
    

ヒント

バックエンド サービスの正面に Azure Traffic Manager を置き、API 呼び出しを Traffic Manager に誘導して、そこでルーティングを自動的に解決させることもできます。You may also front your backend services with Azure Traffic Manager, direct the API calls to the Traffic Manager, and let it resolve the routing automatically.

API Management リージョン ゲートウェイへのカスタム ルーティングを使用する Use custom routing to API Management regional gateways

API Management は、最短の待ち時間に基づいてリージョン "ゲートウェイ" に要求をルーティングします。API Management routes the requests to a regional gateway based on the lowest latency. API Management でこの設定をオーバーライドすることはできませんが、カスタム ルーティング規則を持った独自の Traffic Manager を使用することはできます。Although it is not possible to override this setting in API Management, you can use your own Traffic Manager with custom routing rules.

  1. 独自の Azure Traffic Manager を作成します。Create your own Azure Traffic Manager.
  2. カスタム ドメインを使用している場合、API Management サービスではなく、Traffic Manager と共に使用します。If you are using a custom domain, use it with the Traffic Manager instead of the API Management service.
  3. Traffic Manager に API Management のリージョン エンドポイントを構成します。Configure the API Management regional endpoints in Traffic Manager. リージョン エンドポイントは、https://<service-name>-<region>-01.regional.azure-api.net という URL パターンに従います (例: https://contoso-westus2-01.regional.azure-api.net)。The regional endpoints follow the URL pattern of https://<service-name>-<region>-01.regional.azure-api.net, for example https://contoso-westus2-01.regional.azure-api.net.
  4. Traffic Manager に API Management のリージョン状態エンドポイントを構成します。Configure the API Management regional status endpoints in Traffic Manager. リージョン状態エンドポイントは、https://<service-name>-<region>-01.regional.azure-api.net/status-0123456789abcdef という URL パターンに従います (例: https://contoso-westus2-01.regional.azure-api.net/status-0123456789abcdef)。The regional status endpoints follow the URL pattern of https://<service-name>-<region>-01.regional.azure-api.net/status-0123456789abcdef, for example https://contoso-westus2-01.regional.azure-api.net/status-0123456789abcdef.
  5. Traffic Manager のルーティング方法を指定します。Specify the routing method of the Traffic Manager.