Sim*_*mon 5 domain-name-system migration
我需要更换运行繁忙网站的老化网络服务器。我已经启动并运行了新硬件,所有软件都已安装。我正在寻找解决方案的地方只剩下一个问题:
当我在 DNS 中更改域的 A 记录时,由于 DNS 缓存,更改需要一段时间才能通过 Internet 传播。在此期间,有的用户会打新服务器,有的会打旧服务器,导致数据不一致,因为现在有两个数据库。我怎样才能立即切换所有人?我不运行 DNS 服务器,只能更改 A 和 CNAME 记录,但如果有帮助,我可以设置自己的。
夜间搬家时,我可能会有一两个小时的停机时间。
谢谢,西蒙
编辑:感谢您的所有回答。我接受 SmallClanger 的答案,因为它是一个可行的解决方案,我赞成 Brian,因为他的回答给了我一个新想法:按照 SmallClanger 的解决方案进行数据库迁移,然后用代理所有请求的 HTTP 代理替换旧的 apache到新服务器。我将代理配置为通过 IP 地址寻址新服务器,并且它不涉及临时子域,该子域可能(尽管有 302 代码)最终出现在某个书签目录、社交网络或浏览器缓存中。
您遇到的根本问题是在切换期间保持数据库一致性。为了实现零停机时间,您别无选择,只能将两台服务器设置为主动/主动集群。(即使暂时假设集群设置本身不会涉及停机时间,这也有点牵强。)
鉴于您无法更改 TTL,最好的步骤是最大限度地减少停机时间:
www2.example.com
),但也使其回答www.example.com
。仅将 DNS 指向www2
新服务器。www
。www2.example.com
这将确保所有流量在 DNS 传播期间都流向新站点,无论它们最初流向哪个服务器,尽管它假设您的站点能够同时从多个域名提供服务。
对于单服务器 LAMP 堆栈(如果这就是您所拥有的),那么这是实现最短(但不是零)停机时间的途径。