This blog post outlines a couple of issues we faced in our Oracle E-Business consulting group when configuring Amazon Elastic Load Balancer with Oracle E-Business Suite 11i. The current IT industry trend is to virtualize all servers, and Oracle E-Business Suite servers are no exception. Among current cloud operators, Amazon Cloud infrastructure is a favorite destination, especially for Small & Medium Enterprises.
The main advantage of Amazon cloud with Oracle E-Business Suite is that Oracle Licenses is compatible with amazon virtual servers. Just last week there was announcement that Oracle will certify Microsoft Azure Cloud as well. This should bring new options to customers who want to move servers running Oracle to Cloud. We cannot just virtualize servers running Oracle as we wish because of how Oracle licenses its software. Oracle licensing on virtual servers is a big controversial topic. If you want some piece of that pie, just google “oracle licensing vmware”. Let’s get back into the technical stuff.
As part of a high availability configuration, load balancers from either Cisco or F5 Networks with multi middle-tier Oracle E-Business Suite are what most enterprise customers use. Amazon offers a load balancer called Elastic Load Balancer (ELB). The feature set of ELB is pretty much comparable with enterprise grade load balancers from Cisco and F5.
Oracle E-Business Suite 11i has 2 types of traffic between end users and middle tier servers. The first is the web HTTP traffic, which is served by all Java-based self-service applications. The second is the Oracle Forms traffic, which is used by the Oracle Forms Java applet when the Forms server is running in socket mode. Amazon’s load balancer is pretty good at handling the HTTP traffic. It has all required features for Oracle E-Business Suite, like a cookie-based sticky session with timeout of 10hrs. But here’s the catch: this is only available for HTTP/HTTPS traffic. For Oracle Forms traffic, we have to use the basic TCP load balancing option in Amazon ELB. This ELB TCP load balancing doesn’t have any of the sticky session features of HTTP traffic load bancing. This causes strange issues with Oracle forms like:
FRM-40010: Cannot read from /path/to/appltop/fnd/11.5.0/forms/US/FNDSCSON
This issue stems from TCP load balancing not having sticky features. It seems to be causing issues to a lot of other software deployments on Amazon servers, which require a TCP connection to be open all the time. Amazon should add this feature to ELB to make it a complete load balancer offering.
Otherwise, the fix for this issue would be to either convert the Forms server to servlet mode, which makes the forms traffic piggyback on the Web HTTP traffic, or make Oracle Form server clients connect directly to the servers instead of going through a load balancer.
Another issue to look out for is timeout at the load balancer level. All connections to Amazon ELB timeout after 60 seconds. If you have a webpage or form that takes a while to load, then you need to increase this timeout. It cannot be increased via Amazon’s self service management console. You have to raise a ticket with Amazon to increase this timeout for your load balancer. Some discussion on this issue is at this Amazon forum. The maximum value of the timeout that Amazon can increase it to is 17 mins. I recommend setting this timeout to 6 mins, as Apache automatically times out HTTP connections around 5 mins.
These are my lessons learnt from the rendezvous with Amazon Elastic Load Balancer. I will be glad to hear your experiences as well!!!