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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

エッジ拡張機能の仕組み

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

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

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

承認拡張機能の仕組み

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

認可拡張機能は、リクエスト ヘッダーのみを処理でき、リクエスト本文やレスポンスの一部を処理することはできません。

ルート拡張機能の仕組み

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

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

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

トラフィック拡張機能の仕組み

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

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

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

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

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

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

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

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

拡張機能の制限事項

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

次のステップ