We have a situation where we'll be introducing a Load balancer in between the world and our pool of app servers. The DNS for our domain should point to the load balancer and it redirects traffic internally. The problem is that DNS propogation takes time and that we can't have any downtime.
Current Situation
x.y.z.123 is the APP server
DNS www.mysite.com points to x.y.z.123
Expected New Situation
x.y.z.250 is the load balancer
x.y.z.123 is the APP server
DNS www.mysite.com points to x.y.z.250
Which is the best way to do this ? I am ok with a solution having intermediate steps. Changing IP address of the APP server is not a solution.
Ahead of the time that I want to change the addresses on the records I will usually set the TTL on the records down to maybe 5 minutes. If the existing TTL's are, say, 48 hours then do the TTL change farther out than 48 hours before you want to change the addresses. This will give these records with a 48 hour TTL time to expire out of server / resolver caches and then become replaced with the 5 minute TTL. That means that the updated addresses are requeried every 5 minutes instead of 48 hours and the propogation of your changes is much quicker. After the change you can readjust the TTLs back to the original values.
You should set the TTL (time to live) as low as possible. How you do this will vary from DNS provider to DNS provider. Make sure to do this at-least as far in advance as your existing TTL is so that everyone with the old TTL has a chance to get the new one.
http://www.zytrax.com/books/dns/apa/ttl.html
Ultimately though if the app server's IP address is not changing is it going to be the end of the world if they go directly to the app server instead of through the load balance for a short amount of time?
Can't you just leave your existing publishing rule in place at x.y.z.123 pointing to your single application server and create a new publishing rule at x.y.z.250 pointing to your load balancer? I've successfully done so in an Apache load balanced cluster.