Distributed load balancer
First Claim
1. A distributed load balancer system, comprising:
- a plurality of load balancer nodes in a provider network; and
a plurality of server nodes in the provider network, each comprising a server and a load balancer module;
wherein the plurality of load balancer nodes is configured to distribute packet flows from one or more clients among the plurality of server nodes, wherein, to distribute the packet flows among the plurality of server nodes, the plurality of load balancer nodes is configured to;
select server nodes from among the plurality of server nodes to receive connection requests for the packet flows from the one or more clients; and
send the connection requests to the selected server nodes;
wherein the load balancer module on each server node is configured to;
receive a connection request of a client for a packet flow from one of the plurality of load balancer nodes;
determine if a data communications protocol connection for the packet flow is to be accepted by the server on the server node;
if the server cannot accept the data communications protocol connection, reject the connection request; and
if the server can accept the data communications protocol connection, cooperate with the plurality of load balancer nodes to establish the data communications protocol connection for the packet flow between the client and the server;
wherein, after establishing the data communications protocol connection for the packet flow between the client and the server, the load balancer module on each server node is further configured to;
receive incoming data communications protocol packets for the data communications protocol connection from one of the load balancer nodes;
send the received incoming data communications protocol packets to the server on the server node;
select one of the plurality of load balancer nodes to act as an egress server for the data communications protocol connection, wherein the selection is based at least in part on an identifier for the packet flow between the client and the server;
intercept outgoing data communications protocol packets for the data communications protocol connection; and
send the intercepted outgoing data communications protocol packets to the selected egress server for delivery to the client.
1 Assignment
0 Petitions
Accused Products
Abstract
A distributed load balancer in which a router receives packets from at least one client and routes packet flows to multiple load balancer (LB) nodes according to a per-flow hashed multipath routing technique. For a given packet flow, the LB nodes randomly select a server node as a target for the packet flow from among multiple server nodes and send a connection request to the server node. A load balancer module on the server node makes the decision on whether to accept or reject the connection based on one or more metrics indicating a respective server'"'"'s current load. If the module accepts the connection request, a connection is established between the server and the client. Otherwise, the load balancer nodes may select another server node and try again. The connections established between clients and servers pass through the load balancer nodes, but are not terminated at the load balancer nodes.
49 Citations
20 Claims
-
1. A distributed load balancer system, comprising:
-
a plurality of load balancer nodes in a provider network; and a plurality of server nodes in the provider network, each comprising a server and a load balancer module; wherein the plurality of load balancer nodes is configured to distribute packet flows from one or more clients among the plurality of server nodes, wherein, to distribute the packet flows among the plurality of server nodes, the plurality of load balancer nodes is configured to; select server nodes from among the plurality of server nodes to receive connection requests for the packet flows from the one or more clients; and send the connection requests to the selected server nodes; wherein the load balancer module on each server node is configured to; receive a connection request of a client for a packet flow from one of the plurality of load balancer nodes; determine if a data communications protocol connection for the packet flow is to be accepted by the server on the server node; if the server cannot accept the data communications protocol connection, reject the connection request; and if the server can accept the data communications protocol connection, cooperate with the plurality of load balancer nodes to establish the data communications protocol connection for the packet flow between the client and the server; wherein, after establishing the data communications protocol connection for the packet flow between the client and the server, the load balancer module on each server node is further configured to; receive incoming data communications protocol packets for the data communications protocol connection from one of the load balancer nodes; send the received incoming data communications protocol packets to the server on the server node; select one of the plurality of load balancer nodes to act as an egress server for the data communications protocol connection, wherein the selection is based at least in part on an identifier for the packet flow between the client and the server; intercept outgoing data communications protocol packets for the data communications protocol connection; and send the intercepted outgoing data communications protocol packets to the selected egress server for delivery to the client. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A method, comprising:
-
performing, by one or more of a plurality of load balancer nodes; receiving a data communications protocol packet in a packet flow for a client; and sending a connection request for the packet flow to a server node selected from among a plurality of server nodes; performing, by the selected server node; determining if a server on the server node can or cannot accept a data communications protocol connection for the packet flow; rejecting the connection request upon determining that the server cannot accept the data communications protocol connection; and accepting the connection request upon determining that the server can accept the data communications protocol connection, wherein said accepting the connection request comprises; cooperating with the one or more load balancer nodes to establish the data communications protocol connection between the client and the server for the packet flow; and selecting one of the plurality of load balancer nodes to act as an egress server for the data communications protocol connection based at least in part on an identifier for the packet flow, wherein outgoing data communications protocol packets on the data communications protocol connection are sent to the client via the selected egress server. - View Dependent Claims (9, 10, 11, 12, 13, 14, 15)
-
-
16. A non-transitory computer-accessible storage medium storing program instructions computer-executable to implement a load balancer module on each of a plurality of server nodes, wherein each load balancer module is configured to:
-
receive, from one of a plurality of load balancer nodes, a connection request for a packet flow from a client; determine if a server on the server node can or cannot accept a data communications protocol connection for the packet flow; reject the connection request upon determining that the server cannot accept the data communications protocol connection; and upon determining that the server can accept the data communications protocol connection; communicate with the load balancer node and with the server to establish the data communications protocol connection between the client and the server for the packet flow; and select one of the plurality of load balancer nodes to act as an egress server for the data communications protocol connection based at least in part on an identifier for the packet flow, wherein outgoing data communications protocol packets on the data communications protocol connection are sent to the client via the selected egress server. - View Dependent Claims (17, 18, 19, 20)
-
Specification