Home Accessibility Courses Twitter The Mouth Facebook Resources Site Map About Us Contact
 
For 2023 (and 2024 ...) - we are now fully retired from IT training.
We have made many, many friends over 25 years of teaching about Python, Tcl, Perl, PHP, Lua, Java, C and C++ - and MySQL, Linux and Solaris/SunOS too. Our training notes are now very much out of date, but due to upward compatability most of our examples remain operational and even relevant ad you are welcome to make us if them "as seen" and at your own risk.

Lisa and I (Graham) now live in what was our training centre in Melksham - happy to meet with former delegates here - but do check ahead before coming round. We are far from inactive - rather, enjoying the times that we are retired but still healthy enough in mind and body to be active!

I am also active in many other area and still look after a lot of web sites - you can find an index ((here))
Sharing the load with Apache httpd and perhaps Tomcat

"Can you show us how to share the load of a web site between various servers" is one of the question that comes up quite often on the more advanced web server configuration courses that we run. And, yes, I can, but I'll probably ask you a lot of extra questions about exactly how you want to load balance first.

Update - February 2013. The principles remain very much the same (as written 6 years ago for this article). However, mod_proxy_balancer is now the dominant standard and you should consider that first and foremost, ensuring that you have Apache httpd 2.2.11 or later for correct interaction with mod_rewrite. 2.2.11 itself is now rather mature, so and recent release (2.2.x or 2.4) will do the trick!

At one extreme, you can set up your web site so that certain requests - perhaps to all the URLs within one group of directories get forwarder to one server, and other request (from other directory groups) get forwarded to other servers. Using Apache httpd's mod_proxy this forwarding is easy to set up, but it does rely, essentially, on a manual assignment of traffic for different site areas to different servers, and it's not in itself going to dynamically adjust.

At the other extreme, if you run a Tomcat Cluster then you can send requests to any one of the cluster members and they'll handle those requests, even continuing sessions that have been started on other cluster members - but the price is high in terms of network traffic beweeen cluster members - indeed it's unnecessarily so for most applications.

A sensible compromise is to use Apache httpd's mod_rewrite to forward initial requests to a server selected at random from a list, but then to identify subsequent requests that are a part of the same session and forward them to the same server. In other words, a new visitor's initial contact is made with the next available agent, but once the connection has been established that visitor will keep coming back to the same agent. This approach allows a series of requests to be made throughout the domain (which the first solution did NOT allow), but avoids the need for every agent to keep every agent informed of each intermediate step in each transaction in case the visitor comes back to a different server next time.

As from Apache 2.2, there's an extra (and even better and more flexible tool) to share the load on a "per session" basis. mod_proxy_balancer allows the user to configure a number of servers to accept forwarded load, spreading the load evenly between each server based on the number of requests made of each, OR on the traffic each is generating. It's improved on mod_rewrite in that the forwarding is scientifically calculated rather than random, and so mod_proxy_balancer makes self-tuning adjustments and reduced the forwards to busy servers if it need to - if, for example, one particular session is burning up disproportional resources. mod_proxy_balancer can even be told that different servers have different available resources, and so the forwarding doesn't have to be equal.

Other capabilities of mod_proxy_balancer include robustness features such as server time outs and addbacks in the event of servers going off line and coming back on, and hot swap and standby system capabilities so that load can be taken over by a backup system if the main systems fails. mod_proxy_balancer is an Apache httpd module; traffic can be forwarded to other instances of httpd (as you would do if you were balancing a language such as PHP) or Tomcat (if you were balancing Java).

We do not offer a specific public web server balancing course - but we're familiar with these technologies and we can cover them as appropriate (and with practicals) during private courses. Please get in touch if you would like such training - even with just one or two delegates, we do have ways and means of training you cost effectively!
(written 2007-03-29, updated 2013-02-23)

 
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articles
A900 - Web Application Deployment - Tomcat - Extra Features
  [934] Clustering, load balancing, mod_rewrite and mod_proxy - (2006-11-21)
  [1006] Apache httpd and Apache Tomcat together tips - (2006-12-24)
  [1370] Apache Tomcat Performance Tuning - (2007-09-29)
  [1376] Choosing between mod_proxy and mod_rewrite - (2007-10-02)
  [1377] Load Balancing with Apache mod_jk (httpd/Tomcat) - (2007-10-02)
  [1383] Monitoring mod_jk and how it is load balancing - (2007-10-07)
  [1896] Virtual Hosts and Virtual Servers - (2008-11-20)
  [1899] Virtual Hosting under Tomcat - an example - (2008-11-22)
  [1939] mod_proxy_ajp and mod_proxy_balancer examples - (2008-12-13)
  [3018] Tuning Apache httpd and Tomcat to work well together - (2010-10-27)

A690 - Web Application Deployment - Clustering and load balancing
  [1771] More HowTo diagrams - MySQL, Tomcat and Java - (2008-08-24)
  [1993] Load Balancing - Hardware or Software? - (2009-01-15)
  [1995] Automated server heartbeat and health check - (2009-01-16)
  [2059] Sharing the load between servers - httpd and Tomcat - (2009-02-28)
  [2482] Load balancing with sticky sessions (httpd / Tomcat) - (2009-10-29)
  [2483] Clustering on Tomcat - (2009-10-30)
  [3293] Distributing the server load - yet ensuring that each user return to the same system (Apache httpd and Tomcat) - (2011-05-18)
  [3339] Simplest ever proxy configuration? - (2011-06-28)
  [3892] Distributed, Balanced and Clustered Load Sharing - the difference - (2012-10-13)
  [4432] Java web application for teaching - now with sessions and clustering / load balancing demonstrations - (2015-02-20)

A608 - Web Application Deployment - Apache httpd mod_proxy
  [631] Apache httpd to Tomcat - jk v proxy - (2006-03-03)
  [1566] Strange behaviour of web directory requests without a trailing slash - (2008-03-06)
  [1767] mod_proxy and mod_proxy_ajp - httpd - (2008-08-22)
  [1944] Forwarding session and cookie requests from httpd to Tomcat - (2008-12-14)
  [2062] Virtual hosting and mod_proxy forwarding of different domains (httpd) - (2009-03-01)
  [2273] Three recent questions on Tomcat Convertors - (2009-07-07)
  [2325] Apache, Tomcat, mod_proxy - (2009-08-06)
  [3680] How can I run multiple web servers behind a single IP address? - (2012-04-02)

A603 - Web Application Deployment - Further httpd Configuration
  [345] Spotting a denial of service attack - (2005-06-12)
  [466] Separating 'per instance' data from binaries and web sites - (2005-10-16)
  [526] Apache httpd - serving web documents from different directories - (2005-12-12)
  [550] 2006 - Making business a pleasure - (2006-01-01)
  [649] Denial of Service ''attack'' - (2006-03-17)
  [662] An unhelpful error message from Apache httpd - (2006-03-30)
  [755] Using different URLs to navigate around a single script - (2006-06-11)
  [853] To list a directory under httpd on a web server, or not? - (2006-09-02)
  [1009] Passing GET parameters through Apache mod_rewrite - (2006-12-27)
  [1080] httpd.conf or .htaccess? - (2007-02-14)
  [1207] Simple but effective use of mod_rewrite (Apache httpd) - (2007-05-27)
  [1351] Compressing web pages sent out from server. Is it worth it? - (2007-09-14)
  [1355] .php or .html extension? Morally Static Pages - (2007-09-17)
  [1381] Using a MySQL database to control mod_rewrite via PHP - (2007-10-06)
  [1551] Which modules are loaded in my Apache httpd - (2008-02-23)
  [1554] Online hotel reservations - Melksham, Wiltshire (near Bath) - (2008-02-24)
  [1564] Default file (MiMe types) for Apache httpd and Apache Tomcat - (2008-03-04)
  [1619] User and Group settings for Apache httpd web server - (2008-04-22)
  [1636] What to do if the Home Page is missing - (2008-05-08)
  [1707] Configuring Apache httpd - (2008-07-12)
  [1762] WEB-INF (Tomcat) and .htaccess (httpd) - (2008-08-20)
  [1778] Pointing all the web pages in a directory at a database - (2008-08-30)
  [1954] mod_rewrite for newcomers - (2008-12-20)
  [1955] How to avoid duplicating web page maintainance - (2008-12-20)
  [1974] Moving a directory on your web site - (2009-01-03)
  [2060] Database connection Pooling, SSL, and command line deployment - httpd and Tomcat - (2009-03-01)
  [2272] Monitoring and loading tools for testing Apache Tomcat - (2009-07-07)
  [2478] How did I do THAT? - (2009-10-26)
  [2900] Redirecting a page - silent, temporary or permanent? - (2010-08-03)
  [3133] An image from a website that occasionally comes out as hyroglyphics - (2011-01-14)
  [3449] Apache Internal Dummy Connection - what is it and what should I do with it? - (2011-09-19)
  [3635] Parse error: parse error, unexpected T_STRING on brand new web site - why? - (2012-03-03)
  [3862] Forwarding a whole domain, except for a few directories - Apache http server - (2012-09-17)
  [3955] Building up from a small PHP setup to an enterprise one - (2012-12-16)
  [4001] Helping search engines with appropriate 400 error codes - (2013-02-11)
  [4307] Identifying and clearing denial of service attacks on your Apache server - (2014-09-27)


Back to
1200 miles in 3 days
Previous and next
or
Horse's mouth home
Forward to
Hotel - online feedback forms compared
Some other Articles
Train service - petititon reply
mysqldump and mysqlrestore
Hotel - online feedback forms compared
Sharing the load with Apache httpd and perhaps Tomcat
1200 miles in 3 days
The Last Word on the road
Origin of Jack and Jill and little Jack Horner
Newport Male Voice Choir
PHP adding arrays / summing arrays
Unexpected visitors to our site
4759 posts, page by page
Link to page ... 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96 at 50 posts per page


This is a page archived from The Horse's Mouth at http://www.wellho.net/horse/ - the diary and writings of Graham Ellis. Every attempt was made to provide current information at the time the page was written, but things do move forward in our business - new software releases, price changes, new techniques. Please check back via our main site for current courses, prices, versions, etc - any mention of a price in "The Horse's Mouth" cannot be taken as an offer to supply at that price.

Link to Ezine home page (for reading).
Link to Blogging home page (to add comments).

You can Add a comment or ranking to this page

© WELL HOUSE CONSULTANTS LTD., 2024: 48 Spa Road • Melksham, Wiltshire • United Kingdom • SN12 7NY
PH: 01144 1225 708225 • EMAIL: info@wellho.net • WEB: http://www.wellho.net • SKYPE: wellho

PAGE: http://www.wellho.info/mouth/1121_Sha ... omcat.html • PAGE BUILT: Sun Oct 11 16:07:41 2020 • BUILD SYSTEM: JelliaJamb