我正在构建一个托管在 Heroku 上的应用程序。Heroku 建议顶级域名是一个非常糟糕的想法-- 他们建议使用 CNAME 记录和 Zerigo 或 DNSSimple 等变通服务。但是,我使用过的所有其他主机似乎都没有问题。EngineYard 也包含在该列表中,并且它们也在 Amazon EC2 上托管。
我以后是否应该放弃使用 A 记录,转而使用 CNAME 和 Zerigo 解决方法?这真的只是高可用性应用程序的问题吗?Heroku 只是有点偏执吗?
答案1
我认为您链接的 Heroku 中的这段文字仅与 Heroku 和类似类型的提供商托管的服务相关,并且认为它与您在物理服务器(或您自己的 KVM/Xen/ESXi 上的 VM)主机上托管的域无关。
在 Heroku 环境中,您无法控制服务在何处运行,并且 Heroku 希望能够灵活地移动内容而不会破坏客户系统。为此,他们对 CNAME 记录的模型使用很有意义。
对于其他系统,您必须考虑您的环境是否会从他们建议的 DNS 命名方案所提供的灵活性中受益。
答案2
他们的论点是,使用CNAME
允许另一个实体(他们)在没有您参与的情况下对正在使用的地址进行更新。
那里是确实如此 - 但实际上这与可扩展性或云无关。对于您的提供商来说,能够将他们的服务器移动到不同的地址而无需让客户更新所有A
记录是有益的。
这就是全部了。文章似乎试图将此与增加固有弹性混为一谈,具体引用了“大规模内部数据中心”——这完全没有意义。
答案3
对于您的提供商来说,能够将其服务器移动到不同的地址而不必让其客户全部更新 A 记录是十分有益的。
对我来说,这似乎是一个很好的理由,足以在云服务(包括 Heroku)上尽可能不使用 A 记录并坚持使用 CNAME,特别是当您的记录具有较大的 TTL 时。
这是一篇有趣的文章(虽然来自一位明显的 Heroku 粉丝,但它很好地解释了这种情况): http://neilmiddleton.com/the-dangers-of-a-records-and-heroku/
答案4
请注意,可以使用 DNSSimple 的“别名”记录来解决此问题 - 了解更多信息http://blog.dnsimple.com/introducing-the-alias-record/- 这是他们自己对 DNS 的扩展,如果您将它们用于 DNS 托管,它可以解决此问题。