Citrix ADC

gRPC bridging

クライアントがリクエストを送信するとき HTTP/1.1 プロトコルでは、CitrixADCアプライアンスはgRPCリクエストのブリッジングをサポートします HTTP/1.1 gRPCサーバーに準拠しているプロトコル HTTP/2 プロトコル。同様に、リバースブリッジングでは、アプライアンスはクライアントのgRPC要求を HTTP/2 プロトコルを実行し、のgRPCサーバーに準拠してgRPCリクエストのリバースブリッジを実行します。 HTTP/1.1 プロトコル。

How gRPC bridging works

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

gRPC end-to-end configuration functional diagram

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

  1. gRPCリクエストが送信されると、Citrix ADCアプライアンスは接続が HTTP/1.1 コンテンツタイプは application/grpc. ザ・ HTTP/1.1 リクエストは、次の疑似ヘッダーに変換されます。
  2. でgRPCリクエストを受信すると HTTP/1.1. Content-Typeヘッダーで示される接続では、ADCアプライアンスはリクエストをgRPCに変換します。 HTTP/2 以下のように:
    :method: Method-name in HTTP/1.1 request
    :path: Path is HTTP/1.1 request
    content-type: application/grpc
  1. ポリシー評価に基づいて、負荷分散仮想サーバー(gRPCサービスがバインドされている)は要求を終了するか、転送します HTTP/2 バックエンドgRPCサーバーへのフレーム。
  2. で応答を受信すると HTTP/2 gRPCサーバーからの接続、アプライアンスは受信するまでバッファリングします HTTP/2 トレーラーを開き、gRPCステータスコードを確認します。ゼロ以外のgRPCエラーステータスの場合、アプライアンスはマッピングHTTPステータスコードを探し、適切なものを送信します HTTP/1.1 エラー応答。

CLIを使用してgRPCブリッジを構成する

To configure gRPC reverse bridging, you must complete the following steps:

  1. HTTP/2 および HTTP/2 ダイレクトを有効にした HTTP プロファイルを追加
  2. グローバルバックエンドを有効にする HTTP/2 HTTPパラメータでのサポート
  3. SSL/HTTP タイプの負荷分散仮想サーバーを追加し、HTTP プロファイルを設定します
  4. gRPCエンドポイントのサービスを追加し、HTTPプロファイルを設定します
  5. gRPCエンドポイントサービスを負荷分散仮想サーバーにバインドする
  6. gRPCステータスコードをゼロ以外のgRPCステータスのHTTP応答にマップします
  7. 時間および/またはサイズによるgRPCバッファリングの構成

HTTP/2 および HTTP/2 ダイレクトを有効にした HTTP プロファイルを追加

設定を開始するには、HTTP プロファイルで HTTP/2 機能を有効にする必要があります。クライアントがHTTP1.1リクエストを送信すると、アプライアンスはリクエストをブリッジしてバックエンドサーバーに転送します。

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

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

例:

add ns httpProfile http2gRPC -http2Direct ENABLED -http2 ENABLED

グローバルバックエンドを有効にする HTTP/2 HTTPパラメータでのサポート

To enable HTTP/2 support globally on the server side by using the Citrix ADC command line.

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

set ns httpParam -http2ServerSide( ON | OFF )

例:

set ns httpParam -http2ServerSide ON

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

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

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

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

例:

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

注:

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

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

Citrix ADC コマンドインターフェイスを使用して、HTTPプロファイルを使用してgRPCサービスを追加します。

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

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

例:

add service svc-grpc 10.10.10.10 HTTP 80 -httpProfileName http2gRPC

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

CLIを使用して、gRPCエンドポイントサービスを負荷分散仮想サーバーにバインドします。

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

bind lb vserver <name> <serviceName>

例:

bind lb vserver lb-grpc svc-grpc

gRPCステータスコードをHTTP/1.1 応答のHTTPステータスコードにマップします

gRPCブリッジングシナリオでは、gRPCサービスはgRPCステータスコードでリクエストに応答します。アプライアンスは、gRPCステータスコードを対応するHTTP応答コードと理由フレーズにマップします。マッピングは、以下の表に基づいて行われます。送信時のCitrixADCアプライアンス HTTP/1.1 クライアントへの応答は、HTTPステータスコードと理由フレーズを送信します。

gRPC status-code HTTP response status-code HTTP response reason-phrase
OK = 0 200 OK
CANCELLED = 1 499 *
UNKNOWN = 2 500 内部サーバー エラー
INVALID_ARGUMENT = 3 400 不正な要求
DEADLINE_EXCEEDED = 4 504 Gateway Timeout
NOT_FOUND = 5 404 *
ALREADY_EXISTS = 6 409 競合
PERMISSION_DENIED = 7 403 使用不可
UNAUTHENTICATED = 16 401 未承認
RESOURCE_EXHAUSTED = 8 429 *
FAILED_PRECONDITION = 9 400 不正な要求
ABORTED = 10 409 競合
OUT_OF_RANGE = 11 400 不正な要求
UNIMPLEMENTED = 12 501 Not Implemented
INTERNAL = 13 500 内部サーバー エラー
UNAVAILABLE = 14 503 Service Unavailable
DATA_LOSS = 15 500 内部サーバー エラー

時間および/またはサイズによるgRPCバッファリングの構成

Citrix ADCアプライアンスは、応答トレーラーが受信されるまで、バックエンドサーバーからのgRPC応答をバッファリングします。これにより、双方向のgRPC呼び出しが中断されます。また、gRPC応答が大きい場合、応答を完全にバッファリングするために大量のメモリを消費します。この問題を解決するために、gRPCブリッジ構成が拡張され、時間によるバッファリングが制限されます。 and/or サイズ。バッファサイズまたは時間制限がしきい値を超えると、制限のいずれかがトリガーされた場合でも(設定されたバッファサイズ内でトレーラーが受信されない場合、または設定されたタイムアウトが発生した場合)、アプライアンスはバッファリングを停止し、応答をクライアントに転送します。その結果、構成されたポリシーとその式(grpc-statusコードに基づく)が期待どおりに機能しません。

時間によってgRPCバッファリングを制限するには and/or CLIによるサイズで、新しいHTTPプロファイルを追加するときに構成したり、既存のプロファイルを変更するときに構成したりできます。

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

add ns httpProfile http2gRPC [-grpcHoldLimit <positive_integer>] [-grpcHoldTimeout <positive_integer>]

または

set ns httpProfile http2gRPC [-grpcHoldLimit <positive_integer>] [-grpcHoldTimeout <positive_integer>]

各項目の意味は次のとおりです。

grpcholdlimit。トレーラーが受信されるまでgRPCパケットをバッファリングできるバイト単位の最大サイズ。パラメータといずれか1つを設定できます。

デフォルト値:131072 最小値:0 最大値:33554432

grpcholdtimeout。トレーラーが受信されるまでgRPCパケットをバッファリングできる最大時間(ミリ秒単位)。値は100の倍数である必要があります。 デフォルト値:1000 最小値:0 最大値:180000

例:

add httpprofile http2gRPC -grpcholdlimit 1048576 -grpcholdtimeout 5000 set httpprofile http2gRPC -grpcholdlimit 1048576 -grpcholdtimeout 5000

GUIを使用してgRPCブリッジを構成する

Citrix ADC GUIを使用してgRPCブリッジングを構成するには、次の手順を実行します。

HTTP/2 および HTTP/2 ダイレクトを有効にした HTTP プロファイルを追加

  1. System > Profilesに移動してHTTP Profilesをクリックします。
  2. HTTPプロファイルでHTTP/2を選択します。

gRPCブリッジングはhttp2パラメーターでHTTPプロファイルを追加します

グローバルバックエンドを有効にする HTTP/2 HTTPパラメータでのサポート

  1. System > Settings > HTTP Parametersに移動します。
  2. [HTTPパラメータの構成]ページで、[HTTP/2 サーバー側 オプション。
  3. [OK] をクリックします。

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

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

  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プロファイルを設定する

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

grpcエンドポイントのgRPCブリッジング追加サービス

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

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

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

GUIを使用して、時間とサイズでgRPCバッファリングを構成します

  1. System > Profilesに移動してHTTP Profilesをクリックします。
  2. HTTPプロファイルでHTTP/2を選択します。
  3. HTTPプロファイル の構成」ページで、以下のパラメーターを設定します。

    1. grpcHoldTimeout. トレーラーが受信されるまでgRPCパケットをバッファリングする時間をミリ秒単位で入力します。
    2. grpcHoldLimit. トレーラーが受信されるまでgRPCパケットをバッファリングするための最大サイズをバイト単位で入力します。
  4. [OK]クリックして[閉じる]をクリックします。

時間とサイズによるgRPCブリッジバッファリング

サービスのバインドと仮想サーバーの負荷分散の詳細なGUI手順については、「負荷分散」を参照してください。

gRPC bridging