ADC

gRPC エンドツーエンド構成

gRPC のエンドツーエンド構成は、HTTP/2 プロトコルでクライアントから gRPC リクエストを送信し、gRPC サーバーが応答した gRPC メッセージを再度転送することで機能します。

エンドツーエンドの gRPC 設定の仕組み

次の図は、NetScaler ADCアプライアンスで機能するgRPC構成を示しています。

gRPC 構成機能ダイアグラム

  1. gRPC 構成をデプロイするには、まず HTTP プロファイルで HTTP/2 を有効にし、サーバー側で HTTP/2 サポートをグローバルに有効にする必要があります。
  2. クライアントが gRPC リクエストを送信すると、負荷分散仮想サーバーはポリシーを使用して gRPC トラフィックを評価します。
  3. ポリシー評価に基づいて、負荷分散仮想サーバー(gRPC サービスがバインドされている)は要求を終了し、gRPC 要求としてバックエンドの gRPC サーバーに転送します。
  4. 同様に、gRPC サーバーがクライアントに応答すると、アプライアンスは応答を終了し、gRPC 応答としてクライアントに転送します。

gRPC サーバーに送信された gRPC リクエストの例

リクエストヘッダーは次のように送信されます HTTP/2 のヘッダー HEADERS+CONTINUATION フレーム。

```
HEADERS (flags = END_HEADERS)
: method = POST
: scheme = http
: path = /helloworld.citrix-adc/SayHello
: authority = 10.10.10.10.:80
grpc-timeout = 15
content-type = application/grpc+proto
grpc-encoding = gzip
DATA (flags = END_STREAM)
<Length-Prefixed Message>
<!--NeedCopy--> ```

gRPCサーバーからNetScaler ADCアプライアンスへのgRPC応答ヘッダーの例

レスポンスヘッダーとトレーラーのみは、単一の HTTP/2 HEADERS フレームブロックで配信されます。ほとんどの応答にはヘッダーとトレーラーの両方が含まれることが予想されますが、Trailers-Only は、すぐにエラーが発生する呼び出しでは許可されます。HTTPステータスコードがOKの場合でも、ステータスはTrailersで送信する必要があります。

```
HEADERS (flags = END_HEADERS)
: status = 200
Grpc-encoding= gzip
Content-type = application/grpc+proto
DATA
<Length-Prefixed Message>
HEADERS (flags = END_STREAM, END_HEADERS)
grpc-status = 0 # OK

<!--NeedCopy--> ```

CLIを使用してgRPCを構成する

エンドツーエンドの gRPC デプロイメントを設定するには、以下を完了する必要があります。

  • HTTP/2 および HTTP/2 ダイレクトが有効になっている HTTP プロファイルを追加します。
  • HTTP パラメータでグローバルバックエンド HTTP/2 サポートを有効にする
  • SSL/HTTP タイプの負荷分散仮想サーバーを追加し、HTTP プロファイルを設定します
  • gRPC エンドポイント用サービスの追加と HTTP プロファイルの設定
  • gRPC エンドポイントサービスを負荷分散仮想サーバーにバインド

HTTP/2 および HTTP/2 ダイレクトが有効な状態で HTTP プロファイルを追加

HTTP プロファイルで HTTP/2 と HTTP/2 のダイレクトパラメータを有効にする必要があります。また、gRPC over HTTP/2 クリアテキストが必要な場合は、HTTP/2 ダイレクトパラメータを有効にする必要があります。

コマンドプロンプトで入力します:

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.11 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 エンドポイントサービスを負荷分散仮想サーバーにバインド

Citrix ADCコマンドインターフェイスを使用してgRPCサービスを負荷分散仮想サーバーにバインドするには :

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

bind lb vserver <name> <serviceName>

例:

bind lb vserver lb-grpc svc-grpc

GUI を使用してエンドツーエンドの gRPC デプロイメントを設定

GUI を使用して gRPC を設定するには、次の手順を実行します。

HTTP/2 および HTTP/2 ダイレクトが有効な状態で HTTP プロファイルを追加

  1. System > Profilesに移動してHTTP Profilesをクリックします。
  2. 新しい HTTP プロファイルまたは既存の HTTP プロファイルの HTTP/2 チェックボックスを選択します。

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

  1. [ システム] > [設定] > [HTTP パラメータ] に移動します。
  2. HTTP パラメータの設定 」ページで、「 サーバー側の HTTP/2 」チェックボックスを選択します。
  3. [OK] をクリックします。

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

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

gRPC エンドポイント用サービスの追加と HTTP プロファイルの設定

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

ロードバランシングに関連する GUI 手順の詳細については、「 負荷分散 」のトピックを参照してください。

gRPC エンドツーエンド構成