Create ODRs
The on demand router (ODR) is an intelligent HTTP and Session Initiation Protocol (SIP) proxy server in Intelligent Management. The ODR is the point of entry into an Intelligent Management environment and is a gateway through which HTTP requests and Session Initiation Protocol (SIP) messages flow to back-end application servers. We can configure the ODR to determine how it handles failure scenarios and how it tunes certain work requests.
SIP is not supported on the z/OS operating system.
The SIP ODR is stabilized, and is currently not recommended. Use the SIP proxy server instead.gotcha
(v8550) We now support a subset of ODR functions in an Apache or IBM HTTP web server plug-in. Read about Intelligent Management for web servers for more information.
The ODR can momentarily queue requests for less important applications to allow requests from more important applications to be handled more quickly or to protect back-end application servers from being overloaded. The ODR is aware of the current location of a dynamic cluster instance so that requests can be routed to the correct endpoint. The ODR can also dynamically adjust the amount of traffic that is sent to each individual server instance based on process utilization and response times. The ODR performs WLOR (Weighted Least Outstanding Request) load balancing for selecting a server within a cluster when there is no affinity or when affinity is broken.
By default, the ODR binds to ports 80 and 443 for listening on HTTP and HTTPs, which requires running the ODR as a root user. To run the ODR as a non-root user, you must change the PROXY listening ports to values greater then 1024.
The ODR is fully aware of the dynamic state of the cell, so that if one server in the cell fails, the requests are routed to another server. When the ODR is notified that the application has initialized on the restarted server, the ODR routes requests to that server again.
The ODR does not route any requests to the application on the application server until the application completes starting or initializing. If the application is started on other application server, then the requests are routed to them. If the application is not started on any other servers, then the ODR still does not route to the starting-in-progress application server. Instead, a 503 message is returned.
- For more information about ODRs, read about creating ODRs.
An ODR is a proxy server with advanced capabilities used to route work to server nodes. The configuration of the ODR in the DMZ is not supported. To configure ODRs to perform an SSL offload, see read about configuring SSL offload for all HTTPS traffic. For information about other custom properties, read about the on demand router system and custom properties.
- Follow the WAS Network Deployment instructions in the proxy server settings topic to configure ODRs. For more information about Intelligent Management specific fields, read about configuring ODRs.
Avoid trouble: In the Intelligent Management administrative console, use the following path to define the configuration of the ODR: Servers > Server types > On demand routers > odr_name > On demand router settings > On demand router properties. gotcha
- By default, the ODR matches the incoming protocol to the outgoing protocol. For inbound HTTP requests, the request is forwarded over outbound HTTP. For inbound HTTPS, the request is forwarded over outbound HTTPS. This default behavior can either be changed for all HTTP and HTTPS traffic that is handled by the ODR, or on a per-Web module basis. For more information, read about configuring the SSL offload for all HTTPS traffic.
- We can use ODR custom properties to change the behavior of the ODR. For example, we can change the error code that the ODR returns when messages are rejected because of processor or memory overload. For more information, read about the on demand router system and custom properties.
- A web server should be configured as a trusted secure proxy because a trusted security proxy is allowed to pass information such as the virtual host name, or user identity to the ODR in private HTTP headers. For more information, read about configuring a web server as a trusted proxy server.
- Define routing policies for generic server clusters.
- Route and service policies for SIP are defined at the ODRs. For more information, read about defining a service policy.
What to do next
Configure the middleware servers and dynamic clusters for your environment.
Subtopics
- (dist)(zos) Create ODRs
We can create on demand routers (ODRs) to route requests to Intelligent Management nodes. The ODR is fully aware of the dynamic state of the cell, so that if one server in the cell fails, the requests are routed to another server. The configuration of the ODR in the DMZ is not supported.
- (dist)(zos) createodr.jacl script
We can use the createodr.jacl script to create an on demand router (ODR) from the command line.
- (dist)(zos) dumpIMPState.py script
Use the dumpIMPState.py script to record the state of various Intelligent Management processes. We can use this script for problem diagnosis and debugging purposes when requested by IBM support. The detailed state of the on demand router (ODR), the deployment manager, and application server processes are displayed when using this script.
- (dist)(zos) dumpOdrState.jacl script
We can use the dumpOdrState.jacl script to dump on demand router (ODR) states, and for problem diagnosis and debugging purposes. The detailed state of the queues and throttles of each gateway running in the ODR, as well as other global counters, are returned.
- (dist)(zos) deleteodr.jacl script
We can use the deleteodr.jacl script to delete an on demand router (ODR) from the command line.
- (dist)(zos) Configure ODRs
We can configure an on demand router (ODR) to determine how it handles failure scenarios and tunes certain work requests. We can configure the connections and requests to the application server, configure the requests that must be rejected, define how error responses are handled, and specify the location of the proxy logs. The configuration of the ODR in the DMZ is not supported.
- (dist)(zos) manageODR.py script
We can use the manageODR.py script to manage custom logging and create a cluster of on demand routers (ODR).
- (dist)(zos) manageODC.py script
manageODC.py permits the interaction with the On Demand Configuration (ODC) tree. The ODC tree is an in-memory representation of the state of a WAS cell.
- (dist)(zos) odrDebug.py script
We can use the odrDebug.py script to diagnose errors that an on demand router (ODR) returns.
- (dist)(zos) Intelligent Management: on demand router system and custom properties
We can use on demand router (ODR) custom properties to change the behavior of the ODR. For example, we can change the error code that the ODR returns when messages are rejected because of processor or memory overload.
- (dist)(zos) Configure a Web server as a trusted proxy server
If the environment includes a Web server, configure it as a trusted secure proxy server. By configuring the secure proxy server, we can inform the on demand router (ODR) that the Web server is a trusted secure proxy so that the ODR can receive requests.
- (dist)(zos) Enable cell affinity
The cell affinity function preserves sessions even in the event of an on demand router (ODR) outage when you configure unbridged, on demand router (ODR) topologies.
- (dist)(zos) Use the binary trace facility
Intelligent Management provides a binary trace facility (BTF) that permits the gathering of trace information in a production environment with a minimal impact on performance. The BTF is useful for both customers and development teams because its efficiency facilitates leaving a basic level of trace on all the time; thus, it is frequently the case that the data necessary for troubleshooting a problem has been captured the first time it occurs.
- (dist)(zos) Tune the on demand router (ODR)
ODRs are intelligent routers for SIP and HTTP traffic, acting as intermediaries for application servers and webs ervers. There are many factors that affect ODR performance; in order to get the optimal performance from the ODRs, it is sometimes necessary to tune them.
- (dist)(zos) Configure custom logs
By configuring custom logs, we can determine what data to capture in the logs and how to display the logged data. We can configure custom logs using wsadmin, through rule set administrative tasks, or using the manageODR.py script.
- (dist)(zos) Configure SSL offload for all HTTPS traffic
We can change the default outgoing protocol for requests that go through the on demand router. By default, the on demand router matches the incoming protocol to the outgoing protocol.
- (dist)(zos) Configure SSL offload for partial HTTPS traffic
Configure the ODR to perform SSL offload for partial HTTPS traffic, or on a per-web module basis.
- (dist)(zos) Integrate the SIP on demand router with Load Balancer
We can integrate the Session Initiation Protocol(SIP) on demand router (ODR) with Load Balancer. Load Balancer for IBM WAS can help maximize the potential of the website by providing a powerful, flexible, and scalable solution to peak-demand problems.
- serverQuiesce.py script
We can use the serverQuiesce.py script to decrease workload to a Session Initiation Protocol(SIP) container over an interval, and optionally stop the server. We can also cancel the quiesce during a set time interval if certain conditions are met.
- (dist)(zos) Define routing policies for generic server clusters
We can define routing policies for generic server clusters. A routing policy is a set of rules that determine how the server routes incoming requests.
- (dist)(zos) Intelligent Management: rules for ODR routing policy administrative tasks
We can use administrative tasks to configure HTTP or Session Initiation Protocol(SIP) rules for the on demand router (ODR) routing policy.
- (dist)(zos) Define service policies for generic server clusters
Optionally, we can define service policies for generic server clusters.
- (dist)(zos) Intelligent Management: rules for ODR service policy administrative tasks
We can use administrative tasks to configure Session Initiation Protocol (SIP) or HTTP rules for an on demand router (ODR) service policy.
- (dist)(zos) Intelligent Management: service policy custom properties
We can use service policy custom properties to provide service policy alerting for persistent service policy violations on a transaction class basis. When a violation is reported, a runtime task is generated by a runtime component within Intelligent Management. A task provides information from which we can accept or deny the suggested action plan.
- (dist)(zos) BBSON bulletin board
Intelligent Management offers a bulletin board service overlay network (BBSON) that is independent of the WAS Network Deployment high availability manager. The high availability manager provides a mechanism that allows servers to easily exchange state data. This mechanism is commonly referred to as the bulletin board.
- (dist)(zos) Topology Configurations for Multi-Cell Routing
In a multi-cell situation we have two topology options for configuring multi-cell routing preference rules for applications that exist in two cells, which we consider to be recommended best practices. Neither of these topologies employ core-group bridges and for Versions 7.x and higher it is discouraged to use core-group bridges to link cells.
- (dist)(zos) Configure an ODR to dynamically update the web server plug-in configuration
In a topology with a web server which forwards requests to an on demand router (ODR), the ODR can be set to dynamically generate and update the web server plug-in configuration file plugin-cfg.xml. By configuring an ODR to dynamically update plugin-cfg.xml, you avoid manually updating the file during administrative actions, which can affect the content.
- (dist)(zos) Generating the plug-in configuration in a high availability environment
In a high availability environment, we can configure the web server to generate the plug-in configuration. By doing so, you ensure that the configuration is generated by one process in the cell, regardless of other processes that might not be available.
- (dist)(zos) Segregating HTTP traffic by ODR clusters
The high availability plugin-cfg generation service automatically regenerates and propagates the web server plug-in configuration file each time a change is made, which should affect how the plug-in routes. When you use this service, the web server plug-in routes traffic by application, deployment target, or node group to a specific ODR cluster.
- (dist)(zos) Intelligent Management: controlling the generation of the plugin-cfg.xml file
We can override the default attribute values of the plugin-cfg.xml file that is automatically generated by the on demand router (ODR).
- (dist)(zos) Propagating the plugin-cfg.xml file to web servers
For web servers defined in the WAS Network Deployment (ND) configuration, we can automatically propagate the generated plugin-cfg.xml file to web servers using the autoPropagate keyword option, or using the propagatePluginCfg.py script.
- (dist)(zos) propagatePluginCfg.py
Use the propagatePluginCfg.py script to automatically propagate the generated plugin-cfg.xml file.
- (dist)(zos) Route requests directly from a web server to a back-end application server
Define a new custom property to configure the web server plug-in configuration to route requests directly from the web server to a back-end application server. We can configure certain requests to route through an on demand router (ODR) and configure other requests to route directly to a back-end application server.
- (dist)(zos) Configure passive HTTP session affinity in the on demand router
When the on demand router (ODR) processes a request, it obtains the session affinity descriptor policy of the cluster to which the server belongs. If we changed the default settings for any middleware servers, we might need to update the middleware descriptor properties so that the ODR can obtain the descriptor policy. In most cases, the on demand router (ODR) does not require configuration to support HTTP session affinity. However, some special cases exist where configure the ODR to learn about backup servers that the back end servers might be setting on the session affinity cookie.
- (dist)(zos) Configure the on demand router for multi-cluster failover and load balancing routing
To configure the on demand router (ODR) to route requests to a different cluster, use custom properties for multi-cluster failover and load balancing routing policies. Route requests to a cluster in another cell if the primary cluster fails, to balance the load between multiple clusters in the environment, or to route requests to a specific cluster.
- Configure ODR OutOfMemory prevention
We can create cell-level custom properties to prevent the on demand router (ODR) from running out of memory when the number of concurrent requests sent to the ODR increases.
Related concepts
Intelligent Management for web servers overview Overview of request flow prioritization
Related tasks
Set up Intelligent Management for dynamic operations Create ODRs Configure ODRs Configure a Web server as a trusted proxy server Configure SSL offload for all HTTPS traffic Define routing policies for generic server clusters Define service policies for generic server clusters Add middleware servers to configurations Create dynamic clusters Define a service policy Proxy server settings
createodr.jacl script Intelligent Management: on demand router system and custom properties