Always within the part relating to the Network, we find the load blancerLoad Balancer (LB). It was preferred to relegate it to a separate chapter, since it is a somewhat broader topic than the other components that make up the network.
At a high level, load balancing is typically accomplished by having a load balancer or set of load balancers present on a virtual server to a set of clients. This virtual server is backed by a pool of “real” servers that provide some type of resource to those clients. The role of the load balancer is to distribute client requests across the pool of servers including rerouting requests when a member of the pool fails. Clients are not aware which “real” server in the pool are servicing their requests, since they are only aware of the virtual server presented by the load balancer. By leveraging load balancers, client requests can be serviced in such a way as to mitigate against bottlenecks, due to resource contention on any given server or against failed requests due to failures on any given servers. The former use case is what is often considered scaling out while the latter is about creating a fault tolerant service. The canonical example is the use of load balancers in front of a pool of web servers, to serve out web pages to incoming clients via the internet.