ADC

gRPC 端到端配置

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

端到端 gRPC 配置的工作原理

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

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 服务器到 NetScaler 设备的 GRPC 响应头示例

Response-Headers和Trailers-Only 以单个 HTTP/2 HEADERS 帧块传输。预计大多数响应会同时包含标题和尾号,但允许对立即产生错误的调用使用 Trailers-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/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 支持

使用 NetScaler 命令行在服务器端全局启用 HTTP/2 支持。

在命令提示符下,键入:

set ns httpParam -http2ServerSide( ON | OFF )

示例:

set ns httpParam -http2ServerSide ON

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

要使用 NetScaler 命令界面添加负载平衡虚拟服务器,请执行以下操作:

在命令提示符下,键入:

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 配置文件

要使用 NetScaler 命令界面添加具有 HTTP 配置文件的 gRPC 服务: 在命令提示符处,键入:

add service <name> (<IP> | <serverName> ) <serviceType> <port> [-httpProfileName <string>]

示例: add service svc-grpc 10.10.10.10 HTTP 80 -httpProfileName http2gRPC

将 gRPC 端点服务绑定到负载平衡虚拟服务器

要使用 NetScaler 命令界面将 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 复选框。

在 HTTP 参数中启用全局后端 HTTP/2 支持

  1. 导航到“系统”>“设置”>“HTTP 参数”。
  2. 在 “ 配置 HTTP 参数 ” 页面中,选中 “ 服务器端的 HTTP/2” 复 选框。
  3. 单击确定

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

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

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

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

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

gRPC 端到端配置