World-wide-web server with delayed resource-binding for resource-based load balancing on a distributed resource multi-node network
First Claim
1. A web site for sending resources to a browser on a client connected to a computer network, the web site comprising:
- a network connection point for receiving incoming data packets from the computer network and for transmitting outgoing data packets to the computer network;
local network, coupled to the network connection point, for transferring data packets;
a plurality of network nodes containing web servers with resources, the plurality of network nodes connected to the local network, the plurality of network nodes including means for transmitting the resources as outgoing data packets to the client, the plurality of network nodes including means for sending the outgoing data packets over the local network to the network connection point;
wherein the plurality of network nodes containing web servers together contain all resources at the web site, but each network node in the plurality of network nodes contains only a portion of all the resources at the web site;
a balancer network node containing a load balancer, receiving the incoming data packets transmitted over the local network from the network connection point, the load balancer for determining an assigned server in the plurality of network nodes for responding to a request from the client in an incoming data packet, the load balancer including means for transferring a connection to the client to the assigned server;
wherein the balancer network node containing the load balancer is connected to the network connection point by the local network which is also connected to the plurality of network nodes,wherein network nodes are segregated to contain different resources, and wherein all resources at the web site are not mirrored to all network nodes at the web site,wherein the load balancer further comprises;
content means for storing an indication of which network nodes in the plurality of network nodes contain each resource;
URL means, receiving incoming data packets from the client containing a request for a resource, for determining a requested resource from the incoming data packets;
compare means, coupled to the content means and coupled to the URL means, for comparing the requested resource to the indication of which network nodes in the plurality of network nodes contain each resource, and for outputting a list of network nodes containing the requested resource;
balancing means, receiving the list of network nodes containing the requested resource, for choosing as an assigned node one of the network nodes in the list of network nodes,whereby the incoming data packets are routed to the balancer network node but outgoing data packets bypass the balancer network node and whereby the load balancer chooses an assigned node based on the resources contained by each network node, the load balancer performing resource-based load balancing.
1 Assignment
0 Petitions
Accused Products
Abstract
A multi-node server transmits world-wide-web pages to network-based browser clients. A load balancer receives all requests from clients because they use a virtual address for the entire site. The load balancer makes a connection with the client and waits for the URL from the client. The URL specifies the requested resource. The load balancer waits to perform load balancing until after the location of the requested resource is known. The connection and URL request are passed from the load balancer to a second node having the requested resource. The load balancer re-plays the initial connection packet sequence to the second node, but modifies the address to that for the second node. The network software is modified to generate the physical network address of the second node, but then changes the destination address back to the virtual address. The second node transmits the requested resource directly to the client, with the virtual address as its source. Since all requests are first received by the load balancer which determines the physical location of the requested resource, nodes may contain different resources. The entire contents of the web site is not mirrored onto all nodes. Network bottlenecks are avoided since the nodes transmit the large files back to the client directly, bypassing the load balancer. Client browsers can cache the virtual address, even though different nodes with different physical addresses service requests.
2146 Citations
16 Claims
-
1. A web site for sending resources to a browser on a client connected to a computer network, the web site comprising:
-
a network connection point for receiving incoming data packets from the computer network and for transmitting outgoing data packets to the computer network; local network, coupled to the network connection point, for transferring data packets; a plurality of network nodes containing web servers with resources, the plurality of network nodes connected to the local network, the plurality of network nodes including means for transmitting the resources as outgoing data packets to the client, the plurality of network nodes including means for sending the outgoing data packets over the local network to the network connection point; wherein the plurality of network nodes containing web servers together contain all resources at the web site, but each network node in the plurality of network nodes contains only a portion of all the resources at the web site; a balancer network node containing a load balancer, receiving the incoming data packets transmitted over the local network from the network connection point, the load balancer for determining an assigned server in the plurality of network nodes for responding to a request from the client in an incoming data packet, the load balancer including means for transferring a connection to the client to the assigned server; wherein the balancer network node containing the load balancer is connected to the network connection point by the local network which is also connected to the plurality of network nodes, wherein network nodes are segregated to contain different resources, and wherein all resources at the web site are not mirrored to all network nodes at the web site, wherein the load balancer further comprises; content means for storing an indication of which network nodes in the plurality of network nodes contain each resource; URL means, receiving incoming data packets from the client containing a request for a resource, for determining a requested resource from the incoming data packets; compare means, coupled to the content means and coupled to the URL means, for comparing the requested resource to the indication of which network nodes in the plurality of network nodes contain each resource, and for outputting a list of network nodes containing the requested resource; balancing means, receiving the list of network nodes containing the requested resource, for choosing as an assigned node one of the network nodes in the list of network nodes, whereby the incoming data packets are routed to the balancer network node but outgoing data packets bypass the balancer network node and whereby the load balancer chooses an assigned node based on the resources contained by each network node, the load balancer performing resource-based load balancing. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A computer-implemented method of servicing requests for resources from a client by nodes containing different resources, the computer-implemented method comprising the steps of:
-
making a connection and setting up a session between the client and a load balancer at a web site for servicing requests from clients; waiting for a URL request from the client once the load balancer has made the connection with the client; receiving the URL request from the client and decoding the URL request to determine a requested resource; comparing an identifier for the requested resource to identifiers for resources located on a plurality of nodes and determining a first subset of the plurality of nodes which contain the requested resource and a second subset of the plurality of nodes which do not contain the requested resource; assigning the URL request to an assigned node in the first subset of the nodes which contain the requested resource, by determining the assigned node to be a server in the first subset of the nodes which is least busy processing requests, wherein the assigned node is not in the second subset; transferring the connection and the session setup to the assigned node containing the requested resource by storing packets received from the client when establishing the connection and by transmitting the packets to the assigned node after the URL request is received; reading the requested resource on the assigned node and transmitting the requested resource to the client, whereby the assigned node is selected based on a location of the requested resource determined from the URL request and load balancing is performed among nodes having the requested resource and the connection is transferred from the load balancer to the assigned node by re-transmitting the packets to the assigned node. - View Dependent Claims (7, 8, 9, 10, 11, 12, 13)
-
-
14. A fault-tolerant server farm for serving resources to browser clients remotely located on a network, the resources containing links to other resources not located at the server farm but located on distant computers on the world-wide web, each link being a universal-resource locator (URL), the URL indicating a host name and a requested resource, the host name indicating a server farm on the network containing the requested resource, the fault-tolerant server farm comprising:
-
a network connection for transferring packets from the network to a local network; a plurality of nodes, each node being a computer containing a disk and a connection to the local network; a plurality of frequently-accessed resources stored on the disk for each node; a plurality of less-frequently-accessed resources, each of the less-frequently-accessed resources stored on disks for at least two nodes but not stored on the disk for each node; a primary load balancer, residing on a primary node in the plurality of nodes, for receiving all incoming packets from the network connection, the primary load-balancer assigning URL requests from browser clients to nodes in the plurality of nodes, wherein the primary load balancer comprises; storage means for storing at least a portion of connection incoming packets for establishing a connection between a browser client and the server farm; reply means for generating acknowledgment packets to the browser client in response to the connection incoming packets; URL decoder means, receiving a URL packet once the connection with the browser client is made, for decoding the URL to determine a requested resource requested by the browser client; assignment means for selecting an assigned node in the plurality of nodes by not selecting nodes which have disks which do not contain the requested resource; transfer means for transferring the connection to the assigned node by constructing packets using the storage means which stored at least a portion of connection incoming packets; pass-through means for transferring incoming packets from the browser client to the assigned node once the connection has been transferred to the assigned node, a secondary load balancer, residing on a secondary node in the plurality of nodes, for receiving all incoming packets from the network connection when the primary load balancer fails, the secondary load-balancer assigning URL requests from browser clients to nodes in the plurality of nodes, whereby each node does not contain all resources at the server farm and the primary and secondary load balancers reside on nodes connected to the local network. - View Dependent Claims (15, 16)
-
Specification