我有一个在Azure托pipe的Web应用程序,它给了我一个“自定义”的域名是awesomeapp.cloudapp.net ,在设置中我可以看到IP地址: 123.456.789
我们有一个域名www.awesomeapp.com ,它指向一个宣传公司和应用程序服务的登陆页面,我已经configuration了一条A这样的logging:
app.awesomeapp.com => 123.456.789
这工作正常。
问题是,有时我们不得不closures虚拟机,当再次打开时,IP是不同的,所以Alogging不再工作。 如果我设置这样的CNAMElogging是否有效?
app.awesomeapp.com => app.awesomeapp.com
每次打开/closures机器都能解决不同的IP问题。 那会工作吗? 那是什么CNAME用于? 这是一个很好的做法(作为性能和安全的问题?
出于这个原因,使用CNAME是Azure的标准做法,它将防止IP更改成为问题。
如果由于某种原因需要使用Alogging,那么您将需要使用保留的IP ,即使您重新启动或closures虚拟机,该IP也将保持不变。
反对CNAME:
由于下游DNScaching需要执行2个DNS查找,一个用于CNAME,另一个用于CNAME指向的A-Record,因此会有(微小的)性能损失。 模糊的,关于具有较less“权威性”或兼容性问题的CNAME的虚假争论。
赞成CNAME:
它们提供了硬件(物理服务器)和服务之间的清晰抽象。 它们简化了DNSpipe理 – 当服务器移动时,只需更改一条logging。 尝试了几种不同的方式来做到这一点,我现在有一个个人喜欢的风格。 它是:
每个物理服务器一个logging; TTL相当低(大约30分钟); 给服务器一个人性化的名字。 每个服务的一个CNAME; 高TTL(也许24小时); 指向上面的服务器名称。 作为上述规则的唯一例外,域根是指向Web服务器/ Web负载均衡器的A-Record。 (@必须是Alogging。)我发现这个设置工作正常。 它为CNAMES保留了额外的DNS查询; 如果服务器崩溃,我仍然可以相当快地改变公共DNS。
这是BIND语法中的一个(即兴)示例:
;name ttl class rr value server01 30m IN A 192.168.0.3 server02 30m IN A 192.168.0.4 webmail 24h IN CNAME server01 extranet 24h IN CNAME server02 ftp 24h IN CNAME server02