Citrix ADC

GRPC ブリッジング

クライアントがHTTP/1.1プロトコルを介して要求を送信すると、Citrix ADCアプライアンスは、HTTP/2プロトコルを介してGRPCサーバーに準拠しているHTTP/1.1プロトコルを介してGRPC要求のブリッジングをサポートします。同様に、リバースブリッジングでは、アプライアンスは HTTP/2 プロトコル経由でクライアントの grPC 要求を受信し、HTTP/1.1 プロトコルの grPC サーバーに準拠して grPC 要求に対してリバースブリッジングを実行します。

GRPC ブリッジの仕組み

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

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

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

  1. GRPC要求が送信されると、Citrix ADCアプライアンスは、接続がHTTP/1.1で、コンテンツタイプがアプリケーション/grpcかどうかをチェックします。HTTP/1.1 要求は、次の擬似ヘッダーに変換されます。
  2. HTTP/1.1. 接続上のGRPC要求を受信すると、Content-Typeヘッダーで示されるように、ADCアプライアンスは、下記のようにHTTP/2を介してGRPCに要求を変換します。
    :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. GRPC サーバーから HTTP/2 接続で応答を受信すると、アプライアンスは HTTP/2 トレーラーを受信するまでバッファリングし、GRPC ステータスコードをチェックします。gRPC エラーステータスがゼロ以外の場合、アプライアンスはマッピング HTTP ステータスコードを検索し、適切な HTTP/1.1 エラー応答を送信します。

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

GRPC ブリッジングを設定するには、次の手順を完了する必要があります。

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

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

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

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

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

例:

add ns httpProfile http2gRPC -http2Direct ENABLED -http2 ENABLED

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

Citrix ADCコマンドラインを使用して、サーバー側でグローバルにHTTP/2サポートを有効にします。

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

set ns httpParam -http2ServerSide( ON | OFF )

例:

set ns httpParam -http2ServerSide ON

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

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 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

HTTP/1.1応答でGRPCステータスコードをHTTPステータスコードにマッピングする

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

GRPC ステータスコード HTTPレスポンスステータスコード HTTP レスポンス理由フレーズ
OK = 0 200 OK
CANCELLED = 1 499 *
UNKNOWN = 2 500 内部サーバー エラー
INVALID_ARGUMENT = 3 400 不正な要求
DEADLINE_EXCEEDED = 4 504 ゲートウェイのタイムアウト
NOT_FOUND = 5 404 *
ALREADY_EXISTS = 6 409 競合
PERMISSION_DENIED = 7 403 使用不可
UNAUTHENTICATED = 16 401 未承認
RESOURCE_EXURCE_= 8 429 *
FAILED_PRECONDITION = 9 400 不正な要求
ABORTED = 10 409 競合
OUT_OF_RANGE = 11 400 不正な要求
UNIMPLEMENTED = 12 501 未実装
INTERNAL = 13 500 内部サーバー エラー
UNAVAILABLE = 14 503 サービス利用不可
DATA_LOSS = 15 500 内部サーバー エラー

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

Citrix ADC GUIを使用してGRPCブリッジを構成するには、次の手順に従います。

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

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

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

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

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

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

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

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

GRPC ブリッジンググローバルバックエンド HTTP/2 は、ロードバランシングを有効にします。

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

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

grPC ブリッジングは、grpc エンドポイント用のサービスを追加する

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

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

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

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

GRPC ブリッジング