LB Appliance in-fron of clustered IIS + Tomcat8 + BI 4.2 SP3

Hello all,

Need help verifying my To-Be design make sense. Please see the attached diagram for To-Be architecture

Context about diagram:

[list]Each square box represent a VM
VMs are behind the LB appliance
IIS or Apache (Web Server for static content)
Tomcat 8 (version packaged with BI 4.2 SP3; for dynamic content)
Version of Business Objects - BI 4.2 SP3
CMS is in HANA SPS13
Tomcat and BI will be clustered for application awareness in-case a server failure. User will not loose their work and be still logged in (in theory).[/list]

  1. I’m; confused where static content (e.g. jpg, html, css) caching occur, if not at LB appliance (F5 or Netscaler)?

  2. If the answer for #1 is at web server (Apache or IIS) then do I need to cluster the web servers with LB appliance present? (We don’t think so but would like to verify)[list][/list]

Your thoughts will be much appreciated
To-Be.PNG


trieu1185 (BOB member since 2016-11-09)

Your design is similar to what we use: an F5 in front of three hosts, each with Apache 2.4 as the web server and Tomcat 8.5 as application server.

The F5 will cache static content, as will the web server (IIS or Apache).

You can run the web server as either a simple reverse proxy to Tomcat, or to serve static content. The BI4 wdeploy utility can automatically do a “split deployment”, in which it deploys the static content to Apache and the dynamic content to Tomcat. wdeploy does not natively support IIS. If you want to do a split deployment with IIS, you’ll need to tell wdeploy you’re deploying to Apache, then copy the files over to IIS and configure the IIS site manually. All in all, it’s better to use Apache, in my opinion.

Clustering will occur at the application server level (Tomcat), not the web server level. With Apache, you’ll use mod_jk to manage the communication between it and Tomcat, and you’ll want each of your two Apaches to communicate with both Tomcats. In this way, if one of the two Apaches goes down, all traffic will be routed to the other one, and active sessions will remain intact. In your diagram, Apache is only talking with the Tomcat on the same server – clustering of Tomcat will do nothing for you in this case, since if TOMCAT1 goes down, there is nothing for Apache1 to talk to.

So:
[list][:df5ba0dfb3]No “clustering” of Apache. The two Apaches are not aware of each other, but both are aware of the two Tomcats.
[
:df5ba0dfb3]If an Apache goes down, the F5 will direct traffic to the other Apache, and sessions will continue seamlessly.
[:df5ba0dfb3]With multiple Tomcats but no Tomcat clustering – if a Tomcat goes down, Apache will direct traffic to the surviving Tomcat. BO sessions will terminate and users will be dumped back to a logon page.
[
:df5ba0dfb3]With multiple clustered Tomcats – if a Tomcat goes down, Apache will direct traffic to the surviving Tomcat, which will then resume the session. The BO session should continue as if nothing happened (except that anything that the session was doing at the time of the failure will be lost [ex., a report refresh])[/list]

The above is true whether you’re doing a split deployment or a simple reverse proxy. So, they are separate decisions: using a web server to direct traffic to multiple tomcats will help with failover and load balancing. Doing a split deployment will help with performance.

Note that BI4 support for Tomcat clustering is not “on” out of the box. See SAP note 2088195. I haven’t tried this yet but plan to test it.

Joe


joepeters :us: (BOB member since 2002-08-29)

Thanks for the detailed reply Joe. I’ve adjusted the diagram (see To-Be_v2.PNG) the web servers sees both tomcat servers.

During our design meeting, we question if we NEEDED web servers (Apache) because the LB appliance (Netscaler) has capabilities of reverse proxy and static content (see To-Be__NO_WebServer_v2.PNG)

  1. Would you recommend load balancing tomcat with LB appliance?

  2. If so, would we provide tomcat’s LB IP to Apache’s mod_jk instead of individual tomcats’ IP?
    To-Be__NO_WebServer_v2.PNG
    To-Be_v2.PNG


trieu1185 (BOB member since 2016-11-09)

That’s correct - you don’t technically need a web server (Apache or IIS) if you have a load balancer. You can just point the LB at the two Tomcats’ port 8080. It will direct traffic to both as needed, but will not be serving static content (although it may cache it).


joepeters :us: (BOB member since 2002-08-29)