This is the second in a series of blog posts leading up to my presentation on Clustering at CFUnited on June 20, 2008 at 2:00PM. Clustering has been available to us in two apparently different forms. Hardware Clustering and Software Clustering. I say apparently different as some digging reveals interesting items, particularly as they relate to the current Software Clustering offered with ColdFusion – JRun.
Before looking more deeply into those issues, I wanted to lay out some basic differences between Hardware and Software Clustering. In my view a Hardware Clustering system exists when there is a dedicated piece of hardware whose only job is to handle Clustering (Fail-Over and/or Load-Balancing). One detail of note here, the Hardware Clustering device needs Clustering Software to operate.
Software Clustering typically means that the Clustering Software is installed on an existing server, not a dedicated Hardware device. One noted example of Software Clustering is Windows Network Load Balancing (aka NLB). This is a bit of a misnomer, as this is a Clustering mechanism which includes Load-Balancing as well as Fail-Over. Another example of Software clustering is the Clustering offered in ColdFusion-JRun which is actually based on J2EE standards.
If we dig a little deeper into the current J2EE clustering used in ColdFusion and JRun; since CF moved to Java with the MX version forward. We see what I would class as a subset of full Software Clustering. The reason I believe this is that J2EE clustering as applied the CF-JRun is a sub-set of Software Clustering is that it is purely peer-to-peer with no overall service watching all Cluster members. Typically we would not only have multiple ColdFusion severs-instances but also multiple web servers or we would not have full redundancy. Fail-Over over is not covered at the CF-JRun level if a Web server fails. There has to be a higher level system to do this such as Windows NLB or a Hardware Clustering device. As an historical point; prior to MX, ColdFusion-JRun had a much more fully featured Software Clustering system called “ClusterCATS”, this did embrace to concept of a central monitoring-management service and Web server Fail-Over. This was always tricky though if ColdFusion was deployed in the “distributed-mode” where the Web server and ColdFusion were on different physical devices.
The last consideration in this piece, is when would we use Hardware or Software Clustering or both. Typically Hardware Clustering scenarios are much more robust than Software Clustering, as that is their only job in life. Having said that; Windows NLB claims support for up to 32 servers. Going back to the Allaire-ColdFusion clustering, ClusterCATS, our testing showed that 8 servers was a good point to consider Hardware Clustering.
Lastly, the overall term here is “Clustering” and within Clustering we have Fail-Over and Load-Balancing so the often used term “Load Balancing Device” should actually be “Clustering Device”.