Scriptable GeoDNS: Leaving AWS for Bunny
Posted by sshah03 1 day ago
Comments
Comment by askbjoernhansen 23 hours ago
The NTP Pool does ~1m dns queries a second on the hourly peak with a small-ish (old) Go program (called `geodns`) running on a bunch of mostly small VMs around the world. The average is much less, but paying $0.70/million for ~11 billion queries a day would be a lot of money for a "random volunteers on the internet" project at "cloud provider rates".
Comment by arm32 23 hours ago
Comment by whinvik 23 hours ago
It mentions that you used CDKTF because you prefer its expressiveness. The actual TF is generated from CDKTF. Having struggled with understanding and writing TF in the past, now, I don't really have to care with agents. I let them rip, then just read the plan output.
I am sure we will find more such examples where we can rip out an intermediate step completely because of agents.
Comment by miyuru 23 hours ago
I liked it but, it was a hassle to get it running.
Comment by vbernat 23 hours ago
Comment by tootubular 23 hours ago
Comment by matja 20 hours ago
Comment by temp0826 23 hours ago
Comment by vbernat 23 hours ago
Comment by cortesoft 22 hours ago
For one, your ability to control traffic flow is limited to very coarse knobs, since where your traffic lands is dependent entirely on the BGP routes you advertise and who you advertise them to.
The basic idea of BGP is that you advertise the same IP blocks to multiple peers, and then every other network will choose the destination that is the least number of ‘hops’ away. However, hops are not always a perfect representation of the fastest, or even closest, destination. Sometimes a hop travels a far distance, or is over a slow or congested link. Sure, one connection might be 2 hops instead of 3, but if those two hops are slow the route with “more” hops might actually be faster.
You can solve this with a lot of different tricks, such as adding extra fake hops to your announcements in certain places, but you still have to be constantly monitoring the route traffic is taking to make sure your traffic continues to take the best route.
Secondly, there is no easy way to distribute traffic from a single network to multiple destinations for load balancing purposes. Every request coming from a particular network is going to make the same anycast calculation, so it will send all requests to the same destination. If you want to split that up into two different destinations, you have to go back to using DNS tricks or using different destinations IPs to split traffic up.
We would do this sort of load management by dividing traffic onto different IP blocks, and then dynamically advertising or not advertising those blocks from datacenters depending on load. If one datacenter is becoming overloaded, you pull some blocks from the advertisements for that datacenter, and that traffic stops being routed there.
There are a ton of other factors that go into it, but the bottom line is that anycast is not a simple fix to this problem.
Comment by temp0826 21 hours ago
Comment by cortesoft 12 hours ago
Comment by vbernat 9 hours ago
But, I also serve HTML pages "myself." CDN is only used for assets. I want to control the integrity of the content. CSS and JavaScript files served by the CDN are protected by an integrity hash (SRI). If I could, I would also include images in this, but this is not possible (and not something that looks planned).
Comment by PaoloBarbolini 23 hours ago
Comment by dotwaffle 20 hours ago
Huh? Most of them offer anycast... Unless I'm misunderstanding what you're trying to say with this?
Comment by PaoloBarbolini 19 hours ago
Comment by uneekname 23 hours ago
Wow!
Comment by arm32 23 hours ago
Comment by vbernat 23 hours ago
Comment by sshah03 23 hours ago
Comment by vbernat 21 hours ago
Comment by arm32 20 hours ago
Comment by jedisct1 19 hours ago