URL マップの使用

HTTP(S) ベースのロードバランサを使用すると、受信 URL に応じて別のインスタンスにトラフィックを転送できます。たとえば、オーディオ ファイルを配信するよう構成されたインスタンスを含む 1 つのバックエンド サービスhttp://www.example.com/audio に関するリクエストを送信し、ビデオファイルを配信するよう構成されたインスタンスを含む別のバックエンド サービスに http://www.example.com/video に関するリクエストを転送できます。

URL マップの構成

GCP Consolegcloud コマンドライン ツール、REST API で URL マップを操作する際に使用できるプロパティの説明は、UrlMaps リソースをご覧ください。

URL マップの追加

Console

GCP Console を使用して URL マップを追加するには、次の手順を実行します。

  1. [負荷分散] ページに移動します。

    [負荷分散] ページに移動

  2. ロードバランサの [名前] をクリックします。
  3. [ロードバランサの詳細] 画面で、選択したロードバランサの [編集] 鉛筆をクリックします。
  4. [ホストとパスのルール] を選択します。
  5. [ホストとパスのルールを追加] をクリックします。
  6. [ホスト] フィールド、[パス] フィールド、またはその両方を入力して、バックエンド サービスまたはバックエンド バケットを選択します。
  7. [ホストとパスのルール] の左側の青色のチェックマークを確認して、[更新] ボタンをクリックします。

gcloud

gcloud コマンドライン ツールを使用して URL マップを追加するには、url-maps create コマンドを使用します。

gcloud compute url-maps create URL_MAP \
    --default-service BACKEND_SERVICE \
   [--description DESCRIPTION]

内部 HTTP(S) ロードバランサの場合は、URL マップの作成時に必ず --region フラグを含めます。

新しく作成された URL マップが一致するのはただ 1 つのパス、つまりデフォルトのパス(/*)だけです。このデフォルト パスマッチャーは自動的に作成されます。手動で作成されたパスマッチャーまたはホストルールと一致しないトラフィックはすべて、URL マップのデフォルトのバックエンド サービスに送信されます。

パスマッチャーの追加

パスマッチャーは、HTTP(S) リクエストパスまたはパス接頭辞(/video など)をバックエンド サービスにマッピングします。指定されたパスと一致するトラフィックはすべて、パスマッチャーのパスルールによって処理されます。パスがパスルールと一致した場合、リクエストは、そのパスルールに関連付けられているバックエンドに転送されます。リクエストがパスマッチャー no path ルールと一致した場合、リクエストはパスマッチャーのデフォルト バックエンドに転送されます。

Console

GCP Console を使用してパスマッチャーを作成するには、次の手順を実行します。

  1. [ホストとパスのルール] 画面が表示されていない場合は、[負荷分散] ページに移動します。

    [負荷分散] ページに移動

  2. ロードバランサの [名前] をクリックします。
  3. [ロードバランサの詳細] 画面で、選択したロードバランサの [編集] 鉛筆をクリックします。
  4. [ホストとパスのルール] 画面で、[ホストとパスのルールを追加] をクリックするか既存の [パス] フィールドをクリックします。
  5. 構成するパスを入力します(例: /video)。
  6. [ホストとパスのルール] の左側の青色のチェックマークを確認して、[更新] ボタンをクリックします。

gcloud

gcloud コマンドライン ツールを使用してパスマッチャーを作成するには、gcloud compute url-maps add-path-matcher コマンドを使用します。

gcloud compute url-maps add-path-matcher URL_MAP \
   --default-service BACKEND_SERVICE \
   --path-matcher-name PATH_MATCHER \
   [--path-rules PATH=SERVICE]

このコマンドでは、一致しないリクエストの送信先にできるデフォルトのバックエンド サービスを必要とします。必要に応じて、--path-rules フラグを使用してリクエストパスとバックエンド サービス間のマッピングを定義します。次の例では、リクエストパス /video/ および /video/*video-service バックエンド サービスに転送されます。

  --path-rules "/video=video-service,/video/*=video-service"

url-maps create コマンドと url-maps add-path-matcher コマンドの両方に --default-service パラメータがあります。create の場合、デフォルト サービスは、受信 URL に一致するパスマッチャーがない場合に使用されるサービスです。add-path-matcher の場合、デフォルト サービスは、パスがパスマッチャーに一致しても --path-rules のいずれにも一致しない場合に使用されるサービスです。

パスマッチャーの削除

Console

パスマッチャーを削除するには、次の手順を実行します。

  1. [負荷分散] ページに移動します。

    [負荷分散] ページに移動

  2. ロードバランサの [名前] をクリックします。
  3. [ロードバランサの詳細] 画面で、選択したロードバランサの [編集] 鉛筆をクリックします。
  4. [ホストとパスのルール] を選択します。
  5. 既存の URL マップの [パス] フィールドで、パスマッチャーの名前の「x」をクリックします。
  6. [ホストとパスのルール] の左側の青色のチェックマークを確認して、[更新] ボタンをクリックします。

gcloud

パスマッチャーを削除するには、gcloud compute url-maps remove-path-matcher コマンドを使用します。

 gcloud compute url-maps remove-path-matcher URL_MAP \
     [--path-matcher-name PATH_MATCHER]

ホストルールの追加

1 つ以上のパスマッチャーを作成したら、リクエストのホスト コンポーネントに基づいて特定のパスマッチャーにトラフィックを送信するホストルールを定義できます。

URL マップでホストルールを指定した場合、URL マップは、まず、ホストルールとの照合を行います。ホストルールが一致した場合に、パスマッチャーが評価されます。ホストルールが一致しない場合、トラフィックは URL マップのデフォルトのバックエンド サービスに送信され、パスマッチャーは照合されません。

* のホストルールを 1 つ作成して example.com のような特定のホストに別のルールを作成すると、example.com のリクエストがそのホストルールと一致し、他のすべてのホストが ルールと一致します。

ホストルールを指定しない場合、すべてのホストからの URL(たとえば example.com と example.net の両方)がパスに一致します。

ホストルールを個別に作成した場合(たとえば example.com にあるルールを作成して、example.net に別のルールを作成した場合)、example.com と example.net の両方にパスルールを作成する必要があります。

Console

GCP Console を使用してホストルールを作成するには、次の手順を実行します。

  1. [ホストとパスのルール] 画面が表示されていない場合は、[負荷分散] ページに移動します。

    [負荷分散] ページに移動

  2. ロードバランサの [名前] をクリックします。
  3. [ロードバランサの詳細] 画面で、選択したロードバランサの [編集] 鉛筆をクリックします。
  4. [ホストとパスのルール] 画面で、[ホストとパスのルールを追加] をクリックするか、既存の [ホスト] フィールドをクリックします。
  5. 完全修飾の ホスト名(例: web.example.com)を入力します。
  6. [ホストとパスのルール] の左側の青色のチェックマークを確認して、[更新] ボタンをクリックします。

gcloud

gcloud コマンドライン ツールを使用してホストルールを作成するには、gcloud compute url-maps add-host-rule コマンドを使用します。

  gcloud compute url-maps add-host-rule URL_MAP \
      --hosts HOSTS --path-matcher-name PATH_MATCHER

--hosts フラグは、リクエストと照合する一連のホストを定義します。たとえば、次のような --hosts 値はリクエストを www.example.com および google.com のすべてのサブドメインと照合します。

  --hosts *.google.com,www.example.com

ホストルールの削除

Console

ホストルールを削除するには、次の手順を実行します。

  1. [ホストとパスのルール] 画面が表示されていない場合は、[負荷分散] ページに移動します。

    [負荷分散] ページに移動

  2. ロードバランサの [名前] をクリックします。
  3. [ロードバランサの詳細] 画面で、選択したロードバランサの [編集] 鉛筆をクリックします。
  4. [ホストとパスのルール] を選択します。
  5. 既存の URL マップの [ホスト] フィールドで、ホストの名前の「x」をクリックします。
  6. [ホストとパスのルール] の左側の青色のチェックマークを確認して、[更新] ボタンをクリックします。

gcloud

URL マップからホストルールを削除するには、gcloud compute url-maps remove-host-rule コマンドを使用します。

 gcloud compute url-maps remove-host-rule NAME --host HOST

たとえば、ホスト google.com を含むホストルールを my-map という名前の URL マップから削除するには、次のコマンドを実行します。

 gcloud compute url-maps remove-host-rule my-map --host google.com

バックエンド サービスの選択

Console

URL マップのバックエンド サービスを選択するには、次の手順を実行します。

  1. [ホストとパスのルール] 画面が表示されていない場合は、[負荷分散] ページに移動します。

    [負荷分散] ページに移動

  2. ロードバランサの [名前] をクリックします。
  3. [ロードバランサの詳細] 画面で、選択したロードバランサの [編集] 鉛筆をクリックします。
  4. [ホストとパスのルール] 画面の [バックエンド] フィールド プルダウン メニューで、利用可能なバックエンド サービスを選択します。
  5. [ホストとパスのルール] の左側の青色のチェックマークを確認して、[更新] ボタンをクリックします。

gcloud

gcloud コマンドライン ツールを使用してバックエンド サービスを選択するには、url-maps set-default-service コマンドを使用します。

gcloud compute url-maps set-default-service URL_MAP_NAME
  (--default-backend-bucket=DEFAULT_BACKEND_BUCKET
    | --default-service=DEFAULT_SERVICE)[GCLOUD_WIDE_FLAG ...]

URL マップのテスト

多数の URL マップを管理している場合は、各 URL マップファイルにテストを追加して、ホストとパスのルールが予期したように動作するかを確認することをおすすめします。ホストとパスのルールにはワイルドカードを含めることができるため、重複が発生する可能性があります。テストは単体テストのようなものです。特定の URL へのリクエストが正しいバックエンド サービスに転送されるようになります。

URL マップを編集すると、テストがすぐに実行され、すべてのマップルールがチェックされます。いずれかのテストに失敗した場合、ロードバランサの作成はブロックされ、次のようなエラーが表示されます。エラー メッセージは、コンソール テストと gcloud コマンドライン テストの両方に表示されます。

  Error: Invalid value for field 'urlMap.tests': ''.
  Test failure: Expect URL '' to map to service '', but actually mapped to ''.

URL マップへのテストの追加は任意です。

Console

GCP Console からテストを実行するには:

  1. [負荷分散] ページに移動します。

    [負荷分散] ページに移動

  2. ロードバランサの [名前] をクリックします。
  3. [ロードバランサの詳細] 画面で、選択したロードバランサの [編集] 鉛筆をクリックします。
  4. [ホストとパスのルール] をクリックします。
  5. [ホストとパスのルール] の下で、[設定テストを表示する] をクリックします。
  6. [設定テストの追加] をクリックします。次のテスト URL とバックエンドを追加します:
    • テスト URL example.com とバックエンド www-service.
    • テスト URL example.net とバックエンド www-service.
    • テスト URL example.net/web とバックエンド www-service.
    • テスト URL example.com/videos とバックエンド video-service.
    • テスト URL example.com/videos/browse とバックエンド video-service.
    • テスト URL example.net/static とバックエンド static-service.
    • テスト URL example.net/static/images とバックエンド static-service.
  7. [ホストとパスのルール] の左側の青色のチェックマークを確認して、[更新] ボタンをクリックします。

gcloud

gcloud コマンドライン ツールを使用してテストを URL マップに追加するには、gcloud compute url-maps edit コマンドを使用します。

  gcloud compute url-maps edit URL_MAP

これによってテキスト エディタが起動します。HTTP(S) ロードバランサの場合、テストでは次の形式を使用する必要があります。

<pre>
tests:
  - host: example.com
    service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/www-service
  - host: example.net
    service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/www-service
  - host: example.com
    path: /videos
    service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/video-service
  - host: example.com
    path: /videos/browse
    service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/video-service
  - host: example.net
    path: /web
    service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/www-service
  - host: example.net
    path: /static
    service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/static-service
  - host: example.net
    path: /static/images
    service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/static-service</pre>

内部 HTTP(S) ロードバランサの場合、サービス URL はリージョンのバックエンド サービスをポイントする必要があります。次に例を示します。

https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/[REGION]/backendServices//www-service

ホストルールでホストを指定しない場合、すべてのホストからの URL(example.com と example.net の両方)が一致する場合があります。ホストルールがある場合は、example.com と example.net の両方に一致するルールを作成する必要があります。

URL マップのリスト表示

Console

コンソールでは、一度に 1 つのロードバランサの URL マップだけを表示できます。

  1. [負荷分散] ページに移動します。

    [負荷分散] ページに移動

  2. ロードバランサの [名前] をクリックします。
  3. [ロードバランサの詳細] 画面で、選択したロードバランサの [編集] 鉛筆をクリックします。
  4. ホストとパスのルールを表示します。

gcloud

gcloud コマンドライン ツールを使用して URL マップのリストを表示するには、url-maps list コマンドを使用します。

gcloud compute url-maps list

URL マップに関する情報の取得

Console

URL マップに関する情報を取得するには、次の手順を実行します。

  1. [負荷分散] ページに移動します。

    [負荷分散] ページに移動

  2. ロードバランサの [名前] をクリックします。
  3. [ロードバランサの詳細] 画面で、選択したロードバランサの [編集] 鉛筆をクリックします。
  4. ホストとパスのルールを表示します。

gcloud

gcloud コマンドライン ツールを使用してひとつの URL マップに関する情報を取得するには、url-maps describe コマンドを使用します。

gcloud compute url-maps describe URL_MAP

URL マップの削除

URL マップを削除する際は、事前にその URL マップを参照するターゲット HTTP(S) プロキシを削除しておく必要があります。ターゲット プロキシの削除については、ターゲット プロキシの使用をご覧ください。

Console

URL マップを削除するには、次の手順を実行します。

  1. [負荷分散] ページに移動します。

    [負荷分散] ページに移動

  2. ロードバランサの [名前] をクリックします。
  3. [ロードバランサの詳細] 画面で、選択したロードバランサの [編集] 鉛筆をクリックします。
  4. [ロードバランサの詳細] 画面で、ホストとパスのルールを表示します。
  5. URL マップの右側にある「X」をクリックして削除します。URL マップが表示から消えます。
  6. [ホストとパスのルール] の左側の青色のチェックマークを確認して、[更新] ボタンをクリックします。

gcloud

gcloud コマンドライン ツールを使用して URL マップを削除するには、url-maps delete コマンドを使用します。URL マップを削除する際は、事前にその URL マップを参照するターゲット HTTP プロキシを削除しておく必要があります。

gcloud compute url-maps delete URL_MAP [--quiet]

Cloud CDN キャッシュの操作

Cloud CDN は、Cloud CDN キャッシュ内の指定された URL マップ オブジェクトの無効化をサポートしています。

詳細については、Cloud CDN キャッシュ無効化ページをご覧ください。

次のステップ