![[AIX Solaris HP-UX Linux Windows]](../images/dist.gif)
![[z/OS]](../images/ngzos.gif)
Intelligent Management:ODR 路由策略管理任务的规则
可以使用管理任务为随需应变路由器 (ODR) 路由策略配置 HTTP 或会话发起协议 (SIP) 规则。
使用以下规则来配置路由策略。这些规则是首选的路由策略配置方法。还可以配置多集群路由策略以用于故障转移和负载均衡。要了解有关此过程的更多信息,请阅读“配置随需应变路由器以进行多集群故障转移和负载均衡路由”。
使用 ODR 路由策略管理命令的主要优势包括:
- 可以使用表达式来确定受策略影响的请求。多集群路由方法允许仅按应用程序或应用程序 Web 模块进行过滤。
- 可以根据集群、服务器或 Web 模块来选择目标 (routingLocations)。多集群路由方法使您可以仅选择目标集群。
- 在命令中可以指定 SIP 或 HTTP 协议。
注: z/OS 当前不支持“会话启动协议”(SIP)。
addRoutingRule
使用 addRoutingRule 命令可添加路由策略规则。
注: 如果您拥有的现有应用程序版本定义了多集群路由策略,并安装一个新版本,那么必须为新版本创建新的多集群的路由规则。
必需参数
- -protocol:指定与规则关联的协议的名称。(字符串,必需)
- -priority:表示规则优先级的正整数值。零表示最高优先级。(字符串,必需)
- -expression:指定规则表达式。必须用双引号将表达式引起来。有关指定规则表达式参数的更多信息,请参阅 SIP 操作数主题和 HTTP 操作数主题。(字符串,必需)
- -actionType:指定与规则关联的操作的类型。(字符串,必需)以下列表包含与 HTTP 规则关联的操作类型:
- localResource:指定用于此路由规则的本地资源(文件)。
- permit:允许不以维护方式路由到服务器。
- redirect:将请求重定向到由 redirectURL 选项指定的 URL。
- reject:拒绝与由 errorcode 选项指定的返回代码一起路由。
- permitsticky:允许不以维护方式路由到服务器,并执行活动亲缘关系;也就是说,始终保留亲缘关系,即使不由应用程序请求也是如此。
- permitMM:仅允许以维护方式路由到服务器。
- permitstickyMM:仅允许以维护方式路由到服务器,并执行活动亲缘关系。
以下列表包含与 SIP 规则关联的操作类型:- permit:允许不以维护方式路由到服务器。
- reject:拒绝与由 errorcode 选项指定的返回代码一起路由。
可选参数
- -odrname:指定向其应用路由策略工作类的 ODR 的名称。仅在修改 ODR 或 Web 服务器时需要 -odrname 参数。
- -webservername:指定向其应用路由策略工作类的 Web 服务器的名称。
- -nodename:指定其上驻留 ODR 或 Web 服务器的节点的名称。仅在修改 ODR 或 Web 服务器时需要 -nodename 参数。
- -clustername :指定对其应用该规则的集群的名称。仅在修改 ODR 集群时需要 -clustername 参数。
- -dcname:指定对其应用该规则的动态集群的名称。仅在修改 ODR 集群时需要 -dcname 参数。
- -multiclusterAction:如果匹配多个路由位置集群,那么指定路由请求的方法。-multiclusterAction 参数适用于任何 permit actionType,且仅在 actionType 等于 permit、permitsticky、permitMM 或 permitstickyMM 时才是必需的。
- Failover:使用可用的服务器查找第一个集群,并在整个集群中负载均衡。未定义集群的动态生成列表的顺序。
- WRR:加权循环法负载均衡。对于 UDP 重新传输,将保持亲缘关系。
- WLOR:权重最小未完成的请求。
最佳实践: 推荐使用 WLOR 值,而不是 WRR 值。bprac
以下列表包含 SIP 规则的可能的值:- Failover:使用可用的服务器查找第一个集群,并在整个集群中负载均衡。未定义集群的动态生成列表的顺序。
- WRR:加权循环法负载均衡。对于 UDP 重新传输,将保持亲缘关系。
- Error:如果有多个集群,那么从其选择会抛出错误。预期使用一个(且只一个)集群。
- -routingLocations:指定要路由请求的目标位置的列表。-routingLocations 参数仅在 actionType 等于任何 permit actionType 时才是必需的。列表中的每个操作数遵循三个格式中的一个,并可包含通配符 * 值,它可与任何值匹配:
- cluster=cellName/clusterName
- server=cellName/nodeName/serverName
- module=cellName/applicationName/applicationVersion/moduleName
仅借助 SIP 路由规则,即可通过规则表达式选择性地定义目标集群。有效运算符是 AND、OR、NOT 和括号分组。根据以下列表进行格式化:- cluster=cellName/clusterName
- server=cellName/nodeName/serverName
- module=cellName/applicationName/applicationVersion/moduleName
- server maintenance mode=true or false
- node maintenance mode=true or false
- protocol=PROTO_VALUE:
- PROTO_SIP = sip
- SIP over TCP
- PROTO_SIPS = sips
- SIP over SSL and TCP
- PROTO_SIPU = sipu
- SIP over UDP
- PROTO_SIPX = sipx
- SIP over XMEM
注: 对于没有 applicationVersion 值的应用程序,将 applicationVersion 值留空:module=cellName/application//moduleName。 - -errorcode :用于拒绝请求的整数错误代码。-errorcode 参数仅在 actionType 等于 reject 时才是必需的。
- -localResource:可将此选项与 actionType 参数结合使用。如果使用带有 actionType 参数的 -localResource 选项,还请指定 localResourcePath 参数。localResourcePath 参数指示概要文件根目录的绝对路径或相对路径。
批处理方式示例用法
以下示例显示,一个单元中所有应用程序到指向另一个单元的通用服务器集群的故障转移:
- 使用 Jacl:
$AdminTask addRoutingRule {-webservername ws1 -nodename node1 -protocol HTTP -priority 0 -expression "request.method = 'getOperation'" -actionType permit -multiclusterAction Failover -routingLocations cluster=*/*}
- 使用 Jython 字符串:
AdminTask.addRoutingRule('-webservername ws1 -nodename node1 -protocol HTTP -priority 0 -expression "queryparm$userid = \'123\'" -actionType permit -multiclusterAction Failover -routingLocations "module=*/*/*/*,cluster=myCell/myFailoverGSCThatPointsToAnotherCell"')
对于新的应用程序版本,以下示例创建了多集群的路由策略:
- 使用 Jacl:
$AdminTask addRoutingRule {-odrname odr -nodename node1 -protocol HTTP -priority 0 -expression "uri LIKEIN {'/contextRoot','/contextRoot/%'}" -actionType permit -multiclusterAction Failover -routingLocations cluster=cellName/clusterName}
- 使用 Jython 字符串:
AdminTask.addRoutingRule('-odrname odr -nodename node1 -protocol HTTP -priority 0 -expression "uri LIKEIN (\'/contextRoot\',\'/contextRoot/%\')" -actionType permit -multiclusterAction Failover -routingLocations cluster=cellName/clusterName')
交互方式示例用法
- 使用 Jacl:
$AdminTask addRoutingRule {-interactive}
- 使用 Jython 字符串:
AdminTask.addRoutingRule ('[-interactive]')
changeRoutingDefaultRulesAction
使用 changeRoutingDefaultRulesAction 命令可更改规则的路由策略缺省操作。
必需参数
- -protocol:指定与规则关联的协议的名称。(字符串,必需)
- -actionType:指定与规则关联的操作的类型。(字符串,必需)以下列表包含与 HTTP 规则关联的操作类型:
- localResource:指定用于此路由规则的本地资源(文件)。
- permit:允许不以维护方式路由到服务器。
- redirect:将请求重定向到由 redirectURL 选项指定的 URL。
- reject:拒绝与由 errorcode 选项指定的返回代码一起路由。
- permitsticky:允许不以维护方式路由到服务器,并执行活动亲缘关系;也就是说,始终保留亲缘关系,即使不由应用程序请求也是如此。
- permitMM:仅允许以维护方式路由到服务器。
- permitstickyMM:仅允许以维护方式路由到服务器,并执行活动亲缘关系。
以下列表包含与 SIP 规则关联的操作类型:- permit:允许不以维护方式路由到服务器。
- reject:拒绝与由 errorcode 选项指定的返回代码一起路由。
可选参数
- -odrname:指定向其应用路由策略工作类的 ODR 的名称。仅在修改 ODR 或 Web 服务器时需要 -odrname 参数。
- -webservername:指定向其应用路由策略工作类的 Web 服务器的名称。
- -nodename:指定其上驻留 ODR 或 Web 服务器的节点的名称。仅在修改 ODR 或 Web 服务器时需要 -nodename 参数。
- -clustername :指定对其应用该规则的集群的名称。仅在修改 ODR 集群时需要 -clustername 参数。
- -dcname:指定对其应用该规则的动态集群的名称。仅在修改 ODR 集群时需要 -dcname 参数。
- -multiclusterAction:如果匹配多个路由位置集群,那么指定路由请求的方法。-multiclusterAction 参数适用于任何 permit 操作类型,且仅在 actionType 等于 permit、permitsticky、permitMM 或 permitstickyMM 时才是必需的。
- Failover:使用可用的服务器查找第一个集群,并在整个集群中负载均衡。未定义集群的动态生成列表的顺序。
- WRR:加权循环法负载均衡。对于 UDP 重新传输,将保持亲缘关系。
- WLOR:权重最小未完成的请求。
最佳实践: 推荐使用 WLOR 值,而不是 WRR 值。bprac
以下列表包含 SIP 规则的可能的值:- Failover:使用可用的服务器查找第一个集群,并在整个集群中负载均衡。未定义集群的动态生成列表的顺序。
- WRR:加权循环法负载均衡。对于 UDP 重新传输,将保持亲缘关系。
- Error:如果有多个集群,那么从其选择会抛出错误。预期使用一个(且只一个)集群。
- -routingLocations:指定要路由请求的目标位置的列表。-routingLocations 参数仅在 actionType 等于任何 permit 操作类型时才是必需的。列表中的每个操作数遵循三个格式中的一个,并可包含通配符 * 值,它可与任何值匹配:
- cluster=cellName/clusterName
- server=cellName/nodeName/serverName
- module=cellName/applicationName/applicationVersion/moduleName
仅借助 SIP 路由规则,即可通过规则表达式选择性地定义目标集群。有效运算符是 AND、OR、NOT 和括号分组。根据以下列表进行格式化:- cluster=cellName/clusterName
- server=cellName/nodeName/serverName
- module=cellName/applicationName/applicationVersion/moduleName
- server maintenance mode=true or false
- node maintenance mode=true or false
- protocol=PROTO_VALUE:
- PROTO_SIP = sip
- SIP over TCP
- PROTO_SIPS = sips
- SIP over SSL and TCP
- PROTO_SIPU = sipu
- SIP over UDP
- PROTO_SIPX = sipx
- SIP over XMEM
注: 对于没有 applicationVersion 值的应用程序,将 applicationVersion 值留空:module=cellName/application//moduleName。 - -errorcode :用于拒绝请求的整数错误代码。-errorcode 参数仅在 actionType 等于 reject 时才是必需的。
- -localResource:可将此选项与 actionType 参数结合使用。如果使用带有 actionType 参数的 -localResource 选项,还请指定 localResourcePath 参数。localResourcePath 参数指示概要文件根目录的绝对路径或相对路径。
批处理方式示例用法
- 使用 Jacl:
以下示例显示,单个集群到故障转移通用服务器集群的故障转移:
$AdminTask changeRoutingDefaultRulesAction {-webservername ws1 -nodename node1 -protocol HTTP -actionType permit -multiclusterAction Failover -routingLocations cluster=*/*}
- 使用 Jython 字符串:
AdminTask.changeRoutingDefaultRulesAction('[-webservername ws1 -nodename node1 -protocol HTTP -actionType permit -multiclusterAction Failover -routingLocations "cluster=myCell/myPrimaryCluster,cluster=myCell/myFailoverCluster"]')
交互方式示例用法
- 使用 Jacl:
$AdminTask changeRoutingDefaultRulesAction {-interactive}
- 使用 Jython 字符串:
AdminTask.changeRoutingDefaultRulesAction ('[-interactive]')
changeRoutingRuleAction
使用 changeRoutingRuleAction 命令可更改规则的路由策略操作。
必需参数
- -protocol:指定与规则关联的协议的名称。(字符串,必需)
- -priority:表示规则优先级的正整数值。零表示最高优先级。(字符串,必需)
可选参数
- -odrname:指定向其应用路由策略工作类的 ODR 的名称。仅在修改 ODR 或 Web 服务器时需要 -odrname 参数。
- -webservername:指定向其应用路由策略工作类的 Web 服务器的名称。
- -nodename:指定其上驻留 ODR 或 Web 服务器的节点的名称。仅在修改 ODR 或 Web 服务器时需要 -nodename 参数。
- -clustername :指定对其应用该规则的集群的名称。仅在修改 ODR 集群时需要 -clustername 参数。
- -dcname:指定对其应用该规则的动态集群的名称。仅在修改 ODR 集群时需要 -dcname 参数。
- -multiclusterAction:如果匹配多个路由位置集群,那么指定路由请求的方法。-multiclusterAction 参数适用于任何 permit actionTypes,且仅在 actionType 等于 permit、permitsticky、permitMM 或 permitstickyMM 时才是必需的。
- Failover:使用可用的服务器查找第一个集群,并在整个集群中负载均衡。未定义集群的动态生成列表的顺序。
- WRR:加权循环法负载均衡。对于 UDP 重新传输,将保持亲缘关系。
- WLOR:权重最小未完成的请求。
最佳实践: 推荐使用 WLOR 值,而不是 WRR 值。bprac
以下列表包含 SIP 规则的可能的值:- Failover:使用可用的服务器查找第一个集群,并在整个集群中负载均衡。未定义集群的动态生成列表的顺序。
- WRR:加权循环法负载均衡。对于 UDP 重新传输,将保持亲缘关系。
- Error:如果有多个集群,那么从其选择会抛出错误。预期使用一个(且只一个)集群。
- -routingLocations:指定要路由请求的目标位置的列表。-routingLocations 参数仅在 actionType 等于任何 permit actionType 时才是必需的。列表中的每个操作数遵循三个格式中的一个,并可包含通配符 * 值,它可与任何值匹配:
- cluster=cellName/clusterName
- server=cellName/nodeName/serverName
- module=cellName/applicationName/applicationVersion/moduleName
仅借助 SIP 路由规则,即可通过规则表达式选择性地定义目标集群。有效运算符是 AND、OR、NOT 和括号分组。根据以下列表进行格式化:- cluster=cellName/clusterName
- server=cellName/nodeName/serverName
- module=cellName/applicationName/applicationVersion/moduleName
- server maintenance mode=true or false
- node maintenance mode=true or false
- protocol=PROTO_VALUE:
- PROTO_SIP = sip
- SIP over TCP
- PROTO_SIPS = sips
- SIP over SSL and TCP
- PROTO_SIPU = sipu
- SIP over UDP
- PROTO_SIPX = sipx
- SIP over XMEM
注: 对于没有 applicationVersion 值的应用程序,将 applicationVersion 值留空:module=cellName/application//moduleName。 - -errorcode :用于拒绝请求的整数错误代码。-errorcode 参数仅在 actionType 等于 reject 时才是必需的。
- -localResource:可将此选项与 actionType 参数结合使用。如果使用带有 actionType 参数的 -localResource 选项,还请指定 localResourcePath 参数。localResourcePath 参数指示概要文件根目录的绝对路径或相对路径。
批处理方式示例用法
- 使用 Jacl:
$AdminTask changeRoutingRuleAction {-webservername ws1 -nodename node1 -protocol HTTP -priority 0 -multiclusterAction Failover -routingLocations cluster=*/*
- 使用 Jython 字符串:
AdminTask.changeRoutingRuleAction('[-webservername ws1 -nodename node1 -protocol HTTP -priority 0 -multiclusterAction WRR -routingLocations "cluster=myCell/*"]')
交互方式示例用法
- 使用 Jacl:
$AdminTask changeRoutingRuleAction {-interactive}
- 使用 Jython 字符串:
AdminTask.changeRoutingRuleAction ('[-interactive]')
changeRoutingRuleExpression
使用 changeRoutingRuleExpression 命令可更改路由策略规则表达式。
必需参数
- -protocol:指定与规则关联的协议的名称。(字符串,必需)
- -priority:表示规则优先级的正整数值。零表示最高优先级。(字符串,必需)
- -expression:指定规则表达式。必须用双引号将表达式引起来。有关指定规则表达式参数的更多信息,请参阅 SIP 操作数主题和 HTTP 操作数主题。(字符串,必需)
可选参数
- -odrname:指定向其应用路由策略工作类的 ODR 的名称。仅在修改 ODR 或 Web 服务器时需要 -odrname 参数。
- -webservername:指定向其应用路由策略工作类的 Web 服务器的名称。
- -nodename:指定其上驻留 ODR 或 Web 服务器的节点的名称。仅在修改 ODR 或 Web 服务器时需要 -nodename 参数。
- -clustername :指定对其应用该规则的集群的名称。仅在修改 ODR 集群时需要 -clustername 参数。
- -dcname:指定对其应用该规则的动态集群的名称。仅在修改 ODR 集群时需要 -dcname 参数。
批处理方式示例用法
- 使用 Jacl:
$AdminTask changeRoutingRuleExpression {-odrname odr -nodename node1 -protocol SIP -priority 0 -expression "request.method = 'getOperation0'"}
- 使用 Jython 字符串:
AdminTask.changeRoutingRuleExpression('[-odrname odr -nodename node1 -protocol HTTP -priority 0 -expression "queryparm$userid = \'123\'"]')
交互方式示例用法
- 使用 Jacl:
$AdminTask changeRoutingRuleExpression {-interactive}
- 使用 Jython 字符串:
AdminTask.changeRoutingRuleExpression ('[-interactive]')
changeRoutingRulePriority
使用 changeRoutingRulePriority 命令可更改路由策略规则优先级。
必需参数
- -protocol:指定与规则关联的协议的名称。(字符串,必需)
- -priority:表示规则优先级的正整数值。零表示最高优先级。(字符串,必需)
- -expression:指定规则表达式。必须用双引号将表达式引起来。有关指定规则表达式参数的更多信息,请参阅 SIP 操作数主题和 HTTP 操作数主题。(字符串,必需)
可选参数
- -odrname:指定向其应用路由策略工作类的 ODR 的名称。仅在修改 ODR 或 Web 服务器时需要 -odrname 参数。
- -webservername:指定向其应用路由策略工作类的 Web 服务器的名称。
- -nodename:指定其上驻留 ODR 或 Web 服务器的节点的名称。仅在修改 ODR 或 Web 服务器时需要 -nodename 参数。
- -clustername :指定对其应用该规则的集群的名称。仅在修改 ODR 集群时需要 -clustername 参数。
- -dcname:指定对其应用该规则的动态集群的名称。仅在修改 ODR 集群时需要 -dcname 参数。
批处理方式示例用法
- 使用 Jacl:
$AdminTask changeRoutingRulePriority {-odrname odr -nodename node1 -protocol SIP -priority 0 -expression "request.method = 'getOperation0'"}
- 使用 Jython 字符串:
AdminTask.changeRoutingRulePriority('[-odrname odr -nodename node1 -protocol HTTP -priority 1 -expression "queryparm$userid = \'123\'"]')
交互方式示例用法
- 使用 Jacl:
$AdminTask changeRoutingRulePriority {-interactive}
- 使用 Jython 字符串:
AdminTask.changeRoutingRulePriority ('[-interactive]')
createRoutingRules
使用 createRoutingRules 命令可创建路由策略规则列表。
必需参数
- -protocol:指定与规则关联的协议的名称。(字符串,必需)
可选参数
- -odrname:指定向其应用路由策略工作类的 ODR 的名称。仅在修改 ODR 或 Web 服务器时需要 -odrname 参数。
- -webservername:指定向其应用路由策略工作类的 Web 服务器的名称。
- -nodename:指定其上驻留 ODR 或 Web 服务器的节点的名称。仅在修改 ODR 或 Web 服务器时需要 -nodename 参数。
- -clustername :指定对其应用该规则的集群的名称。仅在修改 ODR 集群时需要 -clustername 参数。
- -dcname:指定对其应用该规则的动态集群的名称。仅在修改 ODR 集群时需要 -dcname 参数。
批处理方式示例用法
- 使用 Jacl:
$AdminTask createRoutingRules {-odrname odr -nodename node1 -protocol SIP}
- 使用 Jython 字符串:
AdminTask.createRoutingRules('-odrname odr -nodename node1 -protocol SIP')
交互方式示例用法
- 使用 Jacl:
$AdminTask createRoutingRules {-interactive}
- 使用 Jython 字符串:
AdminTask.createRoutingRules ('[-interactive]')
listRoutingRules
使用 listRoutingRules 命令可列示路由策略规则。
必需参数
- -protocol:指定与规则关联的协议的名称。(字符串,必需)
可选参数
- -odrname:指定向其应用路由策略工作类的 ODR 的名称。仅在修改 ODR 或 Web 服务器时需要 -odrname 参数。
- -webservername:指定向其应用路由策略工作类的 Web 服务器的名称。
- -nodename:指定其上驻留 ODR 或 Web 服务器的节点的名称。仅在修改 ODR 或 Web 服务器时需要 -nodename 参数。
- -clustername :指定对其应用该规则的集群的名称。仅在修改 ODR 集群时需要 -clustername 参数。
- -dcname:指定对其应用该规则的动态集群的名称。仅在修改 ODR 集群时需要 -dcname 参数。
批处理方式示例用法
- 使用 Jacl:
$AdminTask listRoutingRules {-odrname odr -nodename node1 -protocol SIP}
- 使用 Jython 字符串:
AdminTask.listRoutingRules('-odrname odr -nodename node1 -protocol SIP')
交互方式示例用法
- 使用 Jacl:
$AdminTask listRoutingRules {-interactive}
- 使用 Jython 字符串:
AdminTask.listRoutingRules ('[-interactive]')
removeRoutingRule
使用 removeRoutingRule 命令可移除路由策略规则。
必需参数
- -protocol:指定与规则关联的协议的名称。(字符串,必需)
- -priority:表示规则优先级的正整数值。零表示最高优先级。(字符串,必需)
- -expression:指定规则表达式。必须用双引号将表达式引起来。有关指定规则表达式参数的更多信息,请参阅 SIP 操作数主题和 HTTP 操作数主题。(字符串,必需)
可选参数
- -odrname:指定向其应用路由策略工作类的 ODR 的名称。仅在修改 ODR 或 Web 服务器时需要 -odrname 参数。
- -webservername:指定向其应用路由策略工作类的 Web 服务器的名称。
- -nodename:指定其上驻留 ODR 或 Web 服务器的节点的名称。仅在修改 ODR 或 Web 服务器时需要 -nodename 参数。
- -clustername :指定对其应用该规则的集群的名称。仅在修改 ODR 集群时需要 -clustername 参数。
- -dcname:指定对其应用该规则的动态集群的名称。仅在修改 ODR 集群时需要 -dcname 参数。
批处理方式示例用法
- 使用 Jacl:
$AdminTask removeRoutingRule {-odrname odr -nodename node1 -protocol SIP -expression "request.method = 'getOperation'"}
- 使用 Jython 字符串:
AdminTask.removeRoutingRule('[-odrname odr -nodename node1 -protocol HTTP -expression "queryparm$userid = \'123\'"]')
交互方式示例用法
- 使用 Jacl:
$AdminTask removeRoutingRule {-interactive}
- 使用 Jython 字符串:
AdminTask.removeRoutingRule ('[-interactive]')