11i Forms Load-Balancing Using JServ
11i Forms Load-Balancing Using JServ
11i Forms Load-Balancing Using JServ
to do forms load-balancing. In fact, it s my first customer to implement and success fully use Apache/JServ for load-balancing. Here is quick sketch of the instance architecture: Users 11i URL: http://appsrv1.pythian.com:8000/ ---------------appsrv1 apache/jserv formservlet ---------------/ / ---------------appsrv2 apache/jserv formservlet ---------------\ \ ---------------appsrv3 apache/jserv 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-balance rs like Cisco Content Switch or F5 Big-IP. This customer is running forms in servlet mode, a prerequisite for using Jserv t o 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, appsr v3) 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 s_forms_servlet_comment - /forms/formservlet - null
To enable JServ load-balancing, the following tags need to be updated: # jserv load balancing
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_multi webnode 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 </IfDefine> 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 192.168.1.100 Allow from appsrv2 Allow from appsrv2.pythian.com Allow from appsrv3 Allow from appsrv3.pythian.com </Location> <Location /oprocmgr-service> SetHandler oprocmgr-service </Location> <Location /oprocmgr-status> SetHandler oprocmgr-status </Location> </VirtualHost> </IfModule> Check Metalink Note 217368.1: Advanced Configurations and Topologies for Enterpr ise Deployments of E-Business Suite 11i.