Hacker News new | past | comments | ask | show | jobs | submit login

Consider `db` resolves to multiple A records:

  db.   IN   A    100.64.123.1   # prod-db-1.
  db.   IN   A    100.64.123.2   # prod-db-2.
  db.   IN   A    100.64.123.3   # prod-db-3.
This is good for service discovery—e.g., you can configure something like RabbitMQ to discover cluster members from an A record—and it's nice for browsers, which will pick one host at random when connecting, which effectively is load balancing.

In a usual setup, the problem is that if a host goes down, clients will still try to reach it because it's still in the DNS record; but with Tailscale, the "DNS" is generated by the local Tailscale daemon on the fly, so you get a live view, and if this was implemented, it would be possible to only return available servers for tag queries.




Nit: the host is not picked at random, but according to the RFC3484 algorithm.

Since people typically don’t believe me about this, here it is from someone who has done a lot of networking programming:

https://daniel.haxx.se/blog/2012/01/03/getaddrinfo-with-roun...


Arghh. I want to love IPv6, but they really work hard against it, don't they.

Thanks, I didn't know this!


Even better: although the reason for the algorithm is IPv6, all mainstream implementations do it on IPv4 also.




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: