Cloud Load Balancing と Cloud CDN の拡張機能の概要

Service Extensions を使用すると、拡張機能を使用して、サポートされているアプリケーション ロードバランサにプラグインの使用を指示したり、ロード バランシング データパスからコールアウト バックエンド サービスまたは Google サービスにコールアウトを送信したりできます。このページでは、Cloud Load Balancing 拡張機能の概要について説明します。

次のタイプの拡張機能を使用するようにアプリケーション ロードバランサを構成できます。

  • エッジ拡張機能を使用すると、リクエスト ヘッダーを操作して、バックエンド サービスの選択と、Cloud CDN がキャッシュから配信するコンテンツを制御できます。これらの拡張機能は、リクエスト処理ライフサイクルの早い段階で実行されるように構成されており、エッジでそれぞれキャッシュ保存とルーティングの決定に影響を与えます。

  • ルート拡張機能を使用すると、バックエンド サービスの選択に影響を与えることができます。これらの拡張機能は、リクエスト処理ライフサイクルの早い段階で実行されるように構成されています。

  • 認可拡張機能を使用すると、カスタム認可エンジンに認可リクエストを送信できます。これらは、ロードバランサがバックエンドにリクエストを送信する直前の処理サイクルの最後に構成します。

  • トラフィック拡張機能は、追加のカスタム セキュリティ ロジックとトラフィック管理機能をサポートします。これらは、認可拡張機能の後、ロードバランサがバックエンドにリクエストを送信する前、またはバックエンドからレスポンスを受信する前に構成します。

ユーザー管理拡張機能でサポートされているアプリケーション ロードバランサ

Service Extensions は、次のアプリケーション ロードバランサのユーザー管理拡張機能をサポートしています。

アプリケーション ロードバランサ 拡張機能
Edge ルート 承認 トラフィック
プラグイン プラグイン コールアウト コールアウト プラグイン コールアウト
グローバル外部アプリケーション ロードバランサ ✓ ✓ ✓ ✓
リージョン外部アプリケーション ロードバランサ ✓ ✓ ✓ ✓ ✓
リージョン内部アプリケーション ロードバランサ ✓ ✓ ✓ ✓ ✓
クロスリージョン内部アプリケーション ロードバランサ ✓ ✓ ✓ ✓ ✓

ロード バランシング データパスの拡張ポイント

Service Extensions は、ロード バランシング データパスのさまざまなステージで拡張機能をサポートしています。

図 1 は、Service Extensions がグローバル外部アプリケーション ロードバランサのアプリケーション セキュリティとトラフィック管理のステージで拡張機能をサポートする方法を示しています。

図 1. グローバル外部アプリケーション ロードバランサは、エッジ ルーティング、アプリケーション セキュリティ、トラフィック管理の各ステージで拡張機能をサポートしています(クリックして拡大)。

図 2 は、Service Extensions が、リージョン外部アプリケーション ロードバランサ、リージョン内部アプリケーション ロードバランサ、クロスリージョン内部アプリケーション ロードバランサのルーティング、アプリケーション セキュリティ、トラフィック管理の各ステージで拡張機能をどのようにサポートするかを示しています。

図 2. リージョン外部アプリケーション ロードバランサ、リージョン内部アプリケーション ロードバランサ、クロスリージョン内部アプリケーション ロードバランサは、ルーティングとトラフィック管理のステージで拡張機能をサポートしています(クリックして拡大)。

エッジ拡張機能の仕組み

エッジ拡張機能はリクエスト処理パスで最初に実行され、リクエスト ヘッダーを使用してバックエンド サービスの選択と、Cloud CDN がキャッシュから提供するコンテンツを制御できます。

ロードバランサがエッジ拡張機能を呼び出すと、次の処理が行われます。

  • URL マップを評価してバックエンド サービスを選択する
  • Google Cloud Armor ポリシーのセキュリティ ポリシーを適用する
  • キャッシュ ルックアップを行い、キャッシュ ヒットがある場合はキャッシュから提供します。
  • 選択したバックエンド サービスに Cloud Armor ポリシーを適用します
  • CORS ポリシーを適用する
  • ステートフル セッション アフィニティ ポリシーを適用します
  • 選択したバックエンド サービスに Identity-Aware Proxy(IAP)ポリシーを適用します
  • 選択したバックエンド サービスの処理パスで構成されている場合、認可拡張機能を呼び出す
  • フォールト インジェクションを実行する
  • 通話トラフィック拡張機能(ある場合)
  • URL の書き換えを実行する
  • URL マップに従ってヘッダー操作を実行し、カスタム リクエスト ヘッダー変数に追加します。
  • URL マップとバックエンド サービスのロード バランシング設定でタイムアウトと再試行ポリシーを適用しながら、選択したバックエンド サービスへのリダイレクトまたはルーティングを実行します。
  • リクエストのミラーリングを実行する

ルート拡張機能の仕組み

ルート拡張機能は、ロードバランサがリクエスト ヘッダーを受信したとき、および URL マップを評価する前に、リクエスト処理パスで最初に実行されます。

ロードバランサがリクエストのルート拡張機能を呼び出すと、次の処理が行われます。

  • URL マップを評価してバックエンド サービスを選択する
  • 選択したバックエンド サービスに Cloud Armor ポリシーを適用します
  • 選択したバックエンド サービスの IAP ポリシーを適用します
  • フォールト インジェクションを実行する
  • リクエスト ヘッダー変換を実行し、カスタム リクエスト ヘッダー変数を解決します
  • 選択したバックエンド サービスの処理パスにトラフィック拡張機能が存在する場合は、その拡張機能を呼び出す
  • URL の書き換えを実行する
  • 選択したバックエンド サービスへのリダイレクトまたは転送を実行し、URL マップのタイムアウトと再試行ポリシー、およびバックエンド サービスの他のロード バランシング設定を適用します。

認可拡張機能の仕組み

認可拡張機能を使用して認可ポリシーを構成し、認可の決定をカスタム認可エンジンに委任できます。認可ポリシーの詳細については、認可ポリシーの概要をご覧ください。

認可拡張機能は、ルート拡張機能が呼び出され、リクエストのバックエンドが選択された後、リクエストパスで呼び出されます。これらの拡張機能は、バックエンド サービスの選択に影響を与えることはできません。

プレビューでは、リージョン外部アプリケーション ロードバランサとリージョン内部アプリケーション ロードバランサの場合、認可ポリシーはルート拡張後に呼び出されます。認可拡張機能を設計する際は、次の点を考慮してください。

  • REQUEST_AUTHZ プロファイル タイプの認可ポリシーによって呼び出される拡張機能は、ext_proc または ext_authz プロトコルを含む HTTP リクエスト ヘッダーのみを受信して評価します。

  • CONTENT_AUTHZ プロファイル タイプの認可ポリシーによって呼び出された拡張機能は、リクエストとレスポンスのヘッダー、本文、トレーラーを受け取ります。これらは、ext_proc プロトコルの FULL_DUPLEX_STREAMED body 処理モードで構成する必要があります。

データパスでは、リクエスト認可ポリシーに基づく認可拡張機能は、コンテンツ認可ポリシーに基づく認可拡張機能よりも先に実行されます。

トラフィック表示オプションの仕組み

ロードバランサは、リクエスト処理パスの最後にトラフィック拡張を実行し、レスポンス処理パスの最初に実行します。

これらの拡張機能を使用すると、バックエンド サービスの選択に影響を与えることなく、リクエストとレスポンスの両方のヘッダーとペイロードを変更できます。トラフィック拡張機能を使用して、カスタム ロギングを行うこともできます。そのためには、ログに記録する情報、形式、外部プロバイダを指定します。

ロードバランサがリクエストのパスでリクエストのトラフィック拡張機能を呼び出す前に、次の処理を行います。

  • フォールト インジェクションを実行する
  • リクエストのバックエンド サービスを選択する
  • 選択したバックエンド サービスに Cloud Armor ポリシーを適用します
  • 選択したバックエンド サービスの IAP ポリシーを適用します
  • グローバル外部アプリケーション ロードバランサの場合、選択したバックエンド サービスに Cloud CDN キャッシュ保存ポリシーを適用します。

ロードバランサがリクエストのパスでリクエストのトラフィック拡張機能を呼び出すと、次の処理が行われます。

  • URL の書き換えを実行する
  • URL マップに従ってヘッダー操作を実行し、カスタム リクエスト ヘッダー変数に追加します。
  • URL マップとバックエンド サービスのロード バランシング設定でタイムアウトと再試行ポリシーを適用しながら、選択したバックエンド サービスへのリダイレクトまたはルーティングを実行します。
  • リクエストのミラーリングを実行する

ロードバランサがリクエストのレスポンス パスでトラフィック拡張機能を呼び出すと、次の処理が行われます。

  • レスポンス ヘッダー変換を実行し、カスタム レスポンス ヘッダー変数を解決します
  • Cloud Logging を使用してロギングを実行します
  • グローバル外部アプリケーション ロードバランサの場合に Cloud CDN キャッシュ保存を実行する

カスタム ヘッダー

トラフィック パスでは、エッジ拡張機能とルート拡張機能は、ロードバランサがカスタム ヘッダーを追加するステージの前の拡張ポイントで実行されます。そのため、エッジとルートの拡張機能が受信するヘッダーには、ロードバランサが追加するカスタム ヘッダーは含まれません。

通常カスタム ヘッダーに配置する情報をエッジ拡張機能とルート拡張機能で使用できるようにするには、代わりにサポートされている属性の使用を検討してください。

拡張機能の制限事項

  • 転送ルールに設定できる LbEdgeExtension リソース、LbTrafficExtension リソース、LbRouteExtension リソースはそれぞれ 1 つのみです。
  • コールアウトの場合、コールアウト バックエンド サービスは転送ルールと同じプロジェクトに存在する必要があります。
  • 拡張機能と転送ルールの間のプロジェクト間参照はサポートされていません。

次のステップ