Citrix ADC

grPC 端到端配置

gRPC 端到端配置的工作方式是通过 HTTP/2 协议从客户端发送 gRPC 请求,然后再次转发 GrPC 服务器响应的 gRPC 消息。

端到端 grPC 配置的工作原理

下图显示了 gRPC 配置在 Citrix ADC 设备中的工作原理。

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

从 GRPC 服务器到 Citrix ADC 设备的 GRPC 响应头示例

仅响应标题和预告片在单个 HTTP/2 头帧块中交付。预计大多数响应都有标题和预告片,但是对于产生即时错误的呼叫,允许 Tailers-Only。即使 HTTP 状态码正常,状态也必须在 Tailers 中发送。

```
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 直接参数。此外,如果需要使用通过 HTTP/2 明文的 gRPC,则必须启用 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 end-to-end configuration enables global back end http2

添加 SSL/HTTP 类型的负载平衡虚拟服务器并设置 HTTP 配置文件

  1. 导航到流量管理 > 负载平衡 > 虚拟服务器
  2. 单击添加为 GRPC 通信创建负载平衡虚拟服务器。
  3. 在“负载平衡虚拟服务器”页中,单击 概要文件。
  4. 在“配置文件”部分中,选择配置文件类型为 HTTP。
  5. 单击 确定 ,然后单击完成。

gRPC configuration adds service gRPC endpoint

为 grPC 端点添加服务并设置 HTTP 配置文件

  1. 导航到流量管理 > 负载平衡 > 服务
  2. 单击添加为 GRPC 通信创建应用程序服务器。
  3. 在“负载平衡服务”页面中,转到“概要文件”部分。
  4. 在配置文件下,为 GRPC 端点添加 HTTP 配置文件。
  5. 单击 确定 ,然后单击完成。

grPC 配置绑定服务负载平衡虚拟服务器

有关与负载平衡相关的详细 GUI 过程,请参阅 负载平衡 主题。

grPC 端到端配置