How to Enhance Round Robin DNS Load Balancing

apache-2.2load balancing

This is form further to my question at
Old Question. Following to the suggestion in the answer I got this text here

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.

Now I am thinking out of the box, Does these exists some way to deal with potential issues?

Best Answer

The answer you've quoted is wrong.

such as unavailable servers (if one server goes down)

If the user makes a subsequent request after one fails (times out) the resolver on the client should automatically switch to the next entry in the list.

or DNS caching by other name servers

When a DNS server receives multiple records for a name it should cache all of them or none. When it receives a request for a cached name with multiple records, in the absence of other instructions it should return the entire list in a (pseudo)random order.

No standard solution exists for recovering a HTTP request which fails (although it is possible to build such capability into the application layer) due to the risk of replaying the same transaction twice.

The only issue with round-robin is the time taken for the client to detect a failure. And this can easily be addressed by implementing a local address take over on the cluster when a node becomes unavailable.