Friday, February 29, 2008

Load Balancing Web Applications

by Vivek Viswanathan
09/28/2001

http://www.onjava.com/pub/a/onjava/2001/09/26/load.html?page=1

A cluster is a group of servers running a Web application simultaneously, appearing to the world as if it were a single server. To balance server load, the system distributes requests to different nodes within the server cluster, with the goal of optimizing system performance. This results in higher availability and scalability -- necessities in an enterprise, Web-based application. High availability provided by redundant resources. Scalability is an application's ability to support a growing number of users.

DNS round robin and Hardwaer load balancers are the two main methods available to balance a server load.

For DNS round robin, duplicate servers are required to form a cluster, each server
within the cluster takes their turn to answer incoming request. It is simple, easy to setup and inexpensive. However, it cannot support server affinity. This method balance the number of connection to each server not the actual loading.

For hardware load balancer: It use a virutal IP to represent the the IP of all servers in the cluster. When a request comes to the load balancer, it rewrites the request's header to point to other machines in the cluster. If a machine is removed from the cluster, the request doesn't run the risk of hitting a dead server, since all of the machines in the cluster appear to have the same IP address. This address remains the same even if a node in the cluster is down. It provides server affinity and high availability throught failover.

No comments: