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 に転送します。