ADC

gRPC リバースブリッジング

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

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

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

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

  1. クライアントは、HTTP/2 フレームの gRPC ヘッダーと proto-buf ペイロードを使用して 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 プロファイルを追加する必要があります。1 つは 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/2プロファイルでの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エンドポイントでサービスを追加し、NetScaler 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 インターナル = 13
403 アクセス拒否 = 7
401 認証されていない = 16
429, 502, 503, 504 ご利用いただけません = 14
404 実装されていない = 12

GUI を使用して gRPC リバースブリッジを設定する

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

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

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

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

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

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

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

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

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

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

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

gRPC リバースブリッジング