Load-balancing is a technique or facility that attempts to provide an even backlog of demand across multiple processors or production facilities.
In a multinode PRPC system, server demands from interactive user sessions are ideally balanced across nodes in relation to their power. (Some processing workload arises from agents and services rather than from interactive users; this can occur on designated nodes.)
Typically, such load balancing is achieved with hardware routers that support "sticky" HTTP sessions, so that a user who happens to first log into node ALPHA remains with ALPHA for the duration of the session. For example, Cisco Systems Inc. and F5 Networks Inc. offer such hardware (among others).
However, in some situations, software-based load balancing is appropriate. For example, IBM's WebSphere Edge Components includes a Load Balancer module. In some environments, reverse proxy servers are useful.
To support reverse proxy serving, add the following entries to the prconfig.xml file or Dynamic System Settings:
<env name="Initialization/ContextRewriteEnabled" value="true" />
<env name="Initialization/SetBaseHTMLContext"
value="http://revproxy/AcmeCorp/setup" />
As an alternative to the prconfig.xml file, you can use Dynamic System Settings to configure your application.
See How to create or update a prconfig setting.
Organizations wishing to deploy highly available production systems must deploy a load balancer with the following minimum requirements:
Session affinity is typically configured at the load balancer. It ensures that all requests from a user handled by the same application server. Modern load balancers offer a range of options for configuring session affinity, Cookie and JSESSIONID are typical candidates. Cookie based affinity is recommended.
PRPC offers several ways to configure cookies, both use the prconfig.xml property:
session/ha/quiesce/customSessionInvalidationMethod
The first option is to configure for a specific cookie:
<env name="session/ha/quiesce/customSessionInvalidationMethod"
value="configurable-cookie-invalidator"/>
<env name="session/ha/quiesce/cookieToInvalidate" value="MyCookieName"/>
Load balancers may augment the cookie name:
BIGipMyCookieName
The second option allows developers to add a java implementation that returns the cookie name. Mode detail may be found in the “Session Invalidation Method” section. Developers implement the fully qualified name of a class implementing the interface SessionInvalidationInvalidationMethod in prpublic:
<env name="session/ha/quiesce/customSessionInvalidationMethod" value="com.mypackage.myInvalidationClass."/>
These PDN articles may be helpful:
router activity, skills, urgency | |
Clusters — Concepts and terms |