Amazon Updates Route 53 DNS Service
techcrunch.com
techcrunch.com
I'm sure this is of interest to some people, but Techcrunch? Really?
We are on the "EC2 Original" setup with a Cassandra cluster operating over regions via Elastic IPs. We tried to setup a multi-region cluster on their "EC2 VPC" mode and gave up. A VPC can only span a region and currently no easy way to manage traffic between them. We looked at getting a VPN connection but the cost for a decent connection gets way prohibitive.
I understand how DNS works. UDP packet to server, returns IP from host via UDP, and or requests DNS record from a different DNS server with more information about the domain (all the way up to the root servers).
Not a huge deal, but we had a few domains that were getting hammered with spam/bruteforcing, and with Route 53 there is no way to find or block them - you just gotta keep paying for the queries.
That Amazon now with a bit of fiddling will fail over to another region if your ELB instance is down or because it detects errors is great - but hardly bullet proof.
What if your ELB instance is ok but your app is returning garbage.. its still returning something, right? And ELB will happily forward that traffic without thinking anything is wrong.
For example; if a customer has endpoints available in both the AWS Sydney region and an AWS US region, and Australian international connectivity is impaired then users within Australia will still go to Sydney. At the same time, a user in New Zealand who would ordinarily go to Australia (as it's closer) may now find themselves served by US endpoints because reachability to Australia from New Zealand is impaired but reachability to the US is ok. It's a small part of the availability story, but one difference in how a DNS failover may handle an event.
The "returning garbage" problem can be a hard one - both Route 53 and ELB can be configured to check a particular url for health-status, and it's important that that url's health be indicative of the overall stack's health, but it's definitely a challenge sometimes as an application operator to maintain a good "deep" check. For example, on my own personal Wordpress installation I check if the DB is reachable and answering before returning 200 from my status URL, but I've seen service owners do much much more comprehensive checks including inspecting some metrics, counting overall 500s, measuring response times, and so on.