ADC

gRPC 反向桥接

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

反向桥接的工作原理

下图显示了组件在 gRPC 桥接配置中如何相互交互。

gRPC 端到端配置功能图

  1. 客户端在 HTTP/2 连接上发送 gRPC 请求,gRPC 头文件位于 HTTP/2 帧和 proto-buf 负载中。
  2. 根据策略评估,负载平衡虚拟服务器(绑定了 gRPC 服务)通过 HTTP/1.1 连接转换请求并将其转发到后端服务器。
  3. 在收到 HTTP/1.1 响应时,如果响应中没有 grpc-status 代码,则 ADC 会从 HTTP 响应代码中推导出 grpc 状态大小写。
  4. 然后,设备将 gRPC 标头插入 HTTP/2 预告片中,然后将响应转发给客户端。

使用 CLI 配置 gRPC 反向桥接

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

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

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

要开始反向桥接配置,必须添加两个 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

使用 NetScaler 命令行禁用 HTTP/2 对后端服务器响应的 HTTP/2 支持。

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

示例:

add ns httpProfile profile2 –http2 DISABLED http2Direct DISABLED

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

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

在命令提示符下,键入:

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

使用 NetScaler 命令接口添加带有 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 端点的服务绑定到负载平衡虚拟服务器

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

在命令界面中,键入:

bind lb vserver <name> <serviceName>

示例:

bind lb vserver lb-grpc svc-grpc

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

如果服务器未生成 gRPC 状态代码,则 NetScaler 设备会根据收到的 HTTP 响应生成合适的 gRPC 状态代码。状态码在下面的映射表中列出。

HTTP 响应状态码 gRPC 状态码
200 正常
400 内部 = 13
403 PERMISSION_DENIED = 7
401 UNAUTHENTICATED = 16
429, 502, 503, 504 UNAVAILABLE = 14
404 UNIMPLEMENTED = 12

使用 GUI 配置 gRPC 反向桥接

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

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

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

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

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

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

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

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

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

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

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

gRPC 反向桥接