gRPC ブリッジング
gRPC ブリッジングの仕組み
-
gRPCリクエストが送信されると、NetScalerアプライアンスは接続がHTTP/1.1で、コンテンツタイプがアプリケーション/grpcであるかどうかを確認します。HTTP/1.1 リクエストは、次の疑似ヘッダーに変換されます。
-
Content-Type ヘッダーで示されているように HTTP/1.1 接続で gRPC リクエストを受信すると、ADC アプライアンスはそのリクエストを以下に示すように HTTP/2 経由の gRPC に変換します。
:method: Method-name in HTTP/1.1 request
:path: Path is HTTP/1.1 request
content-type: application/grpc
-
ポリシー評価に基づいて、負荷分散仮想サーバー(gRPC サービスがバインドされている)は要求を終了するか、HTTP/2フレームを介してバックエンドgRPCサーバーに転送します。
-
gRPC サーバーから HTTP/2 接続で応答を受信すると、アプライアンスは HTTP/2 トレーラーを受信するまでバッファリングを行い、次に gRPC ステータスコードを確認します。gRPC エラーステータスがゼロ以外の場合、アプライアンスはマッピング HTTP ステータスコードを探し、適切な HTTP/1.1 エラー応答を送信します。
CLI を使用して gRPC ブリッジングを設定する
-
HTTP/2 および HTTP/2 ダイレクトが有効な状態で HTTP プロファイルを追加
-
HTTP パラメータでグローバルバックエンド HTTP/2 サポートを有効にする
-
SSL/HTTP タイプの負荷分散仮想サーバーを追加し、HTTP プロファイルを設定します
-
gRPCエンドポイントのサービスを追加し、HTTPプロファイルを設定します
-
gRPC エンドポイントサービスを負荷分散仮想サーバーにバインド
-
gRPC ステータスコードを 0 以外の gRPC ステータスの HTTP レスポンスにマッピングします
-
gRPC バッファリングを時間またはサイズで設定
HTTP/2 および HTTP/2 ダイレクトが有効な状態で HTTP プロファイルを追加します
add ns httpProfile <name> - http2 ( ENABLED | DISABLED ) [-http2Direct ( ENABLED | DISABLED )]
add ns httpProfile http2gRPC -http2Direct ENABLED -http2 ENABLED
HTTP パラメータでグローバルバックエンド HTTP/2 サポートを有効にする
set ns httpParam -http2ServerSide( ON | OFF )
set ns httpParam -http2ServerSide ON
SSL/HTTP タイプの負荷分散仮想サーバーを追加し、HTTP プロファイルを設定します
add lb vserver <name> <service type> [(<IP address>@ <port>)] [-httpProfileName <string>]
add lb vserver lb-grpc HTTP 10.10.10.10 80 -httpProfileName http2gRPC
gRPCエンドポイントのサービスを追加し、HTTPプロファイルを設定します
add service <name> (<IP> | <serverName> ) <serviceType> <port> [-httpProfileName <string>]
add service svc-grpc 10.10.10.10 HTTP 80 -httpProfileName http2gRPC
gRPC エンドポイントサービスを負荷分散仮想サーバーにバインド
bind lb vserver <name> <serviceName>
bind lb vserver lb-grpc svc-grpc
gRPC ステータスコードを HTTP/1.1 レスポンスの HTTP ステータスコードにマッピングします
| gRPC ステータスコード | HTTP レスポンスステータスコード | HTTP 応答理由フレーズ |
|---|---|---|
| OK = 0 | 200 | OK |
| キャンセル済み = 1 | 499 | * |
| 不明 = 2 | 500 | 内部サーバーエラー |
| 引数が無効です = 3 | 400 | 不正な要求 |
| 期限超過 = 4 | 504 | ゲートウェイタイムアウト |
| 見つかりません = 5 | 404 | * |
| すでに存在する = 6 | 409 | コンフリクト |
| アクセス拒否 = 7 | 403 | 禁止 |
| 認証されていない = 16 | 401 | 無許可 |
| リソースを使い果たした = 8 | 429 | * |
| 失敗_前提条件 = 9 | 400 | 不正な要求 |
| 中止されました = 10 | 409 | コンフリクト |
| 範囲外 = 11 | 400 | 不正な要求 |
| 実装されていない = 12 | 501 | 未実装 |
| インターナル = 13 | 500 | 内部サーバーエラー |
| ご利用いただけません = 14 | 503 | サービスは利用できません |
| データ損失 = 15 | 500 | 内部サーバーエラー |
gRPC バッファリングを時間またはサイズで設定
add ns httpProfile http2gRPC [-grpcHoldLimit <positive_integer>] [-grpcHoldTimeout <positive_integer>]
set ns httpProfile http2gRPC [-grpcHoldLimit <positive_integer>] [-grpcHoldTimeout <positive_integer>]
grpcholdlimit。トレーラーが受信されるまで gRPC パケットをバッファできる最大サイズ (バイト単位)。パラメータと任意のパラメータの両方を設定できます。
grpcholdtimeout。トレーラーが受信されるまでの gRPC パケットのバッファリングに許容される最大時間(ミリ秒単位)。値は 100 の倍数でなければなりません。 デフォルト値:1000 最小値:0 最大値:180000
add httpprofile http2gRPC -grpcholdlimit 1048576 -grpcholdtimeout 5000 set httpprofile http2gRPC -grpcholdlimit 1048576 -grpcholdtimeout 5000
GUI を使用して gRPC ブリッジを設定
HTTP/2 および HTTP/2 ダイレクトが有効な状態で HTTP プロファイルを追加
-
System > Profilesに移動してHTTP Profilesをクリックします。
-
HTTP プロファイルで HTTP/2 を選択します。
HTTP パラメータでグローバルバックエンド HTTP/2 サポートを有効にする
SSL/HTTP タイプの負荷分散仮想サーバーを追加し、HTTP プロファイルを設定します
gRPC エンドポイント用サービスの追加と HTTP プロファイルの設定
gRPC エンドポイントを負荷分散仮想サーバーにバインドする
GUI を使用して gRPC バッファリングを時間とサイズで設定します
-
System > Profilesに移動してHTTP Profilesをクリックします。
-
HTTP プロファイルで HTTP/2 を選択します。
-
「 HTTP プロファイルの設定 」ページで、次のパラメータを設定します。
-
GRPC ホールドタイムアウト。トレーラーが受信されるまで gRPC パケットをバッファする時間をミリ秒単位で入力します。
-
GRP/ホールドリミット。 トレーラーが受信されるまで gRPC パケットをバッファする最大サイズをバイト単位で入力します。
-
-
「 **OK」をクリックして「**閉じる」をクリックします。
