How to setup a HTTP Load Balancer for JDE using the open source Apache httpd webserver.
Your Apache must have the following core modules enabled: mod_rewrite, mod_headers, mod_proxy, mod_proxy_http, mod_proxy_balancer
You may need to adjust the following settings:
- ServerName
- ServerAlias
- DocumentRoot
- <Directory> (to match DocumentRoot)
- BalancerMember (list the URL for each of your JDE instances)
- Set-Cookie Max-Age (should match your JDE web session timeout)
Your new balancer does not have a homepage, instead it will automatically redirect any requests to /jde.
Caution regarding One View Reporting [Updated 3/27/2017]
If you use One View Reporting, be sure to use Server Manage to configure the setting One View Reporting: Target JAS Server and Port for each webserver running behind the load balancer.
For more information regarding One View Reporting with an HTTP Load Balancer, please see Oracle Support document: E1: OVR: One View Report Output Displays “Error Occurred” or “No Data to Display” Message when Using Load Balancer (Doc ID 1516935.1)
# JDE Balancer Virtual Host Template # NOTE: This uses a custom LogFormat called "jdebalancer" that is tuned for performance monitoring. You can replace it with any other log format. <VirtualHost *:80> ServerAdmin webmaster@jdebalancer.myCompany.com # Fully-qualified server name ServerName jdebalancer.myCompany.com # Additionally, specify the unqualified server name and any other DNS aliases ServerAlias jdebalancer ServerAlias jde # Error Log location ErrorLog /var/log/apache2/jdebalancer.myCompany.com-error_log # Access Log location CustomLog /var/log/apache2/jdebalancer.myCompany.com-access_log common LogLevel warn HostnameLookups Off UseCanonicalName Off ServerSignature On # DocumentRoot, in case you have any files you want to serve up. DocumentRoot /srv/www/htdocs/jdebalancer # This should match DocumentRoot <Directory "/srv/www/htdocs/jdebalancer"> Options Indexes FollowSymLinks # Enable .htaccess overrides (this is not required!) AllowOverride All </Directory> # JDE Proxy & Load Balancer Setup # Extra-long timeouts because JDE responses frequently take > 1 minute (NOTE: This matches the proxy timeout value, which is specified below) TimeOut 1800 # The beast RewriteEngine on # Disable Forward Proxies ProxyRequests Off # Preserve HTTP Request Hostname when forwarding requests to back-end hosts ProxyPreserveHost On # Redirect root requests to /jde/E1Menu.maf RewriteRule ^/$ /jde/E1Menu.maf [R,END] # Redirect logout requests to /logout/ RewriteCond %{QUERY_STRING} ^jdeLoginAction=LOGOUT&RENDER_MAFLET=E1Menu$ RewriteRule ^/jde/E1Menu.maf$ /logout/? [R,END] # Enable HTTP Hostname rewriting for replies from back-end hosts ProxyPassReverse / balancer://jdebalancer # Defines proxy "jdebalancer" and each back-end host <Proxy "balancer://jdebalancer"> # Balancer will look at cookie named "JDEBALANCERID" ProxySet stickysession=JDEBALANCERID timeout=1800 # List the URL for each JDE Web Instance here and assign a UNIQUE route name BalancerMember http://jdewebpd1:8080/jde route=jdewebpd1_8080 BalancerMember http://jdewebpd2:8080/jde route=jdewebpd2_8080 BalancerMember http://jdewebpd2:8081/jde route=jdewebpd2_8081 </Proxy> # LOCATIONS # /jde - All requests to /jde are sent to the load balancer and proxied to a JDE Web Instance <Location /jde> # Set a cookie "JDEBALANCERID" to store the route name. Session cookie will timeout after 20 mins (supposeldy not compatible with IE) Header add Set-Cookie "JDEBALANCERID=.%{BALANCER_WORKER_ROUTE}e; path=/; Max-Age=1200" # Proxy all requests for to the "jdebalancer" using JSESSIONID for stickiness ProxyPass balancer://jdebalancer </Location> # /logout - Clear load balancing cookie <Location /logout> Header always set Set-Cookie "JDEBALANCERID=logout; path=/" Redirect 302 /logout / </Location> # /balancer-manager - Web GUI Administration <Location /balancer-manager> # Enable balancer-manager SetHandler balancer-manager </Location> </VirtualHost>