Citrix ADC

GRPC リバースブリッジング

このシナリオでは、Citrix ADCアプライアンスは、HTTP/2接続で受信したGRPCコンテンツをシームレスにブリッジし、HTTP/1.1経由でバックエンドGRPCサーバーに転送します。

リバースブリッジの仕組み

次の図は、GRPC ブリッジング構成でコンポーネントがどのように相互作用するかを示しています。

GRPC エンドツーエンド構成機能図

  1. クライアントは、HTTP/2 フレームと proto-buf ペイロードの gRPC ヘッダーを持つ HTTP/2 接続で gRPC 要求を送信します。
  2. ポリシー評価に基づいて、負荷分散仮想サーバ(grPCサービスがバインドされている)は、HTTP/1.1接続を介してバックエンドサーバへの要求を変換し、転送します。
  3. HTTP/1.1 応答を受信すると、応答に grpc-status コードがない場合、ADC は HTTP 応答コードから grpc ステータスケースを派生させます。
  4. アプライアンスは、応答をクライアントに転送する前に、GRPC ヘッダーを HTTP/2 トレーラーに挿入します。

CLI を使用した GRPC リバースブリッジングの設定

GRPC リバースブリッジングを設定するには、次の手順を実行します。

  • HTTP/2 および HTTP/2 ダイレクトを有効にした HTTP プロファイル 1 を追加し、仮想サーバーの負荷分散を行います。
  • バックエンドサーバー で HTTP/2 を無効にした HTTP プロファイル 2 を追加する
  • SSL/HTTP タイプの負荷分散仮想サーバーを追加し、HTTP プロファイル 1 に設定します。
  • GRPC エンドポイントのサービスを追加し、HTTP プロファイル 2 に設定する
  • 負荷分散仮想サーバーへの grPC エンドポイント向けバインドサービス
  • レスポンスに grpc ステータスコードがない場合は、HTTP ステータスコードを grpc ステータスコードにマッピングします。

HTTP/2 および HTTP/2 ダイレクトを有効にした HTTP プロファイル 1 を追加し、仮想サーバーの負荷分散を行います

リバースブリッジング設定を開始するには、2 つの HTTP プロファイルを追加する必要があります。GRPC クライアント要求に対して HTTP/2 を有効にするプロファイルと、GRPC 以外のサーバー応答に対して HTTP/2 を無効にするプロファイルがあります。

コマンドプロンプトで、次のように入力します。

add ns httpProfile <name> - http2 ( ENABLED | DISABLED ) [-http2Direct ( ENABLED | DISABLED )]

例:

add ns httpProfile profile1 –http2 ENABLED -http2Direct ENABLED

バックエンドサーバーで HTTP/2 を無効にした HTTP プロファイル 2 を追加する

Citrix ADCコマンドラインを使用して、バックエンドサーバー応答のHTTPプロファイルでHTTP/2サポートを無効にします。

コマンドプロンプトで、次のように入力します。 add ns httpProfile <name> - http2 ( ENABLED | DISABLED ) [-http2Direct ( ENABLED | DISABLED )]

例:

add ns httpProfile profile2 –http2 DISABLED http2Direct DISABLED

SSL/HTTP タイプの負荷分散仮想サーバーを追加し、HTTP プロファイル 1 に設定します

Citrix ADCコマンドインターフェイスを使用して負荷分散仮想サーバーを追加するには

コマンドプロンプトで、次のように入力します。

add lb vserver <name> <service type> [(<IP address>@ <port>)] [-httpProfileName <string>]

例:

add lb vserver lb-grpc HTTP 10.10.10.10 80 -httpProfileName profile1

注:

SSL タイプのロードバランシング仮想サーバを使用している場合は、サーバ証明書をバインドする必要があります。詳細については、「サーバー証明書のバインド」を参照してください。

GRPC エンドポイントのサービスを追加し、HTTP プロファイル 2 に設定する

GRPCエンドポイントを持つサービスを追加し、Citrix ADCコマンドインターフェイスを使用してHTTPプロファイル2を設定します。

コマンドプロンプトで、次のように入力します。

add service <name> (<IP> | <serverName> ) <serviceType> <port> [-httpProfileName <string>]

例:

add service svc-grpc 10.10.10.11 HTTP 80 -httpProfileName profile2

gRPC エンドポイント用のサービスを負荷分散仮想サーバーにバインドする

Citrix ADCコマンドインターフェイスを使用して、grPCサービスを負荷分散仮想サーバーにバインドします。

コマンドインターフェイスで、次のように入力します。

bind lb vserver <name> <serviceName>

例:

bind lb vserver lb-grpc svc-grpc

HTTPレスポンスコードをGRPCステータスコードにマッピングする

サーバーがgRPCステータスコードを生成しない場合、Citrix ADCアプライアンスは、受信したHTTP応答に基づいて適切なgRPCステータスコードを生成します。ステータスコードは、以下のマッピング表に記載されています。

HTTP レスポンスステータスコード GRPC ステータスコード
200 OK
400 INTERNAL = 13
403 PERMISSION_DENIED = 7
401 UNAUTHENTICATED = 16
429, 502, 503, 504 UNAVAILABLE = 14
404 UNIMPLEMENTED = 12

GUI を使用した GRPC リバースブリッジングの設定

HTTP/2 および HTTP/2 ダイレクトを有効にした HTTP プロファイル 1 を追加し、仮想サーバーの負荷分散を行います

  1. [システム] > [プロファイル] に移動し、[HTTP プロファイル] をクリックします。
  2. HTTP プロファイル 1 で HTTP/2 オプションを有効にします。

GRPCリバースブリッジングhttp2パラメータでhttpプロファイルを追加する

バックエンドサーバーで HTTP/2 を無効にした HTTP プロファイル 2 を追加する

  1. [システム] > [プロファイル] に移動し、[HTTP プロファイル] をクリックします。
  2. HTTP プロファイル 2 で HTTP/ 2 オプションを有効にします。
  3. [OK] をクリックします。

gRPC reverse bridging global backend HTTP/2

SSL/HTTP タイプの負荷分散仮想サーバーを追加し、HTTP プロファイル 1 に設定します

  1. [トラフィック管理] > [負荷分散] > [仮想サーバー] に移動します。
  2. [Add] をクリックして、GRPC トラフィック用の負荷分散仮想サーバーを作成します。
  3. 負荷分散仮想サーバー]ページで、[プロファイル]をクリックします。
  4. [プロファイル] セクションで、プロファイルの種類を HTTP として選択します。
  5. [OK] をクリックし、[完了] をクリックします。

grpc reverse bridging global backend HTTP/2 enable load balancing

grPC エンドポイントでサービスを追加し、HTTP プロファイル 2 に設定する

  1. [トラフィック管理] > [ロードバランシング] > [サービス]に移動します。
  2. [Add] をクリックして、GRPC トラフィック用のアプリケーションサーバーを作成します。
  3. [負荷分散サービス] ページで、[プロファイル] セクションに移動します。
  4. [プロファイル] で、GRPC エンドポイントの HTTP プロファイルを 追加します。
  5. [OK] をクリックし、[完了] をクリックします。

grpc reverse bridging add service for grpc endpoint

負荷分散仮想サーバーへの grPC エンドポイント向けバインドサービス

  1. [トラフィック管理] > [負荷分散] > [仮想サーバー] に移動します。
  2. [Add] をクリックして、GRPC トラフィック用の負荷分散仮想サーバーを作成します。
  3. [負荷分散仮想サーバー] ページで、[サービスとサービスグループ] セクションをクリックします。
  4. 負荷分散仮想サーバーサービスのバインド]ページで、バインドする grPC サービスを選択します。
  5. [閉じる] をクリックし、[完了] をクリックします。

GRPC エンドポイントの GRPC リバースブリッジングバインドサービス

GUI 手順の詳細については、負荷分散 トピックを参照してください。

GRPC リバースブリッジング