URL マップの使用

このガイドでは、Google Cloud URL マップの構成方法について説明します。このガイドに記載された手順を行う前に、URL マップのコンセプトを十分に理解してください。

URL マップは、次の Google Cloud サービスで使用されます。

内部 HTTP(S) 負荷分散と Traffic Director は、高度なトラフィック管理のユースケースに対応しています。詳細情報

URL マップの構成

バックエンド サービスバックエンド バケットを URL マップに追加できます。

バックエンド バケットは外部 HTTP(S) ロードバランサでのみサポートされます。

URL マップの追加

コンソール

Cloud Console を使用して URL マップを追加するには、次の操作を行います。

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

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

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

gcloud

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

gcloud compute url-maps create URL_MAP_NAME \
   (--default-backend-bucket=DEFAULT_BACKEND_BUCKET | --default-service=DEFAULT_SERVICE) \
   [--description DESCRIPTION] \
   [--global | --region=REGION]

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

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

パスマッチャーの追加

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

コンソール

Cloud 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_NAME \
   --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

Cloud 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_NAME \
    --hosts=HOSTS --path-matcher-name=PATH_MATCHER

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

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

バックエンド サービスまたはバックエンド バケットの選択

コンソール

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 マップを編集するとテストが実行されます。テストに失敗すると、エラー メッセージが表示されます。

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

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

Console

Cloud 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_NAME

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

  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

内部 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 マップのリスト表示

コンソール

Cloud Console ですべての URL マップを一覧表示できるわけではありません。

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_NAME

URL マップの削除

URL マップを削除する前に、参照先のすべてのターゲット プロキシを削除する必要があります。詳細については、ターゲット プロキシの削除をご覧ください。

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_NAME [--quiet]

パスマッチャーの削除

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_NAME \
   [--path-matcher-name PATH_MATCHER]

ホストルールの削除

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 URL_MAP_NAME --host=HOST

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

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

次のステップ