Painless DNS migration?

Hi Linoders,

I just signed up and intend to fully migrate my Slicehost VPS site to Linode. The speed difference seems awesome.

I know barely enough about DNS to be dangerous, but no more. I'm giving myself a large overlap period to help make the migration process as painless and safe as possible.

I'm trying to figure out a plan. My registrar is Hover and my current VPS (as mentioned above) is Slicehost.com. Hover only knows about the Slicehost nameservers and all my domains and subdomains are set up on Slicehost to refer to my Slicehost VPS.

Would it be a good plan to start switching subdomain DNS records on Slicehost to point to the Linode IP address as I set up less important subdomains first? Eventually I'd flip over the Slicehost DNS record IP address for the main domains, and finally flip Hover to point to Linode's nameservers.

I'm sure either there are missing details or this is completely stupid. :) I'm hoping somebody can gently nudge me in the right direction. I couldn't find a previous post that spelled it out for my level of newbieness. :)

Thanks!

12 Replies

I'd just set up your Linode hosts, & Linode DNS, and not bother with your Slicehost DNS at all. Then, when you are ready to make the switch, change the NS entries in your domain registrar.

I'm not an expert on DNS, but this is how I would deal with the situation:

I would say start lowering the TTL on Slicehost for all your domains to something like 2 hours. Mirror your DNS settings on Linode meaning duplicate all your A/AAAA records, SPF, TXT, etc records as much as possible using Linode's DNS Manager except changing the IP addresses to point to the Linode itself.

At this point you should have Hover saying to use Slicehosts's nameservers which are saying X.tld is on Slicehost IP y.y.y.y. At the same time you have Linode's DNS manager saying X.tld is on z.z.z.z, but nothing is making requests of Linode's nameservers.

Once domain X.tld is set up on your Linode you change your Slicehost A/AAAA record to the new IP. Within 2 hours you will see more and more users pulling pages from your Linode and less and less users pulling pages from your Slicehost VPS. Repeat this for all X.tld subdomains. Once all subdomains for X.tld have been moved over to Linode just go ahead and change the nameservers on Hover to match NS[1-4].LINODE.COM. This change should create no downtime at all. Repeat this for all domains you are managing.

Now you have Hover telling telling DNS servers to grab data from Linode's Nameservers, which in turn are telling users to get data from Linode. You could just as easily used Slicehost's DNS Manager to point all your A/AAAA records to you Linode, but why not have everything in one place?

Basically is how we're doing this is we're telling all DNS servers to refresh the A/AAAA record for X.tld every two hours instead of the default 24 (?). This means it will be a quicker transition between Slicehost -> Linode when you want to flip the switch for that domain. Most DNS servers around the world will be telling your users to go to Linode within two hours allowing you to close off Slicehost quicker. You have duplicate DNS records so you can just change the Nameservers on Hover and no downtime will result.

Hopefully this will help to explain the process:

1.1.1.1 - Linode IP

2.2.2.2 - SliceHost IP

Current Setup:

Slicehost DNS:
   SubA.X.tld      2.2.2.2
   SubB.X.tld      2.2.2.2
   SubC.X.tld      2.2.2.2
   SubA.Y.tld      2.2.2.2
   SubB.Y.tld      2.2.2.2
   SubC.Y.tld      2.2.2.2
   Z.tld           2.2.2.2
Linode DNS:
   [Blank]
Hover DNS:
   X.tld           NS1.SLICEHOST.COM
   Y.tld           NS1.SLICEHOST.COM
   Z.tld           NS1.SLICEHOST.COM

Preliminary Setup:

Slicehost DNS:
   SubA.X.tld      2.2.2.2
   SubB.X.tld      2.2.2.2
   SubC.X.tld      2.2.2.2
   SubA.Y.tld      2.2.2.2
   SubB.Y.tld      2.2.2.2
   SubC.Y.tld      2.2.2.2
   Z.tld           2.2.2.2
Linode DNS:
   SubA.X.tld      1.1.1.1
   SubB.X.tld      1.1.1.1
   SubC.X.tld      1.1.1.1
   SubA.Y.tld      1.1.1.1
   SubB.Y.tld      1.1.1.1
   SubC.Y.tld      1.1.1.1
   Z.tld           1.1.1.1
Hover DNS:
   X.tld           NS1.SLICEHOST.COM
   Y.tld           NS1.SLICEHOST.COM
   Z.tld           NS1.SLICEHOST.COM

Two subdomains moves:

Slicehost DNS:
   SubA.X.tld      1.1.1.1
   SubB.X.tld      1.1.1.1
   SubC.X.tld      2.2.2.2
   SubA.Y.tld      2.2.2.2
   SubB.Y.tld      2.2.2.2
   SubC.Y.tld      2.2.2.2
   Z.tld           2.2.2.2
Linode DNS:
   SubA.X.tld      1.1.1.1
   SubB.X.tld      1.1.1.1
   SubC.X.tld      1.1.1.1
   SubA.Y.tld      1.1.1.1
   SubB.Y.tld      1.1.1.1
   SubC.Y.tld      1.1.1.1
   Z.tld           1.1.1.1
Hover DNS:
   X.tld           NS1.SLICEHOST.COM
   Y.tld           NS1.SLICEHOST.COM
   Z.tld           NS1.SLICEHOST.COM

One Full Domain Moved:

Slicehost DNS:
   SubA.X.tld      1.1.1.1   (Depreciated because requests are no longer being made of Slicehost for this IP)
   SubB.X.tld      1.1.1.1   (Depreciated because requests are no longer being made of Slicehost for this IP)
   SubC.X.tld      1.1.1.1   (Depreciated because requests are no longer being made of Slicehost for this IP)
   SubA.Y.tld      2.2.2.2
   SubB.Y.tld      2.2.2.2
   SubC.Y.tld      2.2.2.2
   Z.tld           2.2.2.2
Linode DNS:
   SubA.X.tld      1.1.1.1
   SubB.X.tld      1.1.1.1
   SubC.X.tld      1.1.1.1
   SubA.Y.tld      1.1.1.1
   SubB.Y.tld      1.1.1.1
   SubC.Y.tld      1.1.1.1
   Z.tld           1.1.1.1
Hover DNS:
   X.tld           NS1.LINODE.COM
   Y.tld           NS1.SLICEHOST.COM
   Z.tld           NS1.SLICEHOST.COM

One Full Domain, Two subdomains Moved:

Slicehost DNS:
   SubA.X.tld      1.1.1.1   (Depreciated because requests are no longer being made of Slicehost for this IP)
   SubB.X.tld      1.1.1.1   (Depreciated because requests are no longer being made of Slicehost for this IP)
   SubC.X.tld      1.1.1.1   (Depreciated because requests are no longer being made of Slicehost for this IP)
   SubA.Y.tld      1.1.1.1
   SubB.Y.tld      2.2.2.2
   SubC.Y.tld      1.1.1.1
   Z.tld           2.2.2.2
Linode DNS:
   SubA.X.tld      1.1.1.1
   SubB.X.tld      1.1.1.1
   SubC.X.tld      1.1.1.1
   SubA.Y.tld      1.1.1.1
   SubB.Y.tld      1.1.1.1
   SubC.Y.tld      1.1.1.1
   Z.tld           1.1.1.1
Hover DNS:
   X.tld           NS1.LINODE.COM
   Y.tld           NS1.SLICEHOST.COM
   Z.tld           NS1.SLICEHOST.COM

All Domains Moved:

Slicehost DNS:
   SubA.X.tld      1.1.1.1   (Depreciated because requests are no longer being made of Slicehost for this IP)
   SubB.X.tld      1.1.1.1   (Depreciated because requests are no longer being made of Slicehost for this IP)
   SubC.X.tld      1.1.1.1   (Depreciated because requests are no longer being made of Slicehost for this IP)
   SubA.Y.tld      1.1.1.1   (Depreciated because requests are no longer being made of Slicehost for this IP)
   SubB.Y.tld      1.1.1.1   (Depreciated because requests are no longer being made of Slicehost for this IP)
   SubC.Y.tld      1.1.1.1   (Depreciated because requests are no longer being made of Slicehost for this IP)
   Z.tld           1.1.1.1   (Depreciated because requests are no longer being made of Slicehost for this IP)
Linode DNS:
   SubA.X.tld      1.1.1.1
   SubB.X.tld      1.1.1.1
   SubC.X.tld      1.1.1.1
   SubA.Y.tld      1.1.1.1
   SubB.Y.tld      1.1.1.1
   SubC.Y.tld      1.1.1.1
   Z.tld           1.1.1.1
Hover DNS:
   X.tld           NS1.LINODE.COM
   Y.tld           NS1.LINODE.COM
   Z.tld           NS1.LINODE.COM

Thanks, Smark! That's exactly what I had in mind, a gradual migration, a subdomain at a time.

@Smark:

Once domain X.tld is set up on your Linode you change your Slicehost A/AAAA record to the new IP. Within 2 hours you will see more and more users pulling pages from your Linode and less and less users pulling pages from your Slicehost VPS. Repeat this for all X.tld subdomains.

What's the purpose of this part? Why not just change the NS entries on the registrar, skipping all this work?

@KipBond:

@Smark:

Once domain X.tld is set up on your Linode you change your Slicehost A/AAAA record to the new IP. Within 2 hours you will see more and more users pulling pages from your Linode and less and less users pulling pages from your Slicehost VPS. Repeat this for all X.tld subdomains.

What's the purpose of this part? Why not just change the NS entries on the registrar, skipping all this work?

If you change the NS entries for x.tld that means all subdomains will be changed also. If you want to move all the DNS entries to Linode and point them back to Slicehost that works too. This just seems easier.

@Smark:

@KipBond:

@Smark:

Once domain X.tld is set up on your Linode you change your Slicehost A/AAAA record to the new IP. Within 2 hours you will see more and more users pulling pages from your Linode and less and less users pulling pages from your Slicehost VPS. Repeat this for all X.tld subdomains.

What's the purpose of this part? Why not just change the NS entries on the registrar, skipping all this work?

If you change the NS entries for x.tld that means all subdomains will be changed also.

Isn't that what is being done (by the original poster, and also in your response)? You are moving all subdomains to the new Linode IP. In your solution, you are doing this in steps rather than all at the same time (presumably waiting 2 hours or so between each one). I'm asking: why are you doing that? What purpose does it serve?

The way I'd do this is to set up my Linode host, copy my ns entries from Slicehost, replace Slicehost IP with Linode IP, then change NS entries at the registrar. I'm not sure why you are taking all the extra steps you suggest.

> If you want to move all the DNS entries to Linode and point them back to Slicehost that works too. This just seems easier.

I think the way I suggested seems far easier.

Configure the Linode and make sure it is ready to run, turn the TTL at slicehost down to 300 (5 minutes), wait a day for that to fully take effect, add the new zone to Linode's DNS servers pointing at your Linode and wait for it to fully load (~15 minutes), point the records at slicehost to your Linode's IP, make the nameservers changes at your registrar and then give it a week of overlap before nuking the SH zone.

Using the Multi-DNS test at http://revip.info will help you figure out how over 100 of the most used DNS servers see your domain and zone. This is great for seeing if a TTL has expired and checking propogation of a change.

@SelfishMan:

Configure the Linode and make sure it is ready to run,

Check.

> ..turn the TTL at slicehost down to 300 (5 minutes), wait a day for that to fully take effect,

Whether this is necessary depends on the nature of the websites on the host. If it's acceptable for both SH & Linode to be up at the same time, and for some people to access the SH site, while the DNS changes are being propagated, then this really isn't necessary.

> … add the new zone to Linode's DNS servers pointing at your Linode and wait for it to fully load (~15 minutes),

Check.

> point the records at slicehost to your Linode's IP,

Considering the next step, I'm not sure why this is necessary?

> make the nameservers changes at your registrar

Check.

> …and then give it a week of overlap before nuking the SH zone.

Why are you waiting a week?

@KipBond:

Why are you waiting a week?

Not every nameserver in the world will start using the new nameservers immediately. You really should keep the old servers alive for a little more than the time specified by the SOA expire value. It really is just the proper thing to do.

Unless, of course, you enjoy trying to debug random issues but I seem to remember the title of this thread being "Painless DNS migration".

@SelfishMan:

Not every nameserver in the world will start using the new nameservers immediately.

I'll be doing this in the near future, and I'll use your tool to check all of those name servers to see how long it takes. I've never noticed a problem before, but then again, I've never queried that many name servers.

In my experience, changing the NS entries on the registrar was propagated in several hours. Which has always been more than "painless" for me. But, I guess it depends on the type of websites you are hosting, and what level of support you are providing.

I recently did something like this, but I did it in the opposite order. I wasn't coming from slicehost, but from a shared host where the DNS control wasn't all that hot. So, what I did was setup everything in the Linode DNS manager pointing back to the shared host, and changed the NS with the registrar a few days prior to the move. Then it was easy to turn down the TTL's here on linode a day prior and make the moves quickly.

You might find this automated script useful for the migration from Slicehost to Linode:

~~[http://www.ronneseth.com/b/dns-migration-from-slicehost-to-linode/25/" target="_blank">](http://www.ronneseth.com/b/dns-migratio … linode/25/">http://www.ronneseth.com/b/dns-migration-from-slicehost-to-linode/25/](

-ahr

Reply

Please enter an answer
Tips:

You can mention users to notify them: @username

You can use Markdown to format your question. For more examples see the Markdown Cheatsheet.

> I’m a blockquote.

I’m a blockquote.

[I'm a link] (https://www.google.com)

I'm a link

**I am bold** I am bold

*I am italicized* I am italicized

Community Code of Conduct