Citrix ADC

gRPCエンドツーエンド構成

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

エンドツーエンドのgRPC構成の仕組み

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

gRPC構成機能図

  1. gRPC構成をデプロイするには、最初に有効にする必要があります HTTP/2 HTTPプロファイルで、有効にします 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サーバーからCitrix ADCアプライアンスへのgRPC応答ヘッダーの例

応答-ヘッダー & トレーラー-単一でのみ配信されます HTTP/2 HEADERSフレームブロック。ほとんどの応答にはヘッダーとトレーラーの両方が含まれていると予想されますが、即時エラーが発生する呼び出しにはトレーラーのみが許可されます。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 ダイレクトパラメータを有効にする必要があります。また、gPRC 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オプションを有効にする

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

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

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

gRPCエンドツーエンド構成により、グローバルバックエンドhttp2が有効になります

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

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

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

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

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

gRPC 構成バインドサービス負荷分散仮想サーバー

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