Load balancing (computing)
load
balancing distributes workloads across multiple computing resources, such as
computers, a computer cluster, network links, central processing units or disk
drives. Load balancing aims to optimize resource use, maximizethroughput,
minimize response time, and avoid overload of any
single
resource. Using multiple components with load balancing instead of a single
component may increase reliability and availability through redundancy. Load
balancing usually involves dedicated software or hardware, such as a multilayer
switch or a Domain Name System server process.
Load
balancing differs from channel bonding in that load balancing divides traffic
between network interfaces on a network socket (OSI model layer 4) basis, while
channel bonding implies a division of traffic between physical interfaces at a
lower level, either per packet (OSI model Layer 3) or on a data link (OSI model
Layer 2) basis with a protocol like shortest path bridging.
One of
the most commonly used applications of load balancing is to provide a single
Internet service from multiple servers, sometimes known as a server farm.
Commonly load-balanced systems include popular web sites, large Internet Relay
Chatnetworks, high-bandwidth File Transfer Protocol sites, Network News
Transfer Protocol (NNTP) servers, Domain Name System (DNS) servers, and
databases.
Round-robin DNS
An
alternate method of load balancing, which does not necessarily require a
dedicated software or hardware node, is calledround robin DNS. In this
technique, multiple IP addresses are associated with a single domain name;
clients are expected to choose which server to connect to. Unlike the use of a
dedicated load balancer, this technique exposes to clients the existence of
multiple backend servers. The technique has other advantages and disadvantages,
depending on the degree of control over the DNS server and the granularity of
load balancing desired.
Another
more effective technique for load-balancing using DNS is to delegate
www.example.org as a sub-domain whose zone is served by each of the same
servers that are serving the web site. This technique works particularly well
where individual servers are spread geographically on the Internet. For
example,
one.example.org
A 192.0.2.1
two.example.org
A 203.0.113.2
www.example.org
NS one.example.org
www.example.org
NS two.example.org
However,
the zone file for www.example.org on each server is different such that each
server resolves its own IP Address as the A-record.[1] On server one the zone
file
for
www.example.org reports:
@ in a
192.0.2.1
On server
two the same zone file contains:
@ in a
203.0.113.2
This way,
when a server is down, its DNS will not respond and the web service does not
receive any traffic. If the line to one server is congested, the unreliability
of DNS ensures less HTTP traffic reaches that server. Furthermore, the quickest
DNS response to the resolver is nearly always the one from the network's
closest server, ensuring geo-sensitive load-balancing. A short TTL on the
A-record helps to ensure traffic is quickly diverted when a server goes down.
Consideration must be given the possibility that this technique may cause
individual clients to switch between individual servers in mid-session.
Client-Side Random Load Balancing]
One more
approach to load balancing is to deliver list of server IPs to the client, and
then to have client randomly select the IP from the list on each connection.
This essentially relies on all clients causing similar load, and the Law of
Large Numbersto achieve reasonably flat load distribution across servers. It
has been claimed that client-side random load balancing tends to provide better
load distribution then round-robin DNS; this has been attributed to caching
issues with round-robin DNS, which in case of large DNS caching servers, tend
to skew the distribution for round-robin DNS, while client-side random
selection remains unaffected regardless of DNS caching.
With this
approach, the method of delivery of list of IPs to the client can vary, and may
be implemented as a DNS list (delivered to all the clients without any
round-robin), or via hardcoding it to the list. If "smart client" is
used, detecting that randomly selected server is down, and connecting randomly
again, it also provides fault tolerance.
Server-side Load Balancers
For
Internet services, server-side load balancer is usually a software program that
is listening on the port where external clients connect to access services. The
load balancer forwards requests to one of the "backend" servers,
which usually replies to the load balancer. This allows the load balancer to
reply to the client without the client ever knowing about the internal
separation of functions. It also prevents clients from contacting back-end
servers directly, which may have security benefits by hiding the structure of
the internal network and preventing attacks on the kernel's network stack or
unrelated services running on other ports.
Some load
balancers provide a mechanism for doing something special in the event that all
backend servers are unavailable. This might include forwarding to a backup load
balancer, or displaying a message regarding the outage.
It is
also important that the load balancer itself does not become a single point of
failure. Usually load balancers are implemented in high-availability pairs
which may also replicate session persistence data if required by the specific
application.
Related Topics
Privacy Policy, Terms and Conditions, DMCA Policy and Compliant
Copyright © 2018-2023 BrainKart.com; All Rights Reserved. Developed by Therithal info, Chennai.