---
schema_version: "1"
id: bb96d6e0a0b5519b22bb2a4c81df07444f37bdfa4ac4441ad441b513760c97f0
title: 複数のアップストリームサービスポリシーのトラフィック管理 (加重)
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/gateway/1.9/policies-included-traffic-management.md
canonical_url: https://docs.mulesoft.com/jp/gateway/1.9/policies-included-traffic-management
source_site: docs.mulesoft.com
content_type: documentation
content_hash: 3792e5685fcfc964e89b1c62b18d49403c4596cf131d74a59f3e6d41ae6ca6ef
description: MuleSoft Documentation Site
release: "1.9"
latest: false
---
# 複数のアップストリームサービスポリシーのトラフィック管理 (加重)

<table class="tableblock frame-all grid-all fit-content spread">
<colgroup>
<col>
<col>
</colgroup>
<tbody>
<tr>
<td class="tableblock halign-right valign-top"><p class="tableblock"><strong>ポリシー名</strong></p></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>複数のアップストリームサービスポリシーのトラフィック管理 (加重)</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-right valign-top"><p class="tableblock"><strong>概要</strong></p></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>1 つのコンシューマーエンドポイントから複数のアップストリームサービスへの加重 API インスタンストラフィックを管理します</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-right valign-top"><p class="tableblock"><strong>使用可能な最小 Flex Gateway バージョン</strong></p></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>v1.5.0</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-right valign-middle" rowspan="4"><p class="tableblock"><strong>返される状況コード</strong></p></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>このポリシーの戻りコードは存在しません。</p>
</div></div></td>
</tr>
</tbody>
</table>

<table>
<tbody><tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
<div class="paragraph">
<p>次の情報は、ローカルモードで実行されている Flex Gateway にのみ適用されます。接続モードで実行されている Flex Gateway 用に複数のアップストリームサービスを設定するには、​<a href="https://docs.mulesoft.com/jp/api-manager/latest/create-instance-task-flex#traffic-management" class="xref page">「Multiple Upstream Services for Flex Gateway Running in Connected Mode (接続モードで実行されている Flex Gateway 用の複数のアップストリームサービス)」</a>​を参照してください。</p>
</div>
</td>
</tr>
</tbody></table>

## [](#概要)概要

ローカルモードで実行されている Flex Gateway は、1 つのコンシューマーエンドポイントを通じて複数のアップストリームサービスを公開する API インスタンスをサポートしています。

Flex Gateway は、トラフィックを複数のアップストリームサービスに転送できるさまざまなルートを使用して要求トラフィックを管理します。Flex Gateway はルート順と各ルートのルールを使用してトラフィックをルートに転送します。さらに、ルート内の各アップストリームサービスに加重率を追加してアップストリームサービスに送信される要求の割合を管理できます。加重されていないトラフィックの設定については、[複数のアップストリームサービスのトラフィック管理](https://docs.mulesoft.com/jp/gateway/1.9/policies-included-traffic-management-route)を参照してください。

ローカルモードで複数のアップストリームサービスがある API インスタンスは、​`PolicyBinding`​ YAML 設定リソースを使用して設定されます。各 ​`route-weighted`​ リソースで 1 つのルートが定義されます。ルートをさらに追加するには、複数の ​`route-weighted`​ リソースを追加します。

このポリシーが適用された API インスタンスをパブリッシュする方法に関するチュートリアルは、[ローカルモードでの複数のアップストリームサービスを使用した API のパブリッシュ](https://docs.mulesoft.com/jp/gateway/1.9/flex-local-publish-api-multiple-services)を参照してください。

<table><tbody><tr><td class="icon"><i class="fa icon-note" title="Note"></i></td><td class="content">複数のアップストリームサービスがある API をデプロイしても、​<a href="https://docs.mulesoft.com/jp/gateway/1.9/policies-included-tls-outbound" class="xref page">アウトバウンド Transport Layer Security ポリシー</a>​には影響しません。各アップストリームサービスにアウトバウンド TLS ポリシーを適用できます。</td></tr></tbody></table>

## [](#ポリシーのパラメーターの設定)ポリシーのパラメーターの設定

以下のポリシー定義とパラメーターの表を参照してください。

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

<table class="tableblock frame-all grid-all fit-content spread">
<colgroup>
<col>
<col>
<col>
<col>
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">パラメーター</th>
<th class="tableblock halign-left valign-top">必須または省略可能</th>
<th class="tableblock halign-left valign-top">デフォルト値</th>
<th class="tableblock halign-left valign-top">説明</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>routes</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>必須</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>空</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>API アップストリームサービスの配列。<br>
少なくとも 1 つのアップストリームが必要です。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>routes.weight</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>必須</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>なし</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>このアップストリームサービスに送信される要求の合計の重み。<br>
 そのアップストリームサービスに送信されるトラフィックの割合は、アップストリームサービスの重みをすべてのアップストリームサービスの重みの合計で除算したものです。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>routes.destinationPath</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>必須</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>なし</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>アップストリームサービスのパス</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>routes.destinationRef.name</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>必須</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>なし</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>Service</code>​ 設定リソースで定義されているアップストリームサービスの名前</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>rules</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>省略可能</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>空</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>このルートのルールセットの配列。<br>
各ルートで複数のルールセットをサポートできます。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>rules.path</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>省略可能</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>空</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>ルートがサービスできる要求パス。<br>
ルールセットごとに 1 つの「URI テンプレート正規表現」パスしか定義できません。定義済みのパスがある要求しかこのルートには送信できません。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>rules.methods</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>省略可能</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>空</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>ルートがサービスできる要求メソッドの種別を定義する配列。<br>
ルールセットごとに複数のメソッドを選択できます。定義済みのメソッドのいずれかである要求しかこのルートには送信できません。サポートされている値は ​<code>GET</code>​、​<code>POST</code>​、​<code>PUT</code>​、​<code>PATCH</code>​、​<code>DELETE</code>​、​<code>OPTIONS</code>​、​<code>HEAD</code>​、​<code>TRACE</code>​、​<code>CONNECT</code>​ です。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>rules.headers</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>省略可能</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>空</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>このルートが要求をサービスするために存在している必要があるヘッダーと正規表現を定義する配列。<br>
指定されたすべてのヘッダー要件を満たす要求しかこのルートには送信できません。ルールで特に定義されていない要求に存在する追加のヘッダーは無視されます。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>rules.host</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>省略可能</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>空</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>ルートがサービスできる要求ホスト URL。<br>
ルールセットごとに 1 つのホスト URL しか定義できません。定義済みのホストから行われる要求しかこのルートには送信できません。</p>
</div></div></td>
</tr>
</tbody>
</table>

## [](#ポリシーのしくみ)ポリシーのしくみ

トラフィック管理ポリシーでは、定義済みのルート順になっている複数のルートと個別のルールセットを使用してトラフィックを異なるセットのアップストリームサービスに転送することで、トラフィックをさまざまなセットのアップストリームサービスに転送します。

次の図では、さまざまなルートでフライト情報データベースへの要求やカスタマーサービスアプリケーションへの要求を管理しています。ルート 1 では 2 つのアップストリームサービスが定義されており、要求の 70% を安定データベースに、要求の 30% をベータデータベースに転送します。

![Flex Gateway によって複数のアップストリームサービスへのトラフィックが管理されます](/mulesoft/current/ja-jp/gateway/1.9/_images/multiple-upstreams.png)

この設定を実現するには、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`​ エラーコードが返されます。

### [](#ルート順序)ルート順序

ルートルールの使用に加えて、ポリシー順序を使用して要求をさまざまなルートに転送できます。

ポリシーを並び替えるには、[ポリシーの順序付け](https://docs.mulesoft.com/jp/gateway/1.9/policies-reorder)を参照してください。

ポリシー順序を設定すると、トラフィックがルートに転送される順序が設定されます。要求がいずれかのルートルールセットを満たす場合、Flex Gateway は要求を最初のルートに転送します。したがって、要求が複数のルートのルートルールを満たす可能性がある場合、ルート順序は非常に重要です。

たとえば、ルート 1 でルールとして ​`GET`​ メソッドが定義されていて、ルート 2 でルートルールが定義されていない場合、すべての ​`GET`​ 要求はルート 1 に送信され、他のすべての要求はルート 2 に送信されます。ルート順序が逆で、ルート 1 にルートルールがなかったとしたら、Flex Gateway は ​`GET`​ 要求がルート 2 に達する前にすべての要求をルート 1 に転送します。

## [](#関連情報)関連情報

- [ローカルモードでの複数のアップストリームサービスを使用した API のパブリッシュ](https://docs.mulesoft.com/jp/gateway/1.9/flex-local-publish-api-multiple-services)