外部の送信元を使用した Cloud CDN の設定

このガイドでは、インターネット ネットワーク エンドポイント グループ(NEG)でカスタムの送信元を使用する場合の基礎知識について説明します。カスタムの送信元は、Google Cloud の外部にあるインターネット エンドポイントです。インターネット NEG を外部 HTTP(S) ロードバランサのバックエンドとして使用し、Cloud CDN キャッシングを使用してパフォーマンスを向上させることができます。

このガイドでは、カスタムの送信元サーバーに backend.example.com でプロキシする Cloud CDN 対応バックエンド サービスを使用して、グローバル外部 HTTP(S) ロードバランサを構成する方法を説明します。

この例では、ロードバランサはクライアントからの HTTPS リクエストを受け入れ、HTTP/2 としてカスタムの送信元にプロキシします。この例では、カスタムの送信元が HTTP/2 をサポートしていることを前提としています。

他のオプションとしては、HTTP や HTTP/2 のリクエストを受け入れるようにロードバランサを構成し、カスタムの送信元にリクエストをプロキシする場合は HTTPS を使用します。

インターネット NEG の設定には、次の作業を行います。

  • インターネット NEG におけるインターネット エンドポイントを定義します。
  • インターネット NEG をバックエンドとしてバックエンド サービスに追加します。
  • 外部 HTTP(S) ロードバランサの URL マップを構成し、このバックエンド サービスにマッピングするユーザー トラフィックを定義します。

始める前に

このガイドに記載された手順を行う前に、次の内容を理解しておいてください。

省略可: gcloud のインストール

コマンドラインから作業する場合は、gcloud コマンドライン ツールをインストールします。このツールのコンセプトとインストールについては、gcloud コマンドライン ツールの概要をご覧ください。

gcloud コマンドライン ツールをまだ実行していない場合は、最初に gcloud init を実行して gcloud ディレクトリを初期化します。

省略可: 新しいプロジェクトの作成

これらの手順には、プロジェクトが 1 つ必要になります。 プロジェクトが存在しない場合は、プロジェクトを作成します。

この入門ガイドを続行する前に、resourcemanager.projects.create 権限を持つユーザーで新しいプロジェクトを作成してください。新しいプロジェクトを作成することにより、ガイドの最後で行うクリーンアップが簡単になります。

権限

このガイドに記載された手順を行う前に、インターネット NEG を作成し、プロジェクト内の外部 HTTP(S) ロードバランサを作成するか、変更しておく必要があります。そのためにはプロジェクトのオーナーまたは編集者であるか、次の Compute Engine Cloud IAM のロールを両方持っている必要があります。

タスク 必要な役割
ロードバランサ コンポーネントの作成と変更 ネットワーク管理者
NEG の作成と変更 Compute インスタンス管理者

カスタムの送信元を持つロードバランサの構成

このガイドでは、インターネット NEG を構成してテストする方法を説明します。

設定の概要

このセクションでは、以下の構成方法について説明します。

  • インターネット NEG を作成し、ネットワーク エンドポイントを接続して INTERNET_IP_PORT または INTERNET_FQDN_PORT エンドポイントを定義します。
  • この NEG を外部 HTTP(S) ロードバランサのバックエンド サービスに関連付けます。
  • この外部 HTTP(S) ロードバランサの転送ルールを追加します。

アーキテクチャのサンプルを次に示します。

カスタムの送信元を使った典型的なユースケース
カスタムの送信元を使った典型的なユースケース

図では、www.example.com に IP アドレス 120.1.1.1 のロードバランサ フロントエンドがあります。キャッシュミスが発生した場合、/cart/id/1223515 へのユーザー リクエストはカスタムの送信元から HTTP/2 経由で取得されます。 その他の受信トラフィックは、Compute Engine VM を使用する Google Cloud バックエンド サービスか、URL マップに基づいてバックエンド バケットに転送されます。

この例を設定するには、次のリソースを作成します。

  • 120.1.1.1 IP アドレスの転送ルールで、受信リクエストをターゲット プロキシに転送します。
    • 転送ルールの networkTier は、PREMIUM である必要があります。
  • ターゲット プロキシによって、各リクエストが URL マップと照合され、各リクエストに適したバックエンド サービスが決定されます。
    • カスタムの送信元の場合、ターゲット プロキシは TargetHttpProxyTargetHttpsProxy である必要があります。この例では TargetHttpsProxy を使用しています。
  • バックエンド サービスで Cloud CDN を有効にすると(省略可)、Cloud CDN キャッシュからのレスポンスをキャッシュして処理できます。
  • バックエンド サービス構成は、1 つのインターネット NEG にトラフィックを転送します。このインターネット NEG には、Cloud CDN キャッシュミスが発生したときに外部 HTTP(S) ロードバランサがトラフィックを送信するネットワーク エンドポイントが含まれます。
  • この例には、ユーザー定義のリクエスト ヘッダーが含まれています。これはカスタムの送信元が HTTP リクエスト Host ヘッダーの特定の値を想定している場合に必要です。

NEG とインターネット エンドポイントの作成

Console

  1. Google Cloud Console で、[ネットワーク エンドポイント グループ] ページに移動します。

    [ネットワーク エンドポイント グループ] ページに移動

  2. [ネットワーク エンドポイント グループを作成] をクリックします。
  3. ネットワーク エンドポイント グループの example-fqdn-neg 名前を入力します。
  4. [ネットワーク エンドポイント グループタイプ] で、[ネットワーク エンドポイント グループ(インターネット)] を選択します。
  5. [デフォルト ポート] に「443」と入力します。
  6. [新しいネットワーク エンドポイント] で [完全修飾ドメイン名とポート] を選択します。
  7. FQDN の場合は「backend.example.com」と入力します。
  8. [ポートタイプ] で [デフォルト] を選択し、[ポート番号] が 443 であることを確認します。
  9. [作成] をクリック

gcloud

  1. インターネット NEG を作成し、--network-endpoint-typeinternet-fqdn-port(送信元に到達可能なホスト名とポート)に設定します。

    gcloud compute network-endpoint-groups create example-fqdn-neg \
        --network-endpoint-type="internet-fqdn-port" --global
    
  2. エンドポイントを NEG に追加します。ポートが指定されていない場合、バックエンド サービスで構成されるプロトコルによって、デフォルトのポート選択はポート 80(HTTP)または、443(HTTPS、HTTP/2)になります。--global フラグが含まれていることを確認してください。

    gcloud compute network-endpoint-groups update example-fqdn-neg \
        --add-endpoint="fqdn=backend.example.com,port=443" \
        --global
    
  3. 作成されたインターネット NEG を一覧表示します。

    gcloud compute network-endpoint-groups list --global
    

    出力:

    NAME                LOCATION   ENDPOINT_TYPE        SIZE
    example-fqdn-neg    global     INTERNET_FQDN_PORT   1
    

  4. その NEG 内のエンドポイントを一覧表示します。

    gcloud compute network-endpoint-groups list-network-endpoints example-fqdn-neg \
        --global
    

    出力:

    INSTANCE   IP_ADDRESS   PORT   FQDN
                                   backend.example.com
    

既存のロードバランサの使用

次の例では、既存のロードバランサを更新します。

外部 HTTP(S) ロードバランサがない場合は、このセクションをスキップして新しいロードバランサの使用をご覧ください。

既存のロードバランサのデフォルトのサービスは、Google Cloud サービスです。この例では、cart/id/1223515 へのすべてのリクエストを、インターネット NEG に関連付けられた images バックエンド サービスに送信するパスマッチャーの追加により、既存の URL マップを変更します。

Console

バックエンド サービスの作成とインターネット NEG の追加

  1. Google Cloud Console で、[負荷分散] ページに移動します。

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

  2. バックエンドサービスを既存のロードバランサに追加するには、外部 HTTP(S)ロードバランサを選択し、メニュー をクリックして [編集]を選択します。
  3. [バックエンドの設定] をクリックします。
  4. [バックエンド サービスとバックエンド バケットの作成または選択] プルダウン メニューで、[バックエンド サービス] > [バックエンド サービスを作成] の順に選択します。
  5. バックエンド サービスの名前を images に設定します。
  6. [バックエンド タイプ] で [インターネット ネットワーク エンドポイント グループ] を選択します。
  7. ロードバランサからインターネット NEG へ使用するプロトコルを選択します。この例では、[HTTP/2] を選択します。
  8. [新しいバックエンド] > [インターネット ネットワーク エンドポイント グループ] で [example-fqdn-neg] を選択し、[完了] をクリックします。
  9. [Cloud CDN を有効にする] を選択します。
  10. [詳細構成] の [カスタム リクエスト ヘッダー] で [ヘッダーを追加] をクリックします。
    1. [ヘッダー名] に「Host」と入力します。
    2. [ヘッダーの値] に「backend.example.com」と入力します。
  11. [作成] をクリック
  12. ウィンドウを開いたままにして続行します。

バックエンド サービスを既存の URL マップに接続する

  1. [ホストとパスのルール] をクリックします。
  2. 最初の(数)行の右側の列には Google Cloud サービスがあり、それらの 1 つに [ホスト] と [パス] へのデフォルト ルール Any unmatched (default) がすでに入力されています。
  3. 右側の列に images が選択されている行があることを確認します。存在しない場合は、[ホストとパスのルールを追加] をクリックして、images を選択します。 他のフィールドには次のように入力します。
    1. [ホスト] に「*」と入力します。
    2. [パス] に「/cart/id/1223515」と入力します。

確認と完了

  1. [確認と完了] をクリックします。
  2. 現在の設定と作成しようとしている内容を比較します。
  3. すべて問題なければ、[作成] をクリックして外部 HTTP(S) ロードバランサを作成します。

gcloud

  1. NEG の新しいバックエンド サービスを作成します。

    gcloud compute backend-services create images \
       --global \
       --enable-cdn \
       --protocol=HTTP2
    
  2. バックエンド サービスを構成して、カスタム リクエスト ヘッダー Host: backend.example.com をリクエストに追加します。

    gcloud compute backend-services update images \
       --custom-request-header "Host: backend.example.com" --global
    
  3. backend-services add-backend コマンドを使用して、インターネット NEG をバックエンド サービスに追加します。

    gcloud compute backend-services add-backend images \
      --network-endpoint-group "example-fqdn-neg" \
      --global-network-endpoint-group \
      --global
    
  4. 新しいマッチング ルールを作成して、新しいバックエンド サービスをロードバランサの URL マップに接続し、バックエンドにリクエストを転送します。

    gcloud compute url-maps add-path-matcher EXAMPLE_URL_MAP \
      --default-service=GCP_SERVICE_EXAMPLE \
      --path-matcher-name=CUSTOM_ORIGIN_PATH_MATCHER_EXAMPLE \
      --backend-service-path-rules=/CART/ID/1223515=IMAGES
    

    以下を置き換えます。

    • EXAMPLE_URL_MAP: 既存の URL マップの名前
    • GCP_SERVICE_EXAMPLE: 既存のデフォルト バックエンド サービスの名前
    • CUSTOM_ORIGIN_PATH_MATCHER_EXAMPLE: この新しいパスルールの名前
    • /CART/ID/1223515: パス
    • IMAGES: インターネット NEG が接続された新しいバックエンド サービスの名前

新しいロードバランサの使用

次の例では、インターネット NEG をデフォルト(任意のホスト、任意のパス)のサービスとして使用する外部 HTTP(S) ロードバランサを作成します。

変更する既存の外部 HTTP(S) ロードバランサがすでにある場合は、このセクションをスキップして、既存のロードバランサの使用に進んでください。

Console

バックエンド サービスの作成とインターネット NEG の追加

  1. Google Cloud Console で、[負荷分散] ページに移動します。

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

  2. [ロードバランサを作成] をクリックします。
  3. [HTTP(S) 負荷分散] で [設定を開始] をクリックします。
  4. [インターネットから自分の VM へ] を選択します。
  5. 新しいロードバランサの名前を入力します。この名前が新しい URL マップの名前になります。この例では、example-url-map といいます。
  6. [バックエンドの設定] をクリックします。
  7. [バックエンド サービスとバックエンド バケットの作成または選択] プルダウン メニューで、[バックエンド サービス] > [バックエンド サービスを作成] の順に選択します。
  8. バックエンド サービスの名前を images に設定します。
  9. [バックエンド タイプ] で [インターネット ネットワーク エンドポイント グループ] を選択します。
  10. ロードバランサからインターネット NEG へ使用するプロトコルを選択します。この例では、[HTTP/2] を選択します。
  11. [新しいバックエンド] > [インターネット ネットワーク エンドポイント グループ] で [example-fqdn-neg] を選択し、[完了] をクリックします。
  12. [Cloud CDN を有効にする] を選択します。
  13. [詳細構成] の [カスタム リクエスト ヘッダー] で [ヘッダーを追加] をクリックします。
    1. [ヘッダー名] に「Host」と入力します。
    2. [ヘッダーの値] に「backend.example.com」と入力します。
  14. [作成] をクリック
  15. ウィンドウを開いたままにして続行します。

新しい URL マップにバックエンド サービスを接続

  1. [ホストとパスのルール] をクリックします。
  2. 右側の列に images が選択されている行があることを確認します。最初の 2 つの列はデフォルトのルール Any unmatched (default) がすでに入力されています。
  3. ウィンドウを開いたままにして続行します。

フロントエンドを追加する

  1. [フロントエンドの設定] をクリックします。
  2. [名前] に「example-forwarding-rule」と入力します。
  3. [プロトコル] で [HTTPS] を選択します。
  4. [証明書] プルダウン リストをクリックします。
    1. プライマリ SSL 証明書として使用しようとしているセルフマネージド SSL 証明書リソースがすでにある場合は、プルダウン メニューから選択します。
    2. そうでない場合は、[新しい証明書を作成] を選択します。
    3. [証明書をアップロードする] か [Google マネージドの証明書を作成する] を選択します。
    4. [証明書をアップロードする] を選択した場合は、次の手順を行います。
      1. example-ssl の名前を入力します。
      2. 該当するフィールドに、公開鍵証明書(.crt ファイル)、証明書チェーン(.csr ファイル)、非公開鍵(.key ファイル)をアップロードします。
      3. [作成] をクリック
    5. [Google マネージドの証明書を作成する] を選択した場合は、[ドメイン] でドメインを入力してから [作成] をクリックします。
  5. プライマリ SSL 証明書リソースに加えて証明書リソースを追加するには、次の手順に沿って操作します。
    1. [追加の証明書] > [証明書を追加] をクリックします。
    2. [証明書] リストから証明書を選択するか、[新しい証明書の作成] をクリックし、上記の手順を実行します。
  6. [完了] をクリックします。
  7. ウィンドウを開いたままにして続行します。

確認と完了

  1. [確認と完了] をクリックします。
  2. 現在の設定と作成しようとしている内容を比較します。
  3. すべて問題なければ、[作成] をクリックして外部 HTTP(S) ロードバランサを作成します。

gcloud

  1. NEG の新しいバックエンド サービスを作成します。

    gcloud compute backend-services create images \
       --global \
       --enable-cdn \
       --protocol=HTTP2
    
  2. バックエンド サービスを構成して、カスタム リクエスト ヘッダー Host: backend.example.com をリクエストに追加します。

    gcloud compute backend-services update images \
       --custom-request-header "Host: backend.example.com" --global
    
  3. backend-services add-backend コマンドを使用して、インターネット NEG をバックエンド サービスに追加します。

    gcloud compute backend-services add-backend images \
      --network-endpoint-group "example-fqdn-neg" \
      --global-network-endpoint-group \
      --global
    
  4. バックエンド サービスを --default-service の値として指定する URL マップを作成します。

    gcloud compute url-maps create example-url-map \
       --default-service images \
       --global
    
  5. 証明書リソースを作成します。

    1. セルフマネージド SSL 証明書リソースを作成します。

      gcloud compute ssl-certificates create example-ssl \
        --certificate CRT_FILE_PATH \
        --private-key KEY_FILE_PATH
      
    2. Google マネージド SSL 証明書リソースを作成する

      gcloud beta compute ssl-certificates create example-ssl \
      --domains DOMAIN
      
  6. 新しいターゲット HTTPS プロキシを作成し、URL マップと SSL 証明書を添付します。

    gcloud compute target-https-proxies create example-target-https-proxy \
      --url-map=example-url-map \
      --ssl-certificates=example-ssl \
      --global
    
  7. グローバル エニーキャスト IP アドレスを構成するグローバル転送ルールを作成します。ロードバランサは、構成済みポートのエニーキャスト IP アドレスをリッスンします。クライアントは、Google Cloud ネットワーク経由でバックエンドに接続できます。

    gcloud compute forwarding-rules create example-forwarding-rule \
       --ip-protocol=TCP \
       --ports=443 \
       --global \
       --target-https-proxy=example-target-https-proxy
    

テスト

転送ルールの IP アドレスを取得し、ブラウザまたはコマンドライン ツール(curl など)を使用してそれに接続します。

gcloud compute forwarding-rules list

トラブルシューティングについては、カスタムの送信元とインターネット NEG に関する問題のトラブルシューティングをご覧ください。

次のステップ

  • Cloud CDN がキャッシュからレスポンスを提供しているかどうかを確認するには、ログの表示をご覧ください。
  • キャッシュに保存可能なコンテンツと保存できないコンテンツについては、キャッシュの概要をご覧ください。
  • GFE の接続拠点を確認するには、キャッシュのロケーションをご覧ください。