| Before you can talk about differences between | | | | consuming memory and CPU resources. Of course, it |
| clustering and load balancing, and there are more than | | | | also adds another possible failure point to the data |
| a few, you’ve got to get the definitions straight. | | | | path. Since ADCs need no server-side components, |
| Clustering is often understood to mean the capability | | | | they remain completely transparent. |
| of some software to provide load balancing services, | | | | Making the choice |
| and load balancing is often used as a synonym for a | | | | Some would ask, Why do the extra work of building |
| hardware- or third-party-software-based solution. | | | | a distributed software system and cluster server |
| In practice, clustering is usually used with application | | | | setup when you can have multiple servers fulfilling |
| servers like IBM WebSphere, BEA WebLogic and | | | | specific roles such as separate database servers, |
| Oracle AS (10g). Also being used in that environment | | | | web servers, mail servers, etc. whenever necessary? |
| are load balancing features found in Application | | | | So, how do you choose? That depends on the |
| Delivery Controllers (ADC) like BIG-IP. (For simplicity, | | | | reasons you are considering this kind of solution in |
| we will talk about clustering versus ADC approaches.) | | | | the first place, and (perhaps) whether or not you |
| Scalability, horizontally speaking | | | | have to make an additional purchase to achieve |
| There are hardware load balancers, of course, but | | | | clustering capabilities for the particular application |
| there we talk about pools or farms, the server | | | | server you have. There is also the broader question |
| groupings where application requests get distributed. | | | | of whether or not you need (or want) to provide |
| It is in the software world that the term cluster is | | | | support for multiple application server brands. |
| applied to that same group. | | | | Clustering, of course, is proprietary to the application |
| Clustering will typically convert one instance of an | | | | server, but ADCs can provide services for any and all |
| application server to a master controller, then | | | | applications or web servers. |
| process/distribute requests to multiple instances using | | | | Clustering checklist |
| such industry standard algorithms as round robin, | | | | Pros: |
| weighted round robin or least connections. Clustering | | | | *Typically available with application server’s |
| is similar to load balancing in that it has horizontal | | | | enterprise package |
| scalability, a nearly transparent way to add additional | | | | *Doesn't require the highest level of networking |
| instances of application servers for increased capacity | | | | know-how |
| or response time performance. To ensure that an | | | | *Usually less costly than redundant ADC deployments |
| instance is actually available, clustering approaches | | | | Cons: |
| typically use an ICMP ping check or, sometimes, | | | | *High availability not assured with clustering solutions |
| HTTP or TCP connection checks. | | | | *Best practices deploy the cluster controller on |
| Health and transparency | | | | separate hardware |
| For load balancing, ADCs support the same industry | | | | *Node agents required on managed app server |
| algorithms, but have additional, complex | | | | instances |
| number-crunching processes, and check such | | | | *Clustering is "proprietary" (you can cluster only |
| parameters as per-server CPU and memory utilization, | | | | homogeneous servers) |
| fastest response times, etc. ADCs also support more | | | | ADC checklist |
| robust health monitoring than the simple app server | | | | Pros: |
| clustering solutions. This means they can verify | | | | *Provides high availability and load balancing in |
| content and do passive monitoring, dispensing with | | | | heterogeneous environments |
| even the low impact of health checks on app server | | | | *Added value of application optimization, security and |
| instances. | | | | acceleration |
| For applications that require the user to interact with | | | | *No changes required to applications or servers |
| the same server during a session, clustering uses | | | | where they’re deployed |
| server affinity to get the user there. This is most | | | | Cons: |
| common during the execution of a process like order | | | | *An additional piece of infrastructure in the |
| entry, where the session is used between pages | | | | architecture |
| (requests) to store data needed to close a | | | | *Generally more costly than clustering solutions |
| transaction, like a shopping cart. | | | | *Could require new skill set to deploy/manage |
| For the same situation, ADCs use persistence. | | | | Recommendations |
| Clustering solutions are usually somewhat limited as to | | | | Get more insight into performance, configurations and |
| the variables they can use, while ADCs can not only | | | | case studies by reading some testing-based articles |
| use traditional application variables but also get other | | | | on ADCs, and testing-based reviews of server |
| information from the application or network-based | | | | clustering. Look for case studies that mirror your own |
| data. | | | | situation, as closely as possible, and talk to people |
| More than a few clustering solutions need | | | | who are doing what you are planning (or thinking |
| node-agents deployed on each instance of an | | | | about). Unlike government going into the car business |
| application server that is clustered by a controller. It | | | | or taking over health care, do not do something |
| may not be a burden as far as deploying and | | | | quickly just to be seen doing something. Take care |
| managing it, since it is often in place, but it is still | | | | with this decision. |
| means more processes running on the servers and | | | | |