System for distributing load over multiple servers at an internet site
First Claim
1. A method for distributing packets among a plurality of physical machines, comprising:
- establishing a plurality of virtual machines each associated with one or more physical machines;
receiving a packet associated with a session and indicating one of the plurality of virtual machines;
determining predicted response times for each physical machine, wherein predicted response times are determined according to one of a number of active connections for each physical machine and a time delay interval for each physical machine selected for the associated virtual machine;
identifying a particular physical machine that is predicted to process the packet in the shortest amount of time;
identifying a particular virtual machine associated with the particular physical machine;
routing the packet to the particular physical machine associated with the particular virtual machine.
1 Assignment
0 Petitions
Accused Products
Abstract
Disclosed is a system and method for distributing connections among a plurality of servers at an Internet site. All connections are made to a single IP address and a local director selects the server from among the plurality of servers which is to receive the connection. Thus, the DNS server is not relied upon to distribute connections, and the connection distribution scheme is not avoided when DNS is bypassed. In one embodiment, a session distribution scheme is implemented such that connections are distributed to the server in the group of servers which has the fewest connections of the group. In other embodiments, other session distribution schemes which route connections based on the predicted response times of the servers or according to a round robin scheme are used.
61 Citations
30 Claims
-
1. A method for distributing packets among a plurality of physical machines, comprising:
-
establishing a plurality of virtual machines each associated with one or more physical machines; receiving a packet associated with a session and indicating one of the plurality of virtual machines; determining predicted response times for each physical machine, wherein predicted response times are determined according to one of a number of active connections for each physical machine and a time delay interval for each physical machine selected for the associated virtual machine; identifying a particular physical machine that is predicted to process the packet in the shortest amount of time; identifying a particular virtual machine associated with the particular physical machine; routing the packet to the particular physical machine associated with the particular virtual machine.
-
-
2. The method of claim 1, further comprising:
-
determining a number of active connections for each physical machine associated with the virtual machine; identifying a physical machine having the fewest active connections as the particular physical machine.
-
-
3. The method of claim 1, further comprising:
-
determining a time delay interval for each physical machine associated with the virtual machine, the time delay interval being a time between receipt of a packet and generation of a response to the packet; identifying a physical machine having the shortest time delay interval as the particular physical machine.
-
-
4. The method of claim 3, further comprising:
-
identifying a physical machine not having the shortest time delay interval as the particular physical machine; establishing a new time delay interval for the particular physical machine.
-
-
5. The method of claim 1, further comprising:
-
determining whether a physical machine has been newly activated; successively selecting the physical machines as the particular physical machine in response to a newly activated physical machine until the newly activated physical machine has stabilized.
-
-
6. The method of claim 1, further comprising:
-
determining whether a physical machine has failed; overriding identification of the failed physical machine as the particular physical machine.
-
-
7. The method of claim 1, further comprising:
-
determining whether the packet associated with the session has an originating address associated with a previous session; identifying a same physical machine as identified for the previous session as the particular physical machine.
-
-
8. The method of claim 7, wherein the same physical machine is identified if the session falls within a set period of time from the previous session.
-
9. A system for distributing packets among a plurality of physical machines, comprising:
-
means for storing an association of a plurality of virtual machines each associated with one or more physical machines; means for receiving a packet associated with a session and indicating one of the plurality of virtual machines; means for determining predicted response times for each physical machine, wherein predicted response times are determined according to one of a number of active connections for each physical machine and a time delay interval for each physical machine selected for the associated virtual machine; means for identifying a particular physical machine that is predicted to process the packet in the shortest amount of time; means for identifying a particular virtual machine associated with the particular physical machine; means for routing the packet to the particular physical machine associated with the particular virtual machine.
-
-
10. The system of claim 9, further comprising:
-
means for determining a number of active connections for each physical machine associated with the virtual machine; means for identifying a physical machine having the fewest active connections as the particular physical machine.
-
-
11. The system of claim 9, further comprising:
-
means for determining a time delay interval for each physical machine associated with the virtual machine, the time delay interval being a time between receipt of a packet and generation of a response to the packet; means for identifying a physical machine having the shortest time delay interval as the particular physical machine.
-
-
12. The system of claim 11, further comprising:
-
means for identifying a physical machine not having the shortest time delay interval as the particular physical machine; means for establishing a new time delay interval for the particular physical machine.
-
-
13. The system of claim 9, further comprising:
-
means for determining whether a physical machine has been newly activated; means for successively selecting the physical machines as the particular physical machine in response to a newly activated physical machine until the newly activated physical machine has stabilized.
-
-
14. The system of claim 9, further comprising:
-
means for determining whether a physical machine has failed; means for overriding identification of the failed physical machine as the particular physical machine.
-
-
15. The system of claim 9, further comprising:
-
means for determining whether the packet associated with the session has an originating address associated with a previous session; means for identifying a same physical machine as identified for the previous session as the particular physical machine.
-
-
16. The system of claim 15, wherein the same physical machine is identified if the session falls within a set period of time from the previous session.
-
17. A computer readable medium including code for distributing packets among a plurality of physical machines, the code operable to:
-
establish a plurality of virtual machines each associated with one or more physical machines; receive a packet associated with a session and indicating one of the plurality of virtual machines; determine predicted response times for each physical machine, wherein predicted response times are determined according to one of a number of active connections for each physical machine and a time delay interval for each physical machine selected for the associated virtual machine; identify a particular physical machine that is predicted to process the packet in the shortest amount of time; identify a particular virtual machine associated with the particular physical machine; route the packet to the particular physical machine associated with the particular virtual machine.
-
-
18. The computer readable medium of claim 17, wherein the code is further operable to:
-
determine a number of active connections for each physical machine associated with the virtual machine; identify a physical machine having the fewest active connections as the particular physical machine.
-
-
19. The computer readable medium of claim 17, wherein the code is further operable to:
-
determine a time delay interval for each physical machine associated with the virtual machine, the time delay interval being a time between receipt of a packet and generation of a response to the packet; identify a physical machine having the shortest time delay interval as the particular physical machine.
-
-
20. The computer readable medium of claim 19, wherein the code is further operable to:
-
identify a physical machine not having the shortest time delay interval as the particular physical machine; establish a new time delay interval for the particular physical machine.
-
-
21. The computer readable medium of claim 17, wherein the code is further operable to:
-
determine whether a physical machine has been newly activated; successively select the physical machines as the particular physical machine in response to a newly activated physical machine until the newly activated physical machine has stabilized.
-
-
22. The computer readable medium of claim 17, wherein the code is further operable to:
-
determine whether a physical machine has failed; override identification of the failed physical machine as the particular physical machine.
-
-
23. The computer readable medium of claim 17, wherein the code is further operable to:
-
determine whether the packet associated with the session has an originating address associated with a previous session; identify a same physical machine as identified for the previous session as the particular physical machine.
-
-
24. The computer readable medium of claim 23, wherein the same physical machine is identified if the session falls within a set period of time from the previous session.
-
25. A system for distributing packets among a plurality of physical machines, comprising:
-
a plurality of physical machines; a local director operable to establish a plurality of virtual machines each associated with one or more of the plurality of physical machines, the local director operable to receive a packet associated with a session and indicating one of the plurality of virtual machines, the local director operable to determine predicted response times for each physical machine according to a session distribution scheme, wherein predicted response times are determined according to one of a number of active connections for each physical machine and a time delay interval for each physical machine selected for the associated virtual machine, the local director operable to identify a particular physical machine that is predicted to process the packet in the shortest amount of time, the local director operable to identify a particular virtual machine associated with the particular physical machine, the local director operable to route the packet to the particular physical machine associated with the particular virtual machine identified in the session distribution scheme.
-
-
26. The system claim 25, wherein the local director is operable to determine a number of active connections for each physical machine associated with the virtual machine, the local director operable to identify a physical machine having the fewest active connections as the particular physical machine.
-
27. The system of claim 25 wherein the local director is operable to determine a time delay interval for each physical machine associated with the virtual machine, the time delay interval being a time between receipt of a packet and generation of a response to the packet, the local director operable to identify a physical machine having the shortest time delay interval as the particular physical machine.
-
28. The system of claim 27, wherein the local director is operable to periodically age and update the time delay interval for each physical machine.
-
29. The system of claim 27 wherein the local director is operable to identify a physical machine not having the shortest time delay interval as the particular physical machine, the local director operable to establish a new time delay interval for the particular physical machine.
-
30. The system of claim 25, wherein the local director is operable to determine whether a physical machine has been newly activated, the local director operable to successively select the physical machines as the particular physical machine in response to a newly activated physical machine until the newly activated physical machine has stabilized.
Specification