The results presented in Section 7.4 show that classifying the requests that arrive into a cluster of Web servers according to their processing time (assuming linear dependence with the size of the requested file) improves cluster performance and handles well the variability in the service process.
Nevertheless, the policy has two drawbacks: (a) the front-end dispatcher does not always know the file sizes of each request in advance and (b) several servers may serve jobs within the same size-class, which further complicates the policy by requiring efficient scheduling within this subcluster of servers.
We address these two problems and propose a load balancing policy
for clustered Web servers, which we call EQUILOAD.
This policy requires partitioning the possible request sizes into
intervals,
,
, ...,
,
so that server
is responsible for processing requests of size between
and
. In practice, the size corresponding to an incoming URL
request might not be available to the front-end dispatcher,
but this problem can be solved using a two-stage allocation policy.
First, the dispatcher assigns each incoming request very quickly to
one of the
back-end servers using a simple policy such as uniform
random (or round-robin, which is even easier to implement in practice).
Then, when server
receives a request from the dispatcher, it looks
up its size
and, if
, it puts the request in
its queue, otherwise it redirects it to the server
satisfying
(of course any request that server
receives from another server is
instead enqueued immediately, since it is guaranteed to be in the correct
size range).
This policy looks to be similar with the server-based architecture
described in Subsection 7.1, but
we propose to have a front-end dispatcher not a DNS server that handles
the incoming requests.
Such policies that are based on redirecting requests among servers in a
cluster have been implemented [2,18].
Letting the back-end servers reallocate requests among themselves is sensible, since the size information is certainly available to them. The potential advantages of such policy are clear:
For the first challenge, the objective is to provide each back-end server
with (approximately) the same ``load'' by choosing the intervals
so that the requests routed to server
contribute
a fraction
of the mean
of the distribution size.
In other words, we seek to determine
such
that, for
,