将许多站点移动到新服务器 - 更新其 DNS 记录的最快方法是什么?

bik*_*y77 7 domain-name-system migration dns-zone

我正计划将大量网站(大约 100 个)迁移到新服务器,并且我正在迁移计划过程中。

每个网站的典型 DNS 区域有两个 A 记录指向 Web 服务器 IP,一个用于子域example.com,一个用于www子域。

当我们都设置好并准备好将新服务器投入生产时,更改 100x2 DNS 记录将非常耗时,因此我正在寻找一种方法来加快速度。在几个案例中,我阅读了有关创建 bash 脚本的内容,该脚本迭代 DNS 记录并使用新 IP 执行查找替换。在其他主题中,我阅读了有关使用新 IP 添加 A 记录的建议,以便当当前服务器不再可用时,DNS 服务器会将请求指向包含新 IP 的下一条记录。

除此之外,是否有任何情况可以用其他类型的 DNS 条目(即主机名)替换 A 记录,以便在时机成熟时,我只能使用新的主机名更改主机名的 IP 并拥有所有网站指向新服务器?我确定“主机名”不是正确的术语,但我希望你们都明白。

Jen*_*y D 12

您正在寻找的术语是CNAME,您的问题的答案是是和否。

首先,这是一个 CNAME 如何在区域文件中工作的示例。

example.se  IN SOA  ns1.example.se. hostmaster.example.se. (
            [....]
            )

server1    A       10.1.2.3
www        CNAME   server1
Run Code Online (Sandbox Code Playgroud)

现在你只需要更新server1,以移动这两个纪录server1,并www以新的IP地址。

CNAME 不必指向同一域内的地址;它也可以是这样的:

example.se  IN SOA  ns1.example.se. hostmaster.example.se. (
            [....]
            )

www         CNAME   server1.example.org.
Run Code Online (Sandbox Code Playgroud)

现在,当您更新server1zone 中的 A 记录时example.org,该记录www.example.se将跟随而无需任何进一步配置。

从您的角度来看,不好的部分是这不适用于顶级记录 - 这意味着“裸”域。换句话说,您可以制作www.example.comCNAME,但不能使用example.com. 这是因为当您使用 CNAME 记录时,您不能拥有该条目的任何其他记录 - 这意味着您不能拥有邮件服务器记录或名称服务器记录......这意味着域将停止工作。

最佳实践解决方案是使用某种配置管理软件,例如 puppet、chef 或 ansible,从模板生成区域文件。如果出于某种原因,这对您来说是不可能的,那么我会使用脚本来替换所有文件中的 IP 地址。

您还需要在迁移前适时降低域的 TTL 值。(而且别忘了更新区域文件的序列号——我有,而且很尴尬……)