Citrix ADC

gRPC reverse bridging

在这种情况下,Citrix ADC 设备无缝桥接通过 HTTP/2 连接接收到的 GRPC 内容,并通过 HTTP/1.1 将其转发到后端 GRPC 服务器。

反向桥接的工作原理

下图显示了 GRPC 桥接配置中的组件如何彼此交互。

GrPC 端到端配置功能图

  1. 客户端在 HTTP/2 连接上发送 GrPC 请求,并在 HTTP/2 帧和原始 Buf 有效负载中使用 GrPC 头。
  2. 根据策略评估,负载平衡虚拟服务器(与 GrPC 服务绑定)通过 HTTP/1.1 连接转换请求并转发到后端服务器。
  3. 在接收 HTTP/1.1 响应时,如果响应中没有 grpc 状态代码,ADC 会从 HTTP 响应代码中获得 grpc 状态大小写。
  4. 然后,设备将 GRPC 标头插入 HTTP/2 拖车中,然后再将响应转发给客户端。

使用 CLI 配置 GRPC 反向桥接

要配置 GRPC 反向桥接,您必须完成以下步骤:

  • 添加 HTTP 配置文件 1,并直接启用 HTTP/2 和 HTTP/2,用于负载平衡虚拟服务器
  • 在后端服务器禁用 HTTP/2 的情况下添加 HTTP 配置文件 2
  • 添加 SSL/HTTP 类型的负载平衡虚拟服务器并设置为 HTTP 配置文件 1
  • 为 GRPC 端点添加服务并设置为 HTTP 配置文件 2
  • 为 GRPC 端点绑定服务以负载平衡虚拟服务器
  • 如果响应没有 grpc 状态代码,则将 HTTP 状态代码映射到 GrPC 状态代码

添加 HTTP 配置文件 1,并直接启用 HTTP/2 和 HTTP/2,用于负载平衡虚拟服务器

要开始反向桥接配置,必须添加两个 HTTP 配置文件。一个配置文件用于为 GRPC 客户端请求启用 HTTP/2,另一个配置文件用于禁用非 GRPC 服务器响应的 HTTP/2。

在命令提示窗口中,键入:

add ns httpProfile <name> - http2 ( ENABLED | DISABLED ) [-http2Direct ( ENABLED | DISABLED )]

示例:

add ns httpProfile profile1 –http2 ENABLED -http2Direct ENABLED

在后端服务器禁用 HTTP/2 的情况下添加 HTTP 配置文件 2

使用 Citrix ADC 命令行禁用 HTTP 配置文件上的 HTTP/2 支持以进行后端服务器响应。

在命令提示窗口中,键入: add ns httpProfile <name> - http2 ( ENABLED | DISABLED ) [-http2Direct ( ENABLED | DISABLED )]

示例:

add ns httpProfile profile2 –http2 DISABLED http2Direct DISABLED

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

使用 Citrix ADC 命令界面添加负载平衡虚拟服务器。

在命令提示窗口中,键入:

add lb vserver <name> <service type> [(<IP address>@ <port>)] [-httpProfileName <string>]

示例:

add lb vserver lb-grpc HTTP 10.10.10.10 80 -httpProfileName profile1

注意:

如果使用 SSL 类型的负载平衡虚拟服务器,则必须绑定服务器证书。有关详细信息,请参阅绑定服务器证书主题。

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

使用 Citrix ADC 命令界面添加带有 GRPC 端点的服务并设置 HTTP 配置文件 2。

在命令提示窗口中,键入:

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

示例:

add service svc-grpc 10.10.10.11 HTTP 80 -httpProfileName profile2

为 GRPC 端点绑定服务以负载平衡虚拟服务器

使用 Citrix ADC 命令界面将 GRPC 服务绑定到负载平衡虚拟服务器。

在命令界面,键入:

bind lb vserver <name> <serviceName>

示例:

bind lb vserver lb-grpc svc-grpc

将 HTTP 响应代码映射到 GrPC 状态代码

如果服务器未生成 GrPC 状态代码,Citrix ADC 设备将根据收到的 HTTP 响应生成合适的 GrPC 状态代码。状态代码列在下面的映射表中。

HTTP 响应状态代码 GrPC 状态代码
200 确定
400 INTERNAL = 13
403 PERMISSION_DENIED = 7
401 UNAUTHENTICATED = 16
429, 502, 503, 504 UNAVAILABLE = 14
404 UNIMPLEMENTED = 12

使用 GUI 配置 GRPC 反向桥接

添加 HTTP 配置文件 1,并直接启用 HTTP/2 和 HTTP/2,用于负载平衡虚拟服务器

  1. 导航到系统 > 配置文件,然后单击 HTTP 配置文件。
  2. 在 HTTP 配置文件 1 中启用 HTTP/2 选项。

GrPC 反向桥接添加带有 http2 参数的 http 配置文件

在后端服务器禁用 HTTP/2 的情况下添加 HTTP 配置文件 2

  1. 导航到系统 > 配置文件,然后单击 HTTP 配置文件
  2. 在 HTTP 配置文件中启用 HTTP/2 选项 2。
  3. 单击确定

GrPC 反向桥接全局后端 HTTP/2

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

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

grpc 反向桥接全局后端 HTTP/2 启用负载平衡

使用 GRPC 端点添加服务并设置为 HTTP 配置文件 2

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

grpc reverse bridging add service for grpc endpoint

为 GRPC 端点绑定服务以负载平衡虚拟服务器

  1. 导航到流量管理 > 负载平衡 > 虚拟服务器
  2. 单击添加为 GRPC 通信创建负载平衡虚拟服务器。
  3. 负载平衡虚拟服务器页中,单击服务服务组部分。
  4. 负载平衡虚拟服务器服务绑 定”页中,选择要绑定的 GRPC 服务。
  5. 单击关闭,然后单击完成

用于 GrPC 端点的 GrPC 反桥绑定服务

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

gRPC reverse bridging