Synchronizing state among load balancer components
First Claim
1. At a computer system including a router and a load balancing system, the load balancing system including a load balancer, one or more other load balancers, and a plurality of destination hosts, the router connected to a network and being a point of ingress into the load balancing system, components on the network using a virtual electronic address to communicate with the load balancing system, a method for sharing state between load balancers, the method comprising:
- an act of the load balancer receiving a packet from the router, the packet containing source electronic address information identifying a source on the wide area network and destination electronic address information including the virtual electronic address;
an act of the load balancer determining that the packet is for an existing data flow;
an act of the load balancer using an algorithm to generate a data flow identifier for the existing data flow from the packet contents, including the packet headers;
an act of load balancer determining that the load balancer lacks sufficient information to identify the destination host, from among the plurality of destination hosts, that corresponds to the existing data flow, including;
an act of the load balancer determining that the load balancer does not have any cached state mapping the existing data flow to one of the destination hosts in the plurality of destination hosts;
in response to the determination that the load balancer lacks sufficient information to identify the destination host that corresponds to the existing data flow;
an act of the load balancer identifying an owner load balancer that is designated as the owner of the existing data flow, the owner load balancer selected from among the one or more other load balancers; and
an act of the load balancer sending a request for data flow state information to the owner load balancer, wherein the act of the load balancer sending the request for data flow state information to the owner load balancer comprises an act of the load balancer sending the packet to the owner load balancer;
an act of the load balancer receiving state information from the owner load balancer, the state information identifying the destination host that corresponds to the existing data flow; and
an act of the load balancer caching the received state information.
2 Assignments
0 Petitions
Accused Products
Abstract
The present invention extends to methods, systems, and computer program products for synchronizing state among load balancer components. Embodiments of the invention include load balancers using a consistent hashing algorithm to decide how new connections should be load balanced. Use of consistent hashing algorithm permits load balancers to work in a stateless manner in steady state. Load balancers start keeping flow state information (destination address for a given flow) about incoming packets when it is needed, i.e. such as, for example, when a change in destination host configuration is detected. State information is shared across load balancers in a deterministic way, which allows knowing which load balancer is authoritative (e.g., is the owner) for a given flow. Each load balancer can reach the authoritative load balancer to learn about a flow that cannot be determined locally.
-
Citations
18 Claims
-
1. At a computer system including a router and a load balancing system, the load balancing system including a load balancer, one or more other load balancers, and a plurality of destination hosts, the router connected to a network and being a point of ingress into the load balancing system, components on the network using a virtual electronic address to communicate with the load balancing system, a method for sharing state between load balancers, the method comprising:
-
an act of the load balancer receiving a packet from the router, the packet containing source electronic address information identifying a source on the wide area network and destination electronic address information including the virtual electronic address; an act of the load balancer determining that the packet is for an existing data flow; an act of the load balancer using an algorithm to generate a data flow identifier for the existing data flow from the packet contents, including the packet headers; an act of load balancer determining that the load balancer lacks sufficient information to identify the destination host, from among the plurality of destination hosts, that corresponds to the existing data flow, including; an act of the load balancer determining that the load balancer does not have any cached state mapping the existing data flow to one of the destination hosts in the plurality of destination hosts; in response to the determination that the load balancer lacks sufficient information to identify the destination host that corresponds to the existing data flow; an act of the load balancer identifying an owner load balancer that is designated as the owner of the existing data flow, the owner load balancer selected from among the one or more other load balancers; and an act of the load balancer sending a request for data flow state information to the owner load balancer, wherein the act of the load balancer sending the request for data flow state information to the owner load balancer comprises an act of the load balancer sending the packet to the owner load balancer; an act of the load balancer receiving state information from the owner load balancer, the state information identifying the destination host that corresponds to the existing data flow; and an act of the load balancer caching the received state information. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. At a computer system including a router and a load balancing system, the load balancing system including a load balancer, one or more other load balancers, and a plurality of destination hosts, the router connected to a network and being a point of ingress from the wide area network into the load balancing system, components on the network using a virtual electronic address to communicate with the load balancing system, a method for sharing state between load balancers, the method comprising:
-
an act of a first load balancer receiving a packet directly from a second load balancer, the packet containing source electronic address information identifying a source on the network and destination electronic address information including the virtual electronic address and which is sufficient to identify a data flow associated with the packet, wherein the packet was sent to the first load balancer in response to a determination being made that the second load balancer lacks sufficient information to identify a destination host corresponding to the dataflow, and wherein the packet was routed to the second load balancer by the router; an act of the first load balancer determining that the received packet is for an existing data flow; an act of the first load balancer determining that the first load balancer is the owner of the existing data flow; an act of the first load balancer determining that the first load balancer has cached state for the existing data flow, the cached state mapping the existing data flow to one of the destination hosts in the plurality of destination hosts; an act of the first load balancer sending the received packet to the destination host mapped to the existing data flow; and an act of first load balancer sending the cached state to the second load balancer for use in appropriately forwarding subsequent packets in the existing data flow to the one of the destination hosts. - View Dependent Claims (13, 14, 15, 16)
-
-
17. A computer system including a router and a load balancing system, the load balancing system including a load balancer, one or more other load balancers, and a plurality of destination hosts, the router connected to a network and being a point of ingress into the load balancing system, components on the network using a virtual electronic address to communicate with the load balancing system, the computing system further comprising one or more storage media having stored computer-executable instructions which, when executed by the at least one processor, implement a method for sharing state between load balancers, the method comprising:
-
an act of the load balancer receiving a packet from the router, the packet containing source electronic address information identifying a source on the wide area network and destination electronic address information including the virtual electronic address; an act of the load balancer determining that the packet is for an existing data flow; an act of the load balancer using an algorithm to generate a data flow identifier for the existing data flow from the packet contents, including the packet headers; an act of load balancer determining that the load balancer lacks sufficient information to identify the destination host, from among the plurality of destination hosts, that corresponds to the existing data flow, including; an act of the load balancer determining that the load balancer does not have any cached state mapping the existing data flow to one of the destination hosts in the plurality of destination hosts; in response to the determination that the load balancer lacks sufficient information to identify the destination host that corresponds to the existing data flow; an act of the load balancer identifying an owner load balancer that is designated as the owner of the existing data flow, the owner load balancer selected from among the one or more other load balancers; and an act of the load balancer sending a request for data flow state information to the owner load balancer, wherein the act of the load balancer sending the request for data flow state information to the owner load balancer comprises an act of the load balancer sending the packet to the owner load balancer; an act of the load balancer receiving state information from the owner load balancer, the state information identifying the destination host that corresponds to the existing data flow; and an act of the load balancer caching the received state information. - View Dependent Claims (18)
-
Specification