||Server Cluster Load Balancing
Nowadays, Internet enters the lives of more and
more people around the world. They use it in the office and at home,
in their business, for education, entertainment and even for shopping.
As the number and variety of available services increase, the public
expectations of their quality increase too. Now users are not willing
to wait for the result of their requests. Instead they go to another
site or Service Provider.
There are two ways to meet the ever-increasing
demand for Internet server performance.
The Classical Solution
The first way is the single server solution in which
you upgrade the server to a higher performance one. There is the
problem that soon this server can be overloaded again and a next
upgrade will be required. The whole process of upgrading is complex,
time consuming and expensive.
The Modern Approach
The other way of solving the problem is to use a
cluster of servers serving clients with one and the same service
using synchronized contents. When the requests for the Internet
service increase you simply add new servers to the cluster to meet
the increased traffic.
The multi-server solution requires incoming traffic
to be distributed (loadbalanced) among the individual servers.
One method for loadbalancing is the Round-Robin
DNS method. This method maps a single name to the different IP address
of the cluster server in a round-robin manner. This way different
clients should be mapped to different servers from the cluster distributing
the workload among the servers. In practice, because of the caching
nature of clients and the hierarchical DNS system this method easily
leads to dynamic load imbalance among the servers. Some servers
can be overloaded while others have resource to handle additional
traffic. Another drawback of this method is that if a server fails,
the clients who are directed to that server will not be served and
the problem will exist even if they try to reconnect.
The better traffic management solution is to use
a loadbalancer to distribute traffic among cluster servers. The
combined service provided by the cluster servers (real servers)
appears as a virtual service on a single IP address to end-users.
The traffic is distributed on per connection rather then per user
basis, which allows better load distribution among the real servers.
If one of the real servers fails, the loadbalancer can take traffic
away from it, until the server recovers this way providing end users
with uninterruptible service. Server management and administration
is much more easy too, as servers can be transparently brought in
or taken out of the cluster for upgrade or maintenance.
The loadbalancer solution also provides enhanced
scalability of the virtual server as the number of servers in the
cluster can go up to 100.
SysMaster features multiple loadbalancing algorithms.
Different loadbalancing techniques can be applied to server clusters
that enable network administrators to choose a configuration that
best meets their needs:
The Round-Robin loadbalancing algorithm redirects the network connections
to the different server in a round-robin manner. It treats all real
servers as equal regardless of number of connections or response
time. This algorithm is suitable when the real servers of the cluster
have equal processing capabilities. Otherwise some servers may receive
more connections than they can process while others will use just
a part of their resources.
Weighted Round-Robin Algorithm
The Weighted Round-Robin scheduling takes into account the different
processing capabilities of each server. Network managers assign
a performance weight to each server and a scheduling sequence in
automatically generated according to the server weight. The network
connections are directed to the different real servers according
to the scheduling sequence in a round-robin manner.
Using this method, the servers capable of processing
connections faster receive the largest number of connections.
The weighted round-robin does loadbalancing on
the basis of a static algorithm as the actual number of active connections
for each server is not taken into account. This way more real servers
can be managed simultaneously. However, if the load of the connections
vary highly, most of the long-time connections may concentrate on
a real server leading to load imbalance among the cluster servers.
Redirects a connection to the server with the least number of open
connections. This is a dynamic balancing algorithm, because it counts
open connections for each server dynamically. This algorithm is
suitable for a server cluster where all the servers are with similar
performance and the load of requests varies a lot.
Weighted Least-Connection Algorithm
The weighted least-connection algorithm is an extension of the least-connection
technique, in which administrators can assign a performance weight
to each real server. The servers with a higher weight value will
receive a larger part of the incoming connections at any one time.
Network administrators should take into account that the weighted
least connection algorithm requires an additional division when
the real server for each new connection is selected. That is why,
the number of the real servers that can be managed simultaneously
by SysMaster is reduced a little compared to the other algorithms.
Optimized Weighted Round Robin: This mode
is similar with the Weighted Round Robin algorithm with the addition
that each server can be dynamically assigned a weight depending
on its current availability and current load. This is achieved thanks
to the mechanism by which SysMaster intelligently measures the load
of every server in the server array which it manages.
Optimized Weighted Least Connections:
This mode is similar again to the Weighted Round Robin algorithm
but all weights are calculated dynamically to represent the current
responsiveness of the servers in the managed server array. Both
Optimized Weighted Round Robin and Optimized Weighted Least Connection
models are developed to closely follow and balance the deviations
of the load of each server as to achieve maximum efficiency and
speed from the server array as a whole.