For distributed platformsFor z/OS platforms[17.0.0.1 and later]

Liberty 动态路由选择的路由规则

您可以在 Liberty 动态路由选择中使用路由规则,定制用于处理特定请求的服务器。

缺省情况下,动态路由选择会在可处理请求的所有服务器中均衡装入请求。要覆盖缺省行为,您必须配置路由规则。路由规则可以将请求路由到特定服务器资源,重新定向请求或拒绝请求。

  1. 如果将相同应用程序部署到两个不同集群,那么可使用路由规则将请求从一组特定客户机 IP 地址定向到其中一个集群,将剩余请求定向到另一个集群。
  2. 如果在多个集合体中部署相同应用程序,那么可使用路由规则,仅将请求发送到第一个集合体;如果第一个集合体中没有可用服务器,将请求发送到第二个集合体中的服务器。
要点: 路由到多个集合体时,仅可从其中一个集合体读取路由规则。Web 服务器智能管理仅从 plugin-cfg.xml 文件中 <IntelligentManagement> 节的 RoutingRulesConnectorClusterName 属性指定的集合体读取路由规则。RoutingRulesConnectorClusterName 属性的值使用集合体的名称进行初始化,此集合体是通过创建了 plugin-cfg.xml 文件的 dynamicRouting 命令的 cllectives 选项指定的第一个集合体。 将路由规则添加到 plugin-cfg.xml 文件中 <IntelligentManagement> 节的 RoutingRulesConnectorClusterName 属性指定的集合体中集合体控制器。

匹配表达式和操作

路由规则提供匹配表达式和操作。匹配表达式适用于每个请求。请求与匹配表达式匹配时,会针对此请求执行规则指定的操作。匹配表达式检查请求的多个属性,例如,URI、头、cookie、参数和客户机 IP 地址。采取的操作为拒绝、重定向或允许请求。

每个路由规则都分配了一个顺序编号。从最低顺序编号到最高顺序编号评估规则。与请求匹配的第一个规则确定如何处理请求。如果没有匹配的规则,那么会在可处理请求的所有可用服务器中均衡请求。

如果规则的操作类型是拒绝请求,那么指定适用 HTTP 返回码。拒绝代码必须为 Web 服务器支持的其中一种拒绝代码。

如果规则的操作类型是重定向请求,那么指定重定向位置。

如果规则的操作类型是允许请求,那么指定可向其发送请求的目标。目标指定对请求进行负载均衡时要选择的包含所有服务器的集合。目标集中,仅使用可最佳处理请求的服务器。还可指定故障转移目标。仅当主要目标中的所有服务器不可用时,才使用故障转移目标中的服务器。可以将目标指定为集群或服务器。

缺省情况下,请求具有会话亲缘关系时,会基于亲缘关系选择服务器。如果找到亲缘关系服务器,那么不会使用路由规则。要启用路由规则以覆盖亲缘关系选择,可以将 overrideAffinity 属性添加到 server.xml 文件的 <routingRules> 元素。请参阅为 Liberty 动态路由选择配置路由规则

集群目标

使用集合体名称和集群名称指定集群目标。集群目标的任一部分均可使用通配符 (*)。例如,如果将集群目标指定为 cluster=collective1,*,那么可以使用 collective1 中任何集群内的服务器。如果将集群目标指定为 cluster=*,cluster1,那么可以使用任何集合体中 cluster1 内的服务器。

服务器目标

使用集合体名称、主机名、用户目录和服务器名称指定服务器目标。服务器目标的所有部分都可使用通配符。例如,如果将服务器目标指定为 server=collective1,*,那么可以使用 collective1 中的任何服务器。如果将服务器目标指定为 server=*,server1,那么可以使用任何集合体中的 server1。

路由规则评估

应用任何路由规则之前,Web 服务器智能管理确定一组最佳目标来处理请求。此组最佳目标是具有 Web 应用程序的服务器,这些应用程序的虚拟主机、上下文根和 servlet 映射与请求最佳匹配。路由规则可将用于路由的目标重定向到完整最佳目标集的子集。使用路由规则,导致无法选择原始最佳目标集之外的目标。

例如,假设存在以下条件:

  • ApplicationA 具有上下文根 /A/* 且安装在 clusterA 上。
  • ApplicationAB 具有上下文根 /A/B/* 且安装在 clusterAB 上。

在这些条件下,路由规则按如下所示评估请求:

  • 这两个应用程序都可处理请求 /A/B/myservlet。但是,由于相比 /A/* 上下文根,/A/B/* 上下文根与 /A/B/myservlet 更为匹配,因此针对 /A/B/myservlet 的请求始终路由到 clusterAB。
  • 可以使用与 /A/B/myservlet 的请求匹配的路由规则,将目标限制为 clusterAB 中服务器子集,但无法用于选择 clusterA 中的服务器,clusterA 永远不会选作此请求的匹配项。

用于指示主题类型的图标 概念主题

文件名:cwlp_wve_routing_rules.html