Intelligent Management: rules for ODR routing policy administrative tasks
- Overview
- addRoutingRule
- changeRoutingDefaultRulesAction
- changeRoutingRuleAction
- changeRoutingRuleExpression
- changeRoutingRulePriority
- createRoutingRules
- listRoutingRules
- removeRoutingRule
Overview
Use the following rules to configure routing policies on the ODR proxy server.
addRoutingRule
Add a routing policy rule.
If we have an existing application edition with a defined multi-cluster routing policy, and we install a new edition, create a new multi-cluster routing policy for the new edition.
-protocol Name of the protocol to associate with a rule. (String, required) -priority Positive integer value representing the priority of a rule. Zero is the highest priority. (String, required) -expression Rule expression. Expression must be enclosed in double quotes. (String, required) -actionType Type of action to associate with a rule. (String, required)
localResource Local resource (file) to use for this routing rule. permit Permit routing to servers not in a maintenance mode. redirect Redirect the request to the URL specified by the redirectURL option. reject Reject routing with return code specified by the errorcode option. permitsticky Permit routing to servers not in maintenance mode and perform active affinity; that is, affinity is always preserved even when not requested by the application. permitMM Permit routing only to servers in maintenance mode. permitstickyMM Permit routing only to servers in maintenance mode and perform active affinity. permit SIP Rules. Permit routing to servers not in maintenance mode. reject SIP Rules. Reject routing with return code specified by the errorcode option. -odrname Name of the ODR to which the routing policy work class applies. Required only if we modify an ODR or a web server. -webservername Name of the web server to which the routing policy work class applies. -nodename Name of the node on which the ODR or web server resides. Required only if we modify an ODR or a web server. -clustername Name of the cluster to which the rule applies. Required only if we modify an ODR cluster. -dcname Name of the dynamic cluster to which the rule applies. Required only if we modify an ODR cluster. -multiclusterAction Method to route requests if multiple routing location clusters are matched. The -multiclusterAction parameter applies to any of the permit actionTypes, and is required only if actionType is equal to permit, permitsticky, permitMM, or permitstickyMM.
Failover Find the first cluster with an available server and load balance across that cluster. The order of a dynamically generated list of clusters is undefined. WRR Weighted Round Robin load balance. For UDP retransmission, maintain affinity. WLOR Weighted least outstanding request. The recommendation is to use the WLOR value instead of the WRR value.bprac
The following list contains the possible values for SIP rules:
Failover Find the first cluster with an available server and load balance across that cluster. The order of a dynamically generated list of clusters is undefined. WRR Weighted Round Robin load balance. For UDP retransmission, maintain affinity. Error If there are multiple clusters, to select from it throws an error. it expects one and only one cluster.
-routingLocations List of target locations to route requests. Required only if actionType is equal to any of the permit actionType. Each operand in the list follows one of three formats, and can contain a wildcard * value, which matches any value:
- cluster=cellName/clusterName
- server=cellName/nodeName/serverName
- module=cellName/applicationName/applicationVersion/moduleName
With SIP routing rules only, we can alternatively define target clusters through a rule expression. The valid operators are AND, OR, NOT and parenthetical grouping. Format according to the following list:
- 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
For applications that have no applicationVersion value, leave the applicationVersion value blank: module=cellName/application//moduleName.
-errorcode Integer error code to reject request. Required only if actionType is equal to reject. -localResource This option can be used in association with the actionType parameter. If we use the -localResource option with the actionType parameter, also specify the localResourcePath parameter. The localResourcePath parameter indicates the absolute or relative path to the profile root.
Batch mode example usage
Failover of all applications in a cell to a generic server cluster that points to another cell:
- Use Jacl:
$AdminTask addRoutingRule { -webservername ws1 -nodename node1 -protocol HTTP -priority 0 -expression "request.method = 'getOperation'" -actionType permit -multiclusterAction Failover -routingLocations cluster=*/* }- Use Jython string:
AdminTask.addRoutingRule(' -webservername ws1 -nodename node1 -protocol HTTP -priority 0 -expression "queryparm$userid = \'123\'" -actionType permit -multiclusterAction Failover -routingLocations "module=*/*/*/*,cluster=myCell/myFailoverGSCThatPointsToAnotherCell"')
The following example creates a multi-cluster routing policy for a new application edition:
- Use Jacl:
$AdminTask addRoutingRule { -odrname odr -nodename node1 -protocol HTTP -priority 0 -expression "uri LIKEIN {'/contextRoot','/contextRoot/%'}" -actionType permit -multiclusterAction Failover -routingLocations cluster=cellName/clusterName }Use Jython string: AdminTask.addRoutingRule ('-odrname odr -nodename node1 -protocol HTTP -priority 0 -expression "uri LIKEIN (\'/contextRoot\',\'/contextRoot/%\')" -actionType permit -multiclusterAction Failover -routingLocations cluster=cellName/clusterName')
Interactive mode example usage
- Use Jacl:
$AdminTask addRoutingRule {-interactive}
- Use Jython string:
AdminTask.addRoutingRule ('[-interactive]')
changeRoutingDefaultRulesAction
Change the routing policy default action for a rule.
-protocol Name of the protocol to associate with a rule. (String, required) -actionType Type of action to associate with a rule. (String, required)
Associate with HTTP rules:
localResource Local resource (file) to use for this routing rule. permit Permit routing to servers not in a maintenance mode. redirect Redirect the request to the URL specified by the redirectURL option. reject Reject routing with return code specified by the errorcode option. permitsticky Permit routing to servers not in maintenance mode and perform active affinity; that is, affinity is always preserved even when not requested by the application. permitMM Permit routing only to servers in maintenance mode. permitstickyMM Permit routing only to servers in maintenance mode and perform active affinity.
Associate with SIP rules:
permit Permit routing to servers not in maintenance mode. reject Reject routing with return code specified by the errorcode option.
-odrname Name of the ODR to which the routing policy work class applies. Required only if we modify an ODR or a web server. -webservername Name of the web server to which the routing policy work class applies. -nodename Name of the node on which the ODR or web server resides. Required only if we modify an ODR or a web server. -clustername Name of the cluster to which the rule applies. Required only if we modify an ODR cluster. -dcname Name of the dynamic cluster to which the rule applies. Required only if we modify an ODR cluster. -multiclusterAction Method to route requests if multiple routing location clusters are matched. The -multiclusterAction parameter applies to any of the permit action types, and is required only if actionType is equal to permit, permitsticky, permitMM, or permitstickyMM.
Failover Find the first cluster with an available server and load balance across that cluster. The order of a dynamically generated list of clusters is undefined. WRR Weighted Round Robin load balance. For UDP retransmission, maintain affinity. WLOR Weighted least outstanding request. The recommendation is to use the WLOR value instead of the WRR value.bprac
The following list contains the possible values for SIP rules:
Failover Find the first cluster with an available server and load balance across that cluster. The order of a dynamically generated list of clusters is undefined. WRR Weighted Round Robin load balance. For UDP retransmission, maintain affinity. Error If there are multiple clusters, to select from it throws an error. it expects one and only one cluster.
-routingLocations List of target locations to route requests. Required only if actionType is equal to any of the permit action types. Each operand in the list follows one of three formats, and can contain a wildcard * value, which matches any value:
- cluster=cellName/clusterName
- server=cellName/nodeName/serverName
- module=cellName/applicationName/applicationVersion/moduleName
With SIP routing rules only, we can alternatively define target clusters through a rule expression. The valid operators are AND, OR, NOT and parenthetical grouping. Format according to the following list:
- 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
For applications that have no applicationVersion value, leave the applicationVersion value blank: module=cellName/application//moduleName.
-errorcode Integer error code to reject request. Required only if actionType is equal to reject. -localResource This option can be used in association with the actionType parameter. If we use the -localResource option with the actionType parameter, also specify the localResourcePath parameter. The localResourcePath parameter indicates the absolute or relative path to the profile root.
Batch mode example usage
- Use Jacl:
The following examples shows a failover of a single cluster to the failover generic server cluster:
$AdminTask changeRoutingDefaultRulesAction { -webservername ws1 -nodename node1 -protocol HTTP -actionType permit -multiclusterAction Failover -routingLocations cluster=*/*}- Use Jython string:
AdminTask.changeRoutingDefaultRulesAction('[ -webservername ws1 -nodename node1 -protocol HTTP -actionType permit -multiclusterAction Failover -routingLocations "cluster=myCell/myPrimaryCluster,cluster=myCell/myFailoverCluster"]')
Interactive mode example usage
- Use Jacl:
$AdminTask changeRoutingDefaultRulesAction {-interactive}
- Use Jython string:
AdminTask.changeRoutingDefaultRulesAction ('[-interactive]')
changeRoutingRuleAction
Change a routing policy action for a rule.
-protocol Name of the protocol to associate with a rule. (String, required) -priority Positive integer value representing the priority of a rule. Zero is the highest priority. (String, required) -odrname Name of the ODR to which the routing policy work class applies. Required only if we modify an ODR or a web server. -webservername Name of the web server to which the routing policy work class applies. -nodename Name of the node on which the ODR or web server resides. Required only if we modify an ODR or a web server. -clustername Name of the cluster to which the rule applies. Required only if we modify an ODR cluster. -dcname Name of the dynamic cluster to which the rule applies. Required only if we modify an ODR cluster. -multiclusterAction Method to route requests if multiple routing location clusters are matched. The -multiclusterAction parameter applies to any of the permit actionTypes, and is required only if actionType is equal to permit, permitsticky, permitMM, or permitstickyMM.
Failover Find the first cluster with an available server and load balance across that cluster. The order of a dynamically generated list of clusters is undefined. WRR Weighted Round Robin load balance. For UDP retransmission, maintain affinity. WLOR Weighted least outstanding request. The recommendation is to use the WLOR value instead of the WRR value.bprac
The following list contains the possible values for SIP rules:
Failover Find the first cluster with an available server and load balance across that cluster. The order of a dynamically generated list of clusters is undefined. WRR Weighted Round Robin load balance. For UDP retransmission, maintain affinity. Error If there are multiple clusters, to select from it throws an error. it expects one and only one cluster.
-routingLocations List of target locations to route requests. Required only if actionType is equal to any of the permit actionTypes. Each operand in the list follows one of three formats, and can contain a wildcard * value, which matches any value:
- cluster=cellName/clusterName
- server=cellName/nodeName/serverName
- module=cellName/applicationName/applicationVersion/moduleName
With SIP routing rules only, we can alternatively define target clusters through a rule expression. The valid operators are AND, OR, NOT and parenthetical grouping. Format according to the following list:
- 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
For applications that have no applicationVersion value, leave the applicationVersion value blank: module=cellName/application//moduleName.
-errorcode Integer error code to reject request. Required only if actionType is equal to reject. -localResource This option can be used in association with the actionType parameter. If we use the -localResource option with the actionType parameter, also specify the localResourcePath parameter. The localResourcePath parameter indicates the absolute or relative path to the profile root.
Batch mode example usage
- Use Jacl:
$AdminTask changeRoutingRuleAction { -webservername ws1 -nodename node1 -protocol HTTP -priority 0 -multiclusterAction Failover -routingLocations cluster=*/*Use Jython string:
AdminTask.changeRoutingRuleAction('[-webservername ws1 -nodename node1 -protocol HTTP -priority 0 -multiclusterAction WRR -routingLocations "cluster=myCell/*"]')
Interactive mode example usage
- Use Jacl:
$AdminTask changeRoutingRuleAction {-interactive}
- Use Jython string:
AdminTask.changeRoutingRuleAction ('[-interactive]')
changeRoutingRuleExpression
Change a routing policy rule expression.
-protocol Name of the protocol to associate with a rule. (String, required) -priority Positive integer value representing the priority of a rule. Zero is the highest priority. (String, required) -expression Rule expression. The expression must be enclosed in double quotes. (String, required) -odrname Name of the ODR to which the routing policy work class applies. Required only if we modify an ODR or a web server. -webservername Name of the web server to which the routing policy work class applies. -nodename Name of the node on which the ODR or web server resides. Required only if we modify an ODR or a web server. -clustername Name of the cluster to which the rule applies. Required only if we modify an ODR cluster. -dcname Name of the dynamic cluster to which the rule applies. Required only if we modify an ODR cluster.
Batch mode example usage
- Use Jacl:
$AdminTask changeRoutingRuleExpression { -odrname odr -nodename node1 -protocol SIP -priority 0 -expression "request.method = 'getOperation0'"}- Use Jython string:
AdminTask.changeRoutingRuleExpression('[-odrname odr -nodename node1 -protocol HTTP -priority 0 -expression "queryparm$userid = \'123\'"]')
Interactive mode example usage
- Use Jacl:
$AdminTask changeRoutingRuleExpression {-interactive}- Use Jython string:
AdminTask.changeRoutingRuleExpression ('[-interactive]')
changeRoutingRulePriority
Change a routing policy rule priority.
-protocol Name of the protocol to associate with a rule. (String, required) -priority Positive integer value representing the priority of a rule. Zero is the highest priority. (String, required) -expression Rule expression. The expression must be enclosed in double quotes. (String, required) -odrname Name of the ODR to which the routing policy work class applies. Required only if we modify an ODR or a web server. -webservername Name of the web server to which the routing policy work class applies. -nodename Name of the node on which the ODR or web server resides. Required only if we modify an ODR or a web server. -clustername Name of the cluster to which the rule applies. Required only if we modify an ODR cluster. -dcname Name of the dynamic cluster to which the rule applies. Required only if we modify an ODR cluster.
Batch mode example usage
- Use Jacl:
$AdminTask changeRoutingRulePriority {-odrname odr -nodename node1 -protocol SIP -priority 0 -expression "request.method = 'getOperation0'"}- Use Jython string:
AdminTask.changeRoutingRulePriority('[-odrname odr -nodename node1 -protocol HTTP -priority 1 -expression "queryparm$userid = \'123\'"]')
Interactive mode example usage
- Use Jacl:
$AdminTask changeRoutingRulePriority {-interactive}
- Use Jython string:
AdminTask.changeRoutingRulePriority ('[-interactive]')
createRoutingRules
Create a routing policy rule list.
-protocol Name of the protocol to associate with a rule. (String, required) -odrname Name of the ODR to which the routing policy work class applies. Required only if we modify an ODR or a web server. -webservername Name of the web server to which the routing policy work class applies. -nodename Name of the node on which the ODR or web server resides. Required only if we modify an ODR or a web server. -clustername Name of the cluster to which the rule applies. Required only if we modify an ODR cluster. -dcname Name of the dynamic cluster to which the rule applies. Required only if we modify an ODR cluster.
Batch mode example usage
- Use Jacl:
$AdminTask createRoutingRules {-odrname odr -nodename node1 -protocol SIP}
- Use Jython string:
AdminTask.createRoutingRules('-odrname odr -nodename node1 -protocol SIP')
Interactive mode example usage
- Use Jacl:
$AdminTask createRoutingRules {-interactive}
- Use Jython string:
AdminTask.createRoutingRules ('[-interactive]')
listRoutingRules
List the routing policy rules.
-protocol Name of the protocol to associate with a rule. (String, required) -odrname Name of the ODR to which the routing policy work class applies. Required only if we modify an ODR or a web server. -webservername Name of the web server to which the routing policy work class applies. -nodename Name of the node on which the ODR or web server resides. Required only if we modify an ODR or a web server. -clustername Name of the cluster to which the rule applies. Required only if we modify an ODR cluster. -dcname Name of the dynamic cluster to which the rule applies. Required only if we modify an ODR cluster.
Batch mode example usage
- Use Jacl:
$AdminTask listRoutingRules {-odrname odr -nodename node1 -protocol SIP}
- Use Jython string:
AdminTask.listRoutingRules('-odrname odr -nodename node1 -protocol SIP')
Interactive mode example usage
- Use Jacl:
$AdminTask listRoutingRules {-interactive}
- Use Jython string:
AdminTask.listRoutingRules ('[-interactive]')
removeRoutingRule
remove a routing policy rule.
-protocol Name of the protocol to associate with a rule. (String, required) -priority Positive integer value representing the priority of a rule. Zero is the highest priority. (String, required) -expression Rule expression. The expression must be enclosed in double quotes. (String, required) -odrname Name of the ODR to which the routing policy work class applies. Required only if we modify an ODR or a web server. -webservername Name of the web server to which the routing policy work class applies. -nodename Name of the node on which the ODR or web server resides. Required only if we modify an ODR or a web server. -clustername Name of the cluster to which the rule applies. Required only if we modify an ODR cluster. -dcname Name of the dynamic cluster to which the rule applies. Required only if we modify an ODR cluster.
Batch mode example usage
- Use Jacl:
$AdminTask removeRoutingRule {-odrname odr -nodename node1 -protocol SIP -expression "request.method = 'getOperation'"}
- Use Jython string:
AdminTask.removeRoutingRule('[-odrname odr -nodename node1 -protocol HTTP -expression "queryparm$userid = \'123\'"]')
Interactive mode example usage
- Use Jacl:
$AdminTask removeRoutingRule {-interactive}
- Use Jython string:
AdminTask.removeRoutingRule ('[-interactive]')
Related:
Routing policy action types Overview of request flow prioritization Configure the ODR for multi-cluster failover and load balancing routing Configure ODRs Create a static cluster of ODRs Intelligent Management: SIP operands Intelligent Management: HTTP operands Intelligent Management: rules for ODR service policy administrative tasks