Load balancer (LB) is another critical piece of any distributed system. It helps to
distribute load across multiple resources according to some metric (random,
round-robin, random with weighting for memory or CPU utilization, etc.). LB
also keeps track of the status of all the resources while distributing
requests. If a server is not available to take new requests or is not
responding or has elevated error rate, LB will stop sending traffic to such a
server.
To utilize full scalability and redundancy, we can try to balance
the load at each layer of the system. We can add LBs at three places:
- Between the user and the web server
- Between web servers and an internal platform
layer, like application servers or cache servers
- Between internal platform layer and database.
Load Balancing Algorithms
Different load balancing algorithms
provide different benefits; the choice of load balancing method depends on your
needs:
·
Round Robin – Requests are distributed
across the group of servers sequentially.
·
Least Connections – A new
request is sent to the server with the fewest current connections to clients.
The relative computing capacity of each server is factored into determining
which one has the least connections.
·
IP Hash – The IP address of the
client is used to determine which server receives the request.
Session Persistence
Information about a user’s session is often stored locally
in the browser. For example, in a shopping cart application the items in a
user’s cart might be stored at the browser level until the user is ready to
purchase them. Changing which server receives requests from that client in the
middle of the shopping session can cause performance issues or outright
transaction failure. In such cases, it is essential that all requests from a
client are sent to the same server for the duration of the session. This is
known as session persistence.
The best load balancers can handle session
persistence as needed. Another use case for session persistence is when an
upstream server stores information requested by a user in its cache to boost
performance. Switching servers would cause that information to be fetched for
the second time, creating performance inefficiencies.
Hardware vs. Software Load
Balancing
Load balancers typically come in two flavors: hardware-based
and software-based. Vendors of hardware-based solutions load proprietary
software onto the machine they provide, which often uses specialized
processors. To cope with increasing traffic at your website, you have to buy
more or bigger machines from the vendor. Software solutions generally run on
commodity hardware, making them less expensive and more flexible. You can
install the software on the hardware of your choice or in cloud environments
like AWS EC2.
Core load balancing capabilities include:
·
Layer 4 (L4) load balancing - the ability to
direct traffic based on data from network and transport layer protocols, such
as IP address and TCP port
· Layer 7 (L7) load balancing and content switching – the ability to make routing decisions based on application layer data and attributes, such as HTTP header, uniform resource identifier, SSL session ID and HTML form data
·
Global server load balancing (GSLB) - extends the core L4 and L7 capabilities so that they are
applicable across geographically distributed server farms
No comments:
Post a Comment