Citrix ADC

grpc桥接

当客户端通过HTTP / 1.1协议发送请求时,Citrix ADC设备支持通过HTTP / 1.1协议桥接gRPC请求,这符合通过HTTP / 2协议的gRPC服务器。同样,在反向桥接中,设备通过HTTP / 2协议接收客户端gRPC请求,并根据HTTP / 1.1协议的gRPC服务器为gRPC请求执行反向桥接。

GRPC桥接的工作管理

在这这种下,Citrix ADC设备可在HTTP / 1.1连接上接收的GRPC内容,然后通过http / 2将其其到后端grpc服务服务。

grPC端到端配置功能图

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

  1. 发送gRPC请求时,Citrix ADC设备将检查连接是否为HTTP / 1.1且内容类型是应用程序/ grpc.HTTP / 1.1请求将转换为以下伪标头。
  2. 如内容类型标头所示,在HTTP / 1.1。连接上收到gRPC请求后,ADC设备会通过HTTP / 2将请求转换为gRPC,如下所示:
:method: method -name in HTTP/1.1 request:path: path is HTTP/1.1 request content-type: application/grpc 
  1. 根据策略评估,负载平衡虚拟服务器(将gRPC服务绑定到它)终止请求或通过HTTP / 2帧将其转发到后端gRPC服务器。
  2. 在从GrPC服务器接收HTTP / 2连接上的响应后,设备会缓冲,直到收HTTP / 2拖到车,然后检查GrPC状态代码。如果GrPC错误状态为非零,设备将查找映射HTTP状态代码并发送合适的HTTP / 1.1错误响应。

使用CLI配置GRPC桥接

要配置grPC桥接,必须完成以下步骤:

  1. 在HTTP / 2和HTTP / 2直接启用的情况下添加HTTP配置文件
  2. 在HTTP函数中使用全局后端http / 2支持
  3. 添加SSL / HTTP类型的负载平衡虚拟服务器并设置HTTP配置文件
  4. 为grpc端点加加服务设置设置http配置文库
  5. 将gRPC端点服务绑定到负载平衡虚拟服务器
  6. 将gRPC状态码映射到HTTP响应以获得非零gRPC状态
  7. 按时间和/或大小配置grPC缓冲

在启用HTTP / 2和HTTP / 2直接启用的情况下添加HTTP配置文件

要开始配置,必须在HTTP配置文件中启用HTTP / 2功能。如果客户端发送HTTP 1.1请求,设备会桥接请求并将其转发到后端服务器。

在命令提示符下,键入:

add ns httpProfile -http2 (ENABLED | DISABLED) [- http2direct (ENABLED | DISABLED)]

示例:

add ns httpProfile http2gRPC -http2Direct ENABLED -http2 ENABLED

在HTTP函数中使用全局后端http / 2支持

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

在命令提示符下,键入:

设置nshttpparam -http2ServerSide(ON | OFF)

示例:

设置ns httpParam -http2ServerSide ON

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

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

在命令提示符下,键入:

添加lb vserver [(@ )] [-httpProfileName ]

示例:

add lb vserver lb-grpc HTTP 10.10.10.10 80 -httpProfileName http2gRPC . add lb vserver lb-grpc HTTP 10.10.10.10

注意:如果如果使用的是ssl类型的负载平衡仪器,则则绑定仪器证书。有关何信息,请参阅绑定服务器证书

为grpc端点加加服务设置设置http配置文库

使用Citrix ADC命令界面添加带HTTP配置文件的gRPC服务。

在命令提示符下,键入:

添加服务|[-httpProfileName]

示例:

add service svc-grpc 10.10.10.10 HTTP 80 -httpProfileName http2gRPC . add service svc-grpc

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

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

在命令界面,键入:

绑定lb vserver

示例:

绑定LB VServer LB-GRPC SVC-GRPC

将gRPC状态码映射到HTTP / 1.1响应中的HTTP状态码

在gRPC桥接场景中,gRPC服务使用gRPC状态码来响应请求。设备将grPC状态代码映射到相应的HTTP响应代码和原因短语。映射是根据下面提供的表格完成的。Citrix ADC设备在向客户端发送 HTTP/1.1 响应时会发送 HTTP 状态代码和原因短语。

gRPC状态代码 HTTP响应状态码 HTTP响应原因短语
好吧= 0 200 正式
取消= 1 499
未知= 2 500 内部服务器错误
INVALID_ARGUMENT = 3 400 请求错误
DEADLINE_EXCEEDED = 4 504 网关超时
NOT_FOUND = 5 404
ALREADY_EXISTS = 6 409 冲突
PERMISSION_DENIED = 7 403 禁止
未经身份验证的= 16 401 未授权
RESOURCE_EXHAUSTED = 8 429
FAILED_PRECONDITION = 9 400 请求错误
流产= 10 409 冲突
OUT_OF_RANGE = 11 400 请求错误
未实现的= 12 501 未实现
内部= 13 500 内部服务器错误
用时= 14 503 服务不可用
数据丢失=15 500 内部服务器错误

按时间和/或大小配置grPC缓冲

Citrix ADC设备会缓冲来自后端服务器的gRPC响应,直到收到响应拖车。这打破了双向gRPC调用。此外,如果gRPC响应很大,它会消耗大量内存来完全缓冲响应。为了解决此问题,gRPC桥接配置已增强,以根据时间和/或大小限制缓冲。如果缓冲区大小或时间限制超过阈值,则设备将停止缓冲并将响应转发给客户端,即使触发任何一个限制(在配置的缓冲区大小内未收到拖车或发生配置的超时)。因此,配置的策略及其表达式(基于grpc-status代码)无法按预期工作。

要通过CLI按时间和/或大小限制gRPC缓冲,您可以配置何时添加新的HTTP配置文件或在修改现有配置文件时进行配置。

在命令提示符下,键入:

添加ns httpProfile http2gRPC [-grpcHoldLimit ] [-grpcHoldTimeout ]

设置ns httpProfile http2gRPC [-grpcHoldLimit ] [-grpcHoldTimeout ]

其中,

grpcholdlimit。在收到拖车之前,允许缓冲 gRPC 数据包的最大大小(字节)。您可以同时配置参数和任何参数。

默认值:131072 最小值:0 最大值:33554432

grpcholdtimeout。在收到拖车之前允许缓冲 gRPC 数据包的最长时间(以毫秒为单位)。该值应为 100 的倍数。 默认值:1000 最小值:0 最大值:180000

示例:

添加httpprofile http2gRPC -grpcholdlimit 1048576 -grpcholdtimeout 5000设置httpprofile http2gRPC -grpcholdlimit 1048576 -grpcholdtimeout 5000

使用GUI配置grPC桥接

用Citrix ADC GUI配置GRPC桥接。

在HTTP / 2和HTTP / 2直接启用的情况下添加HTTP配置文件

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

gRPC桥接添加HTTP配置文件与http2参数

在HTTP函数中使用全局后端http / 2支持

  1. 导航到”“>”系统设置“>”HTTP参数”。
  2. 在“配置HTTP参数”页中,选择”服务器端上的HTTP / 2”选项。
  3. 单击好吧(确定)。

GRPC桥桥接全球http / 2

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

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

grPC桥接全局后端 HTTP/2启用负载均衡

为grpc端点加加服务设置设置http配置文库

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

grPC桥接添加grPC端点的服务

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

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

为gRPC端点提供的gRPC桥接绑定服务

使用GUI按时间和大小配置grPC缓冲

  1. 导航到系统 > 配置文件,然后单击HTTP配置文件
  2. 在HTTP配置文件中选择HTTP / 2
  3. 在“配置HTTP配置文件“页中,设置以下数:

    1. grpcholdtimeout。输入在收到收到车之外缓冲grpc数码的时间(以毫秒为单位)。
    2. grpcholdLimit。输入最大大小(以字节为单位)以缓冲gRPC数据包,直到收到拖车。
  4. 单击确定关闭

gRPC按时间和大小进行桥接缓冲

有关绑定服务和负载平衡虚拟服务器的详细GUI过程,请参阅负载平衡主题。

grpc桥接