Disclosed is a system for servers to redirect client requests to other
servers in order to distribute client traffic among the servers. A client
is assigned to a server although the client may be unaware of that
assignment. When the client accesses a server, a server possibly
identified to the client by a name service, the server checks the
client's assignment. If the client is not assigned to this server, then
in some scenarios this server redirects the client to its assigned
server. The client responds by sending its request to the assigned
server. In other scenarios, the first server accessed by the client
proxies the client's traffic to the assigned server. A database is kept
of client-to-server assignments. If the present load distribution is less
than ideal (e.g., clients are assigned to an unavailable server), then
the assignment database is updated to reflect how the load should be
distributed.