{"id":60,"date":"2009-02-16T01:46:51","date_gmt":"2009-02-16T07:46:51","guid":{"rendered":"http:\/\/gregsowell.com\/?p=60"},"modified":"2009-02-19T21:54:01","modified_gmt":"2009-02-20T03:54:01","slug":"dns-a-record-change-by-tracking-servers","status":"publish","type":"post","link":"https:\/\/gregsowell.com\/?p=60","title":{"rendered":"DNS A Record Change by Tracking Servers"},"content":{"rendered":"<p>Here&#8217;s the scenario:\u00a0 You have a main site(MS), and a DR site(DR).\u00a0\u00a0 You have addressing 1.1.1.0\/24 at the MS and addressing 2.2.2.0\/24 at the DR site.\u00a0 You have several web-servers at the MS that replicate regularly over to the DR site.\u00a0 You want to fail over to the DR servers in the event of a meltdown at the MS.<\/p>\n<ol>\n<li>You could peer via BGP at the DR site and use prepending or conditional BGP to advertise the 1.1.1.0 subnet.\u00a0 The customer says this isn&#8217;t an option.<\/li>\n<li>You could use a load-balancer such as an F5, Barracuda or a Cisco LocalDirector.\u00a0 This in undesirable because the DR site has higher bandwidth costs so the numbers won&#8217;t add up.<\/li>\n<li>You could set the TTL on your DNS records to 60 seconds and in the event of a failure, change the A records over to your DR subnet.\u00a0 This would require human intervention, though it would work perfectly well.<\/li>\n<li><a title=\"distributed director\" href=\"http:\/\/www.cisco.com\/en\/US\/products\/hw\/contnetw\/ps813\/products_tech_note09186a00801fa9dd.shtml\" target=\"_blank\">Distributed Director<\/a>.\u00a0 Wes, a friend of mine turned me onto this.\u00a0 Cisco put out a small IOS app a good while back called Distributed Director.\u00a0 What this allows you to do is be authoritative for a DNS zone or record.\u00a0 You in essence turn your router into a DNS server.\u00a0 Why would you want to do this?\u00a0 Because it allows you to add multiple servers to the pool for a single DNS record.\u00a0 You can set the percentage of requests to go to one server or another.\u00a0 You can also do tracking of a sort.\u00a0 You can say, attempt to establish a connection to port 80 on a server to ensure the web server is running.\u00a0 You can also give it a url and see if it responds.\u00a0 This is a a pretty solid method, but the client doesn&#8217;t want to configure and maintain equipment.<\/li>\n<li>You could use a tracked DNS service.\u00a0 A tracked DNS service is one that uses UDP, TCP, ICMP, \u00a0HTTP individually or in combination to track server status.\u00a0 For example:\u00a0 at my MS I track my webserver by issuing an HTTP request every two minutes.\u00a0 I parse this HTTP request looking for specific keywords like &#8220;Company X&#8221;.\u00a0 If I find those key words I do nothing.\u00a0 If my server doesn&#8217;t respond properly, I start checking a list of alternate servers, namely my DR site server.\u00a0 My DR server responds properly, so I change the A record over to the DR IP.\u00a0 Within 60 seconds, all requests will start pointing over to my DR site, and I didn&#8217;t have to do anything, it was all automatic.<\/li>\n<\/ol>\n<p>As you can tell, The 5th option was the suggestion to the customer.\u00a0 The feature seems like it would be a popular one, though there only seem to be a handful of providers out there.\u00a0 Two in particular seemed interesting: dnsmadeeasy and ultradns.<\/p>\n<p><a title=\"DNSMadeEasy.com\" href=\"http:\/\/www.dnsmadeeasy.com\/\" target=\"_blank\">DNSMadeEasy<\/a>is the cheaper of the two.\u00a0 They offer a business package that includes 25 domains and 3 free &#8220;trackers.&#8221;\u00a0 Tracker is the service that monitors the servers for failover.\u00a0 You can add additional trackers for $5 and additional domains for $.75.<\/p>\n<p><a title=\"http:\/\/www.ultradns.com\/\" href=\"http:\/\/www.ultradns.com\/\" target=\"_blank\">UltraDNS<\/a>is the pricey option, but for a reason.\u00a0 They have far more bells and whistles: load-balancing by region, better server density throughout the world.\u00a0 These are the guys that do DNS for facebook and amazon.<\/p>\n<p>I&#8217;m thinking of working on an Open-Source version, and <a href=\"http:\/\/gregsowell.com\/?p=191\">here it is!<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Here&#8217;s the scenario:\u00a0 You have a main site(MS), and a DR site(DR).\u00a0\u00a0 You have addressing 1.1.1.0\/24 at the MS and addressing 2.2.2.0\/24 at the\u2026<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[],"class_list":["post-60","post","type-post","status-publish","format-standard","hentry","category-networking"],"_links":{"self":[{"href":"https:\/\/gregsowell.com\/index.php?rest_route=\/wp\/v2\/posts\/60","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gregsowell.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gregsowell.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gregsowell.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/gregsowell.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=60"}],"version-history":[{"count":10,"href":"https:\/\/gregsowell.com\/index.php?rest_route=\/wp\/v2\/posts\/60\/revisions"}],"predecessor-version":[{"id":167,"href":"https:\/\/gregsowell.com\/index.php?rest_route=\/wp\/v2\/posts\/60\/revisions\/167"}],"wp:attachment":[{"href":"https:\/\/gregsowell.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=60"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gregsowell.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=60"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gregsowell.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=60"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}