Citrix ADC

使用响应器策略的gRPC

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

下图显示了交互的组件。

具有响应器策略的gRPC

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

该任务指导管理员通过CLI配置gRPC呼叫终止与responder策略

配置使用responder策略的gRPC呼叫终止,您必须完成以下步骤:

  1. 启用响应器特性
  2. 添加响应器操作
  3. 添加响应器策略和关联响应器操作
  4. 将响应器策略绑定到负载均衡虚拟服务器

启用响应器特性

要使用响应器特性,必须首先启用它。

在命令提示符下,输入:

启用ns响应器

添加响应器操作

启用该特性后,必须根据后端服务器返回的状态代码配置响应器操作以处理gRPC响应。

在命令提示符下,输入:

添加响应器动作<名称> <类型>

例子:

add responder action grpc-act respondwith“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+“没有实现。”

添加响应器策略

在配置响应器动作之后,接下来必须配置响应器策略,以选择Citrix ADC设备必须响应的gRPC请求。

在命令提示符下,输入:

add responder policy []-appFlowaction .使用实例例子:

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

将响应器策略绑定到负载均衡虚拟服务器

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

在命令提示符下,输入:

绑定响应器全局 [ [type ] [-invoke ( )]

例子:

绑定lb vserver lb-grpc svc-grpc -policyName grpc- esp-pol1 -priority 100

有关响应器策略的详细信息,请参见回答者的政策的话题。

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

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

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

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

    • gRPCLengthDelimitation。它在默认情况下是启用的,并期望协议缓冲区显示以长度分隔的消息。

    • gRPCHoldLimit。缺省值为131072。它是以字节为单位的最大协议缓冲区消息大小。它也是最大字符串长度和最大'字节'字段长度。

该任务指导管理员通过CLI配置gRPC高级策略表达式

在命令提示符下,输入:

set ns httpProfile  -http2 (ENABLED | DISABLED) -gRPCLengthDelimitation (ENABLED | DISABLED) -gRPCHoldLimit  . httpProfile  -http2 (ENABLED | DISABLED) -gRPCLengthDelimitation (ENABLED | DISABLED

例子:

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

通过图形化界面配置gRPC头过滤参数

  1. 导航到System >配置文件并点击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请求中的':path '伪头中找到。

例子:

http.req.header(“路径”):.eq(“acme.inventory.v1 / ListBooks”)
使用响应器策略的gRPC