Round Robin DNS != High Availability. Or am I wrong?
I constantly see people who discuss their "high availability" setups like this:
- round robin DNS
- round robin DNS with a low TTL and some kind of automated DNS change
The first one is pure confusion. Clients do not "try one and if it fails, lookup again". They lookup, get an address, and assume that's the address. Round robin DNS is fine for load balancing, but not for HA. If you have two IPs in a RRDNS and one goes down, 50% of your clients will continue to hit the down server (unless you have some custom client code, but in this case I'm thinking of web browsers).
Even with some low TTL/automated DNS change, it's still weak. There is no guarantee that any nameserver is going to honor your 60-second TTL - I've read some of the big ones ignore anything less than an hour. Second, you're assuming my browser or client will not cache things or that it's cache is short. One example: Internet Explorer caches for 30 minutes by default. FasterFox caches for 1 hour. Etc. And finally, my browser has no idea it's got a "round robin" address - it has no idea that it should check again if the first one doesn't work.
Granted, I think the DNS standard could implement some kind of extension that tags lookups as "there are other addresses you could use". But it doesn't.
So. Am I wrong?