Abstract:
Aspects of the subject matter described herein relate to client affinity in distributed load balancing systems. In aspects, a request from a requestor is sent to each server of a cluster. Each server determines whether it has affinity to the requestor. If so, the server responds to the request. Otherwise, if the request would normally be load balanced to the server, the server queries the other servers in the cluster to determine whether any of them have affinity to the requestor. If one of them does, the server drops the request and allows the other server to respond to the request; otherwise, the server responds to the request.
Abstract:
Described is a technology by which a relative load of network traffic handling is determined between servers of a cluster, based upon time values that correspond to time taken by each server to handle a packet. Load may be transferred between the servers based upon the relative load, for example by having a less-loaded server take some of the responsibility for processing incoming traffic from a more-loaded server. For example, the processing time of a server may be determined by when a receiving server receives a request packet, and when that server sends a return packet. A round trip time for a request and return communication may also be established. A logical tree of nodes representing the servers may be constructed to select pairs of servers for balancing with one another, with the selection algorithm operating recursively, in parallel, and/or repeatedly, until the cluster is balanced.