如何在不中断服务的情况下为网站切换DNS?


13

我想在不中断任何服务的情况下切换我们网站的DNS

服务器IP保持不变。
通常需要24-48小时才能更新整个互联网。
是否可以使两个DNS并行工作?

JamesRyan重要说明:

请记住,某些DNS服务器不尊重低TTL,也不会缓存。期待一些重叠。

^这确实是一个问题。


背景:

我将我们网站的DNS更改为另一个提供商(bluehost似乎已损坏,并且经常显示其广告页面而不是我们的网站),所以我在大约2小时后切换回了原来的原始DNS。

服务器的IP保持不变,所以我希望不会造成任何服务中断,因为两个DNS都显示同一台服务器。

现在,24小时后,仍有30%的互联网仍在使用损坏的/错误的提供程序(bluehost),在whois中未引用该提供程序。(关于Pingdom +多个用户报告他们无法访问我们)

Answers:


18

正确的方法:

  1. 将区域TTL更改为最小值-在大多数情况下为300秒(5分钟)。在此阶段请勿更改任何记录。
  2. 等待48小时。
  3. 做改变。只需5分钟即可传播更改。
  4. 将TTL恢复为标准的48小时。

此过程适用于所有更改,而不仅仅是NS更改。如果您需要更改A记录的IP地址,它将以完全相同的方式工作。尽管这并不是绝对必要的,但从理论上讲,您可以同时运行两个名称服务器,这是个坏主意。您永远不会知道在48小时内是否不需要进行紧急更改。


6
请记住,某些DNS服务器不尊重低TTL,也不会缓存。期待一些重叠。
JamesRyan 2012年

>请记住,某些DNS服务器不尊重低TTL,也不会缓存。<-我想这是一个问题,是服务中断的原因!
Lupo 2012年

6
在这种情况下,只要您将两台服务器的运行时间都设置为4天,就可以了。
David Schwartz

1
尚不清楚此答案是否解决名称服务器保持不变但Web服务器ip更改的情况。而且它绝对没有解决如何将停机时间缩短到几秒钟的问题。我要问一个新问题。
Buttle Butkus 2013年

3

如果要更改DNS提供程序(whois中显示的名称服务器),则可以并行运行它们。从我的域来看,GTLD服务器(告诉其他运行我的DNS的互联网用户的服务器)使用的TTL为48小时。据我所知,不可能对此进行更改。

通常,您要做的就是让您的域名注册商更改名称服务器条目,以确保已设置新的提供程序,并且旧的提供程序将其条目至少保留48小时。

如另一个答案中所述,如果您只是更改自己的记录,则可以预先减少记录上的TTL,以进行即时交换,尽管某些不良的DNS服务器仍会缓存更长的时间。


>并且旧提供商将其条目保持至少48小时有效。<-我想这是我做错了。
Lupo 2012年

3

首先,让我们弄清楚我们的术语,因为还不清楚您要问什么。

主机设置包含三个部分:

  1. 注册商
  2. 域名服务器托管
  3. 服务器托管

由同一家公司提供所有这三种服务并不少见,但没有要求。当您从同一家公司购买1.时,不单独收取2.费用也是很常见的,这增加了混乱。

注册服务商负责告诉父域的维护者您的域及其名称服务器是什么。

名称服务器负责将您的域和子域映射到IP地址(以及名称服务器可以执行的所有其他操作)。

服务器可能是您最熟悉的部分,并且是网站请求和电子邮件最终到达的地方。

一旦确定要更改或要更改哪个,就可以修改问题以使其更清楚吗?


我将假设您正在更改域名服务器托管。为此,您必须:

  1. 查找一个新的名称服务器主机,并用它们设置当前名称服务器主机上的所有记录。
  2. 请与您的注册商联系,并要求他们将权威名称服务器更改为您刚刚设置的新名称服务器。由于他们可能不会立即执行此步骤,因此需要一些时间,并且涉及的TTL通常为48小时。
  3. 一旦所有新的DNS请求都到达新的域名服务器,请关闭旧的域名服务器。

谢谢Ladadadada,我正是这样做的,两个DNS配置在同一台服务器上都具有相同的A记录(并且我希望不会造成任何服务中断)-尽管如此,看来旧的(bluehost)不再使用该配置了,因为whois信息已经显示在新服务器上。
Lupo 2012年

1
啊,那是Bluehost的不幸和可怜的形式。一旦更改了授权,他们就不应从其名称服务器中取出您的记录。他们应继续响应至少48小时。
Ladadadada 2012年

3

A)如果您正在共享主机服务上运行站点-尽可能使用DNS TTL进行操作

B)如果您正在运行自己的服务器-为使停机时间最少,请在源服务器上使用代理,并在目标服务器上使用IP提取器(forwarded_for标头)(这样原始IP可以相同),请在更新DNS记录后移动文件,并等待流量在源服务器上停止


您的回答似乎似乎包含一些隐藏的宝石,但是只有知道您所谈论内容的人才能理解您的发言。我想在您的帖子中添加一些链接,但我不确定它们是否正确。您是说X-Forwarded-For吗?en.wikipedia.org/wiki/X-Forwarded-For对于IP提取器,您的意思是:github.com/jonrohan/ip-extractor
Buttle Butkus

1
正确,对于提取器,使用X-Forwarded-For,应该是Web服务器模块,在apache httpd的情况下可以做到这一点:mod_extract_forwarded,mod_realip,mod_realip2等。该模块会将所有信息转换为优先级较低的模块,例如php等。 。
GioMac

IPExtractor与Web服务无关
GioMac
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.