Part 1: The issue
The questions have always been in the back of my mind "What if my site is just too overloaded ? What if it crashes ?"....not that it matters that much to my personal sites...It's not like I have millions of users.....or that the world economy would fall over if my personal sites were down or just too slow...But still....I always felt the urge to play with solutions to overcome any performance and availability issues with my sites (but I will not stop playing Halo to make my site more performing..not that!!!). So I started my investigation on the subject....What could I put in place to provide me load balancing and high availability on a site ? I bumped, not surprisingly, into a ton of solutions...From dedicated hardware to complex software solutions. But....this being kind of "I want to explore it" experience and since I am not really not into throwing a ton of money into the experience, my aim was directed into trying to make the best of the cheapest solution possible. And there began my quest...
I was very close to getting a cheap BIG-IP. But most of what I could find on eBay was typically locked out systems or incomplete systems. Other solutions outside eBay were just outrageously expensive. For my pocket anyway. So....off with the hardware box solution...next!
I then bumped into a pretty interesting project called Ultra Monkey. I started having hope finally that I might be onto something. I jumped again onto eBay and got me an extremely expensive set of hardware (yeah sure!)...Two Pentium III 500Mhz for the much more agreeable price of $80 for both...Armed with those two and with my two other more decent computers, a Pentium 4 2.6 Ghz and a Pentium 4 2.8 Ghz, I started then to elaborate on an realistic, usable architecture to make load balancing and high availability possible on a short budget.
Plans taking shape...Ultra Monkey doing the management of my application, I started to think about issues like back-end application distribution and synchronization. With my first goal being to get to a solution for a Java Web application I looked a bit more into books on Tomcat...and eventually found the way to implement Tomcat clustering behind any load balancing and high availability solution. That led me to the final piece of this puzzle. I now have a solution that convinces me that I can put load balancing and high availability in place....Working on my personal sites...my site users probably could not care less, but I now can finally put it to rest....
More to follow in the next parts on this subject:
- Overall architecture
- Solutions for Load Balancing Layer
- Tomcat Clustering
- Remaining issues