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.