Flex Gateway新着情報
Governance新着情報
Monitoring API Managerポリシー名 |
複数のアップストリームサービスポリシーのトラフィック管理 (加重) |
概要 |
1 つのコンシューマーエンドポイントから複数のアップストリームサービスへの加重 API インスタンストラフィックを管理します |
使用可能な最小 Flex Gateway バージョン |
v1.5.0 |
返される状況コード |
このポリシーの戻りコードは存在しません。 |
次の情報は、ローカルモードで実行されている Flex Gateway にのみ適用されます。接続モードで実行されている Flex Gateway 用に複数のアップストリームサービスを設定するには、「Multiple Upstream Services for Flex Gateway Running in Connected Mode (接続モードで実行されている Flex Gateway 用の複数のアップストリームサービス)」を参照してください。 |
ローカルモードで実行されている Flex Gateway は、1 つのコンシューマーエンドポイントを通じて複数のアップストリームサービスを公開する API インスタンスをサポートしています。
Flex Gateway は、トラフィックを複数のアップストリームサービスに転送できるさまざまなルートを使用して要求トラフィックを管理します。Flex Gateway はルート順と各ルートのルールを使用してトラフィックをルートに転送します。さらに、ルート内の各アップストリームサービスに加重率を追加してアップストリームサービスに送信される要求の割合を管理できます。加重されていないトラフィックの設定については、複数のアップストリームサービスのトラフィック管理を参照してください。
ローカルモードで複数のアップストリームサービスがある API インスタンスは、PolicyBinding
YAML 設定リソースを使用して設定されます。各 route-weighted
リソースで 1 つのルートが定義されます。ルートをさらに追加するには、複数の route-weighted
リソースを追加します。
このポリシーが適用された API インスタンスをパブリッシュする方法に関するチュートリアルは、ローカルモードでの複数のアップストリームサービスを使用した API のパブリッシュを参照してください。
複数のアップストリームサービスがある API をデプロイしても、アウトバウンド Transport Layer Security ポリシーには影響しません。各アップストリームサービスにアウトバウンド TLS ポリシーを適用できます。 |
以下のポリシー定義とパラメーターの表を参照してください。
policyRef: name: route-weighted config: routes: - weight: <int> // REQUIRED, max_value=100, min_value=1 destinationPath: <string> // OPTIONAL, default: "/" destinationRef: name: <string> // REQUIRED rules: - path: <URL-regex> // OPTIONAL, Example: (.*) methods: <regex-string> // OPTIONAL, Example: GET|POST headers: <header-name>: <regex-string> // OPTIONAL host: <regex-string> // OPTIONAL
パラメーター | 必須または省略可能 | デフォルト値 | 説明 |
---|---|---|---|
|
必須 |
空 |
API アップストリームサービスの配列。 |
|
必須 |
なし |
このアップストリームサービスに送信される要求の合計の重み。 |
|
必須 |
なし |
アップストリームサービスのパス |
|
必須 |
なし |
|
|
省略可能 |
空 |
このルートのルールセットの配列。 |
|
省略可能 |
空 |
ルートがサービスできる要求パス。 |
|
省略可能 |
空 |
ルートがサービスできる要求メソッドの種別を定義する配列。 |
|
省略可能 |
空 |
このルートが要求をサービスするために存在している必要があるヘッダーと正規表現を定義する配列。 |
|
省略可能 |
空 |
ルートがサービスできる要求ホスト URL。 |
トラフィック管理ポリシーでは、定義済みのルート順になっている複数のルートと個別のルールセットを使用してトラフィックを異なるセットのアップストリームサービスに転送することで、トラフィックをさまざまなセットのアップストリームサービスに転送します。
次の図では、さまざまなルートでフライト情報データベースへの要求やカスタマーサービスアプリケーションへの要求を管理しています。ルート 1 では 2 つのアップストリームサービスが定義されており、要求の 70% を安定データベースに、要求の 30% をベータデータベースに転送します。
この設定を実現するには、2 つの route-weighted
リソースを公開された API インスタンスにバインドします。1 つの route-weighted
リソースはトラフィックをフライト情報データベースに転送し、もう 1 つの route-weighted
リソースはトラフィックをカスタマーサービスアプリケーションに転送します。
1 つのルートで複数のアップストリームサービスを使用し、要求を似たサービスに転送できます。たとえば、すべてのトラフィックを新しいサービスに送信せずに新しいベータアップストリームサービスのパフォーマンスをテストするには、半分のトラフィックを安定アップストリームサービスに転送し、半分を新しいアップストリームサービスに転送できます。
それぞれの要求が送信されるルート内のアップストリームサービスはランダムであり、前の要求とは無関係です。routes.weight
値により、要求が特定のアップストリームサービスに送信される確率が定義されます。そのアップストリームサービスに送信されるトラフィックの割合は、アップストリームの routes.weight
をすべてのアップストリームサービスの重みの合計で除算したものです。たとえば、重みが 1
のアップストリームサービスが 2 つある場合、それぞれのアップストリームサービスはそのルートへのトラフィックの 50% を受信します。重みの値が 1
と 3
の場合、1 つのルートはトラフィックの 25% を、もう 1 つは 75% を受信します。
ルート内のアップストリームサービスはどの要求でも受信できるため、同じルート内のすべてのアップストリームサービスは同じ API コントラクトに準拠している必要があります。
ルートルールを使用して、要求をさまざまなルートに転送できます。要求は、ルートのいずれか 1 つのルールセットのみのルールを満たしている必要があります。
ルールセットでは、次の 4 つのルールの任意の組み合わせを参照します: path
、method
、headers
、host
。複数のルールセットを使用してさまざまな組み合わせのルールをサポートできます。
すべてのルールは省略可能です。ルールがルールセットに含まれていない場合、そのルールは無視されます。たとえば、ホストを指定しないと、要求が他のルートルールを満たす場合にルートは任意のホストをサービスできます。ルールを定義しないと、ルートはすべての要求をサービスできます。
要求がどのルートのルールも満たさないと、Flex Gateway によって 404
エラーコードが返されます。
ルートルールの使用に加えて、ポリシー順序を使用して要求をさまざまなルートに転送できます。
ポリシーを並び替えるには、ポリシーの順序付けを参照してください。
ポリシー順序を設定すると、トラフィックがルートに転送される順序が設定されます。要求がいずれかのルートルールセットを満たす場合、Flex Gateway は要求を最初のルートに転送します。したがって、要求が複数のルートのルートルールを満たす可能性がある場合、ルート順序は非常に重要です。
たとえば、ルート 1 でルールとして GET
メソッドが定義されていて、ルート 2 でルートルールが定義されていない場合、すべての GET
要求はルート 1 に送信され、他のすべての要求はルート 2 に送信されます。ルート順序が逆で、ルート 1 にルートルールがなかったとしたら、Flex Gateway は GET
要求がルート 2 に達する前にすべての要求をルート 1 に転送します。