Citrix ADC

具有响应者策略的grPC

带响应程序策略配置的GrPC解释了Citrix ADC设备如何通过HTTP / 2协议对GrPC请求提供不同的响应。当用户请求网站主页时,您可能希望提供不同的主页,具体取决于每个用户所在的位置或用户使用的浏览器。

下图显示了交互的组件。

具有响应者策略的grPC

  1. 在设备上启用响应程序功能。
  2. 配置响应程序操作以生成自定义响应、将请求重定向到其他网页或重置连接。
  3. 配置响应程序策略以确定必须对其采取操作的gRPC请求(流量)。
  4. 将响应程序策略绑定到负载平衡虚拟服务器,以检查流量是否与策略表达式匹配。
  5. 通过使用响应者策略,您可以根据grPC状态代码执行以下操作。

使用CLI使用响应程序策略配置grPC呼叫终止

要使用响应程序策略配置grPC呼叫终止,您必须完成以下步骤:

  1. 启用响应者功能
  2. 添加响应者操作
  3. 添加响应者策略并关联响应者操作
  4. 将响应程序策略绑定到负载平衡虚拟服务器

启用响应者功能

要使用响应程序功能,必须首先启用它。

在命令提示符下,键入:

使ns响应者

添加响应者操作

启用该功能后,您必须根据后端服务器返回的状态码配置响应程序操作以处理gRPC响应。

在命令提示符下,键入:

添加应答动作<名称> <类型>

示例:

添加响应器动作grpc-act响应:“HTTP/1.1 200 OK\r\nServer: NS-Responder\r\nContent-Type:application/grpc\r\ngrpc-status: 12\r\ngrpc-message: Not Implemented\r\n\r\n”+“Method:”+ HTTP. req。URL+“没有实现。”

添加响应程序策略

配置响应程序操作后,您必须接下来配置响应程序策略以选择思杰ADC设备必须响应的GRPC请求。

在命令提示符下,键入:

add responder policy []-appFlowaction 示例:

添加响应器策略grpc- respr -pol1 HTTP.REQ.URL.NE(" /helloworld.Greeter/SayHello ") grpc-act

绑定响应程序策略以平衡虚拟服务器

要使策略生效,必须使用gRPC服务将其绑定到负载平衡虚拟服务器。

在命令提示符下,键入:

bind responder global [ [-type ] [-invoke ( )]

示例:

bind lb vserver lb-grpc svc-grpc -policyName grpc- respo -pol1 -priority 100

有关响应者策略的更多信息,请参阅响应程序策略主题。

匹配grPC协议缓冲区字段的策略表达式

Citrix ADC设备在grPC配置中支持以下策略表达式:

  • grPC协议缓冲区字段访问。任意GRPC API调用将消息字段编号与新的策略表达式匹配。在PI配置中,匹配只使用“字段编号”和“API路径”完成。

  • grPC标头过滤。GRPC的“HttpProfile”参数用于调整GRPC解析的默认行为(包括GRPC策略表达式)以下参数适用于GRPC策略表达式:

    • grpClength划界。默认情况下,它处于启用状态,并希望协议缓冲区显示长度分隔的消息。

    • grpCholdLimit。默认值为 131072。它是以字节为单位的最大协议缓冲区消息大小。它也是最大字符串长度和最大”字节”字段长度。

使用CLI配置grPC高级策略表达式

在命令提示符下,键入:

设置ns httpProfile <名称> -http2(启用|禁用)-gRPCLengthDelimitation(启用|禁用)-gRPCHoldLimit < int >

示例:

set ns httpProfile http2gRPC -http2 ENABLED - grpclengthdelimiting ENABLED -gRPCHoldLimit 131072

使用GUI配置grPC标头过滤参数

  1. 导航到系统 > 配置文件,然后单击HTTP配置文件

  2. 创建HTTP配置文件页面上,向下滚动到HTTP / 3部分,选择grPC长度分界

    grPC长度划界

以下策略表达式示例显示了消息 5、子消息 4 和字段 3 中的值。它是一个32位整数等于2。

http.req.body (1000) .grpc.message (5) .message (4) .int32 (3) .eq (2)

添加了以下策略表达式,用于按数字匹配grPC协议缓冲区消息字段:

  • 消息
  • 双重的
  • 浮动
  • int32
  • int64
  • uint32
  • uint64
  • sint64
  • SINT32
  • fixed32
  • fixed64
  • sfixed32
  • sfixed64
  • 保龄球
  • 字符串
  • 枚举
  • 字节

API路径匹配

当使用多个API时,API路径匹配用于匹配正确的grPC API调用。匹配API路径,可以在HTTP请求的:路径的伪标头中找到。

示例:

http.req.header(“路径”):.eq(“acme.inventory.v1 / ListBooks”)
具有响应者策略的grPC