Book / Resource on Configuring Load Balancing and Failure for a Servlet Based Web Application

We are building a web system using Java technology and Servlet (actually Wicket for the presentation layer), and we need our system to be available almost always, since our clients will be completely dependent on it.

This led us to search for a good book on a topic or other resource that explains how to set up a more redundant and fault-tolerant architecture for our system.

A non-exclusive list of issues we currently have:

  • How do you have one domain name (like http://www.google.com ) actually served by multiple load balanced servers to distribute users? Isn't there always a point that is weaker in such a solution (two [how can't there be more] DNS servers for google.com in their case)?
  • It seems like a good idea to have multiple database servers for redundancy and load balancing. How is it configured?
  • If one of our web servers went down, we would like to have some kind of glitch and allow users to use the one that is still running. By the way, the sessions have to be synchronized in some way. How is it configured?
  • Do we need any kind of synchronized transactions?
  • Is Amazon Computer Cloud a good option for us? How did we install it there? Are there alternatives that are cost effective?
  • Do I need to run in a Java EE container like JBoss or Glassfish?
+1


source to share


6 answers


As far as GlassFish is concerned, centralized administration through the GUI is a big help for environments where more than one application instance is managed. "Always available" is overloaded. This could be the availability of the service without saving the session on failure, or it could mean there is data with a backup of the session. Of course, GlassFish can do both. Several resources that can help with GlassFish and high availability:

GlassFish High Availability Tutorial: http://www.sun.com/offers/details/glassfish_HAref_config.html



Set up a GlassFish cluster in 10 minutes: http://blogs.oracle.com/jclingan/entry/glassfish_clustering_in_under_10

John Klingan, Head of Product, GlassFish Group

+2


source


The Liferay wiki has a high availability entry that describes an architecture that can serve as a starting point.



+1


source


This is probably a simplistic approach, but recently I've implemented a similar load balancing and high availability system.
In my application, Tomcat was a web container and a MySQL database. I worked with Tomcat with Apache Http Server and used the Apache mod_jk2 module as the interface to manage load balancing and failover.

There are many resources available on the Internet, starting with the Apache documentation. Here are a few:

http://tomcat.apache.org/connectors-doc/reference/workers.html

http://www.redhat.com/docs/manuals/rhaps/jonas-guide/s1-load-balancing.html

http://tomcat.apache.org/connectors-doc/webserver_howto/apache.html

For MySQL, check MySQL proxy for load balancing and failover. It is a good idea to have multiple database servers for load balancing and failure. one set of databases can be read and the other set can be written. Depending on the size, you can allocate more / less servers for read / write. Your database documentation can also help you with configuration.

NTN.

0


source


A friend of mine says Building Scalable Websites is the definitive book on this topic:

0


source


Theo Schlossnagle's scalable internet architectures may also be of interest.

0


source


I just finished reading Architectural Solutions for Enterprises: Patterns for High-Performance Internet Based Systems . Great insight for me about scalability, availability, performance, security and many other aspects for enterprise systems.

0


source







All Articles