11i Forms Load-Balancing Using JServ

Posted in: Technical Track

Today I ran into an 11i E-Business Suite instance which is using Apache/JServ to do forms load-balancing. In fact, it’s my first customer to implement and successfully use Apache/JServ for load-balancing. Here is quick sketch of the instance architecture:

                    | 11i URL:
                    | http://appsrv1.pythian.com:8000/
             |   appsrv1    |
             | apache/jserv |
             |  formservlet |
            /                \
           /                  \
----------------             ----------------
|   appsrv2    |             |   appsrv3    |
| apache/jserv |             | apache/jserv |
|  formservlet |             |  formservlet |
----------------             ----------------

            |    dbsrv01      |
            | CM/RepSrv       |
            |  Database       |

Almost all the customers that I have worked on till now, with a requirement for multiple middletier, have implemented load balancing using hardware load-balancers like Cisco Content Switch or F5 Big-IP.

This customer is running forms in servlet mode, a prerequisite for using Jserv to do load-balancing. If somebody wants to do forms load-balancing in socket mode and opts not to use any hardware LBRs, then the only option is a Metrics server.

Here is brief overview on how forms load-balancing happens in above architecture.

  • all web page and forms requests from users land on appsrv1 Apache processes
  • Apache process passes that request to the oprocmgr(appsrv1) module
  • the oprocmgr(appsrv1) with which all the JServ jvms (appsrv1, appsrv2, appsrv3) are registered, will pass the request to the least loaded JServ.

Here are some more technical details — basically, the XML tags in the Context XML file in APPL_TOP that need to be edited. As I mentioned earlier, we need to have forms servlet mode enabled. The following tags take care of that.

# forms servlet mode

s_forms_servlet_serverurl  	- /forms/formservlet
s_forms_servlet_comment 	- null

To enable JServ load-balancing, the following tags need to be updated:

# jserv load balancing

s_oacore_zone_name 		- root
s_multiwebnode 			- yes
s_oacore_trusted_oproc_nodes 	- appsrv1.pythian.com,appsrv2.pythian.com,appsrv3.pythian.com

The s_oacore_zone_name tag gets updated in the jserv.properties in zones section. It’s important that the zone name is same on all three apps servers. The s_multiwebnode tag value is used by autoconfig to generate the oprocmgr.conf file with all the node names from the s_oacore_trusted_oproc_nodes tag. The oprocmgr.conf file will look like this:

<IfModule mod_oprocmgr.c>
   Listen 8100
   ProcNode appsrv1.pythian.com 8100
   ProcNode appsrv2.pythian.com 8100
   ProcNode appsrv3.pythian.com 8100

   <VirtualHost _default_:8100>
<IfDefine SSL>
   SSLEngine off
   Port 8100
   <Location />
     Order Deny,Allow
     Deny from all
     Allow from localhost
     Allow from appsrv1
     Allow from appsrv1.pythian.com
     Allow from appsrv2.pythian.com
     Allow from appsrv3.pythian.com
     Allow from
     Allow from appsrv2
     Allow from appsrv2.pythian.com
     Allow from appsrv3
     Allow from appsrv3.pythian.com
   <Location /oprocmgr-service>
     SetHandler oprocmgr-service
   <Location /oprocmgr-status>
     SetHandler oprocmgr-status

Check Metalink Note 217368.1: Advanced Configurations and Topologies for Enterprise Deployments of E-Business Suite 11i.

Happy Load-Balancing!

Interested in working with Vasu? Schedule a tech call.

About the Author

Vasu Balla’s colleagues call him “Eagle Eye” for a reason – his diverse technical background enables him to view his clients’ systems from a 360-degree angle, giving him a higher level of understanding. Vasu is well known for being approachable, and he truly enjoys helping people. Even former colleagues reach out to Vasu when they are really stuck on an issue. When he isn’t working, Vasu can be found in the kitchen trying new recipes.

1 Comment. Leave new

We can implement Jserv load balancing only on top of HTTP layer load balancing. I have tried with only Jserve Load balacing but it doesnt work all the request goes to only one node.



Leave a Reply

Your email address will not be published. Required fields are marked *