Clustering as understood by me is the grouping of two or more servers so that their combined power can be utilized for enhanced performance as well as for providing better data storage. I want to have a comparison between the advantages and disadvantages of clustering, so as to decide whether to use clustering in the enterprise applications or not. Anyhelp in this regard will be highly appreciated.
Hi, although I don't have a complete detail pro vs con list, but this is the basic idea of how Clustering works. Through that you see advantage vs disadvantage.
On big enterprise applcation (say over 1k request at any given time), doesn't matter if you are running linux or what not, 1 box is not gonna be enough, you will need a copy of the same application on muplitple boxes to share the loads.
To share loads, we use "content switch"(like a router), all incoming request go through content switch and will route to the correct server to process the request.
With content switch you have a potential problem: when the first request we may be able to point the correct server, but from there, we won't know which server will take the second request.
One of the solution to solve that problem is call "stickines", meaning it force certain request back to the same server so you won't lost your stage of information (and the question goes back to which server takes which load, when, how?).
Another way to look at the same problem, is when using Session variable. Session is server specific. If we have 3 servers, server 1 have a session, server 2 and 3 won't have the same information. if Content switch doesn't support stickiness, you will lost session variable.
One way to solve it, is to have a central machine to handle sessions variables. Call "State Server", the problem with that is if State Server down, all your other applications wil be done all together.
Another way to solve the problem is to use Sql server to store sessions. sql server can run on cluster very easily, if 1 down, the next sql server can back up (assuming you have SQL servers mirror to each other).
On a hot live application, you probably want to keep the server up and serve applications to its users even when you are applying patch, upgrade, or maintence. You won't want have your users to wait til you are done before they go back to work (especially if that company don't pay for overtime ha!).
In summary of performance:
-The fastest performance is not using any session
-second fastest is InProc (Session within same server)
-Third faster is State Server
-And SQL server is slowest
Right there, without talking about the time and $ it takes to develop a application, just looking at the setup itself. if you got 6 machines, 4 is ASP.NET and 2 is SQL server. You are paying 6 windoze licenses and 2 sql lienses. (Thats why so many company are looking forward using MySql mirror)
I guess that's my briefing of "advantage" vs. "disadvantage".
Last edited by sirpelidor; 03-22-2006 at 01:37 PM.
Distributed Enterprise applications greatly benefit from the concept of clustering as well as caching.
Same data that is required repetitively by applications instead of being created again for each time it is required can be kept in a cache after initial creation from where it would be available to all the nodes in a cluster, hence minimizing the data access operations as well as the the processing and time required for its creation and transportation.
As the number of users increase, the performance would be effected negatively. Clustering solves this as the load of increasing users can be evened out on all the nodes of the cluster.
Combined resources of all the nodes of a cluster would greatly boost the performance, as well as allow flexible scalability.
Another node can take on the responsibilities of a node that expires without letting the affect of the expired node to be felt by the users.
Caching provides better data management as well as fast data access.
Efficient recovery from any sort of malfunction is possible.
• Reduced single points of failure through Exchange Virtual Server (EVS) failover functionality.
• Ability to perform maintenance and upgrades with limited downtime.
• Ability to easily scale up your cluster to a maximum of seven active EVSs.
Clustering does not provide protection from:
• Shared storage failures.
• Network service failures.
• Operational errors.
• Site disasters (unless a geographically dispersed clustering solution has been implemented).
Indeed clustering has many advantages. You may use some commercial product like NCache for www.alachisoft.com that let you resolve the issues faced in the clustered environment. This product will help you resolve many issues described above.
When an enterprise web application is accessed by multiple users at a time, mostly a load balancer is used to balance the workload among the servers. In typical scenario once a user accesses the application, a state session is created. Next time when the same user accesses the application, it will have to wait for the access to the same server as his session state is present there, not on any other server. Here the use of the load balancer fails.
While using NCache, the servers are clustered and have a shared cache. Now when a user utilizes the application, the session state is placed in the shared cache. Now the load balancer can direct the user to any server in the cluster for future entries as all will have access to the session state of that user through the shared cache.
Now the load balancer can equally utilize all the nodes in the cluster (servers) and spread workload evenly. There is no single-point-of-failure, if one server goes down, there is no interruption felt by users as other servers take its responsibilities through the shared cache. Data accession is faster hence enhancing the performance.
Clustering has many benefits. Donwtime is reduced, it provides easy network management and power. There is a well written article on this site: http://www.ozekiphone.com/what-is-voip-cluster-355.html
It is on the site of Ozeki Phone System XE and the explanation of clusters is helped with a video tutorial.