Citrix ADC

gRPCリバースブリッジング

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

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

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

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

  1. クライアントはgRPC要求をHTTP/2接続でHTTP/2フレームおよびproto-buf ペイロードで gRPCヘッダーとともに送信します。
  2. ポリシー評価に基づいて、負荷分散仮想サーバー(gRPCサービスがバインドされている)が要求を変換してバックエンドサーバーへのHTTP/1.1 接続で転送します。
  3. 受信時に HTTP/1.1 応答、応答にgrpc-statusコードがない場合、ADCはHTTP応答コードからgrpcstatus-caseを導出します。
  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を有効にする1つのプロファイルと非gRPCサーバー応答のHTTP/2を無効にする別のプロファイル。

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

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

例:

add ns httpProfile profile1 –http2 ENABLED -http2Direct ENABLED

gRPCエンドポイントでサービスを追加し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エンドポイントでサービスを追加し、CitrixADCコマンドインターフェイスを使用して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 Response status-code gRPC status code
200 OK
400 INTERNAL = 13
403 PERMISSION_DENIED = 7
401 UNAUTHENTICATED = 16
429, 502, 503, 504 UNAVAILABLE = 14
404 UNIMPLEMENTED = 12

Configure gRPC reverse bridging by using the GUI

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

  1. System > Profiles and click HTTP Profilesに移動します。
  2. HTTP プロファイル1で HTTP/2オプション を有効にします。

gRPCリバースブリッジはhttpプロファイルをhttp2パラメーターとともに追加します。

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

  1. System > Profilesに移動してHTTP Profilesをクリックします。
  2. HTTPプロファイル2のHTTP/2オプションを有効にします。
  3. [OK] をクリックします。

gRPCリバースブリッジグローバルバックエンドHTTP/2

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

  1. Traffic Management > Load Balancing > Virtual Serversに移動します。
  2. AddをクリックしてgRPCトラフィックの負荷分散仮想サーバーを作成します。
  3. Load Balancing Virtual ServerページでProfilesをクリックします。
  4. [プロファイル] セクションで、プロファイルタイプをHTTPとして選択します。
  5. [OK][完了]の順にクリックします。

grpcリバースブリッジグローバルバックエンドHTTP/2が負荷分散を有効にする

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

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

grpc reverse bridging add service for grpc endpoint

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

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

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

詳細なGUI手順については、「負荷分散」を参照してください。

gRPCリバースブリッジング