Citrix ADC

GRPC エンドツーエンドの構成

GRPC エンドツーエンドの設定は、クライアントから HTTP/2 プロトコル経由でGRPC 要求を送信し、GRPC サーバによって応答された GRPC メッセージを再び転送することによって機能します。

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

次の図は、Citrix ADCアプライアンスで動作するGRPC構成を示しています。

GRPC 構成機能図

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

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

リクエストヘッダーは、HEADERS+継続フレームで HTTP/2 ヘッダーとして送信されます。

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

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

レスポンス・ヘッダーとトレーラーのみは1つのHTTP/2 HEADERSフレームブロックで配信されます。ほとんどのレスポンスはヘッダーとトレーラーの両方を持つことが予想されますが、直ちにエラーを生成する呼び出しに対しては Trailers-Only が許可されます。HTTPステータスコードがOKであっても、ステータスはトレーラーで送信する必要があります。

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

```

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. [システム] > [プロファイル] に移動し、[HTTP プロファイル] をクリックします。
  2. 新しい HTTP プロファイルまたは既存の HTTP プロファイルで HTTP/2 オプションを有効にする

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

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

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

GRPC エンドツーエンド構成により、グローバルバックエンド http2

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

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

GRPC 構成は、サービス GRPC エンドポイントを追加します。

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

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

grPC 構成バインドサービスロードバランシング仮想サーバー

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