Professional Documents
Culture Documents
htm
When the request comes to the DNS server to resolve the domain name, it
gives out one of the several canonical names in a rotated order. This
redirects the request to one of the several servers in a server group. Once
the BIND feature of DNS resolves the domain to one of the servers,
subsequent requests from the same client are sent to the same server.
This approach works for BIND 4 name servers, where multiple CNAMES are
not considered as a configuration error. Assuming there are 4 web servers in
the cluster configured with IP addresses 123.45.67.[1-4], add all of them to
the DNS with Address records (A Names) as below. The srv[1-4] can be set
to any name you want, such as foo[1-4], but should match the next step.
srv1 IN A 123.45.67.1
srv2 IN A 123.45.67.2
srv3 IN A 123.45.67.3
srv4 IN A 123.45.67.4
The DNS server will resolve the www.domain.com to one of the listed
servers in a rotated manner. That will spread the requests over the group of
servers.
options {
multiple-cnames yes;
};
This above approach with multiple CNAMES for one domain name is not a
valid DNS server configuration for BIND 9 and above. In this case, multiple A
records are used.
www.domain.tld. 60 IN A 123.45.67.1
www.domain.tld. 60 IN A 123.45.67.2
www.domain.tld. 60 IN A 123.45.67.3
www.domain.tld. 60 IN A 123.45.67.4
The TTL value should be kept to a low value, so that the DNS cache is
refreshed faster.
Other considerations
The DNS based load balancing method shown above does not take care of
various potential issues such as unavailable servers (if one server goes
down), or DNS caching by other name servers. The DNS server does not
have any knowledge of the server availability and will continue to point to an
unavailable server. It can only differentiate by IP address, but not by server
port. The IP address can also be cached by other nameservers, hence
requests may not be sent to the load balancing DNS server.
Considering the functionality, the round robin DNS is not a load balancing
mechanism but a load distribution option. Some of these drawbacks can be
overcome by implementing an advanced version of the DNS load balancer
using Perl scripts. The details can be found here.