我有一个间歇性问题,我不确定从哪里开始尝试解决它。
在我们的开发环境中,我们在负载均衡器上有两个可见的 IP 地址,一个到前端,一个到多个后端服务机器。前端配置为采用通配符 DNS 名称以支持通用“门户”。
dev.example.com A 10.1.1.1
*.dev.example.com CNAME dev.example.com
后端服务器都是同一空间内的特定名称:
core.dev.example.com A 10.1.1.2
cms.dev.example.com CNAME core.dev.example.com
search.dev.example.com CNAME core.dev.example.com
这就是问题所在。定期尝试访问 cms.dev.example.com 的开发人员或程序将获得指向前端而不是后端负载均衡器的结果:
cms.dev.example.com is an alias to core.dev.example.com
core.dev.example.com is an alias to dev.example.com (WRONG!)
dev.example.com 10.1.1.1
开发人员都在 Mac OS X 机器上,尽管我已经看到问题也发生在 Ubuntu 机器上,使用本地云主机 DNS 解析器。
有时开发人员使用 VPN,它将 DNS 定向到它自己的解析器,有时他在本地网络上使用 NAT 路由器分配的 DNS 解析器。
有时清除 Mac OS X DNS 缓存,登录 VPN,然后退出 VPN,问题就会消失。
原始权威服务器在 zerigo 上,直接挖掘他们的名称服务器似乎总能给出正确答案。这些记录公布的 DNS 缓存时间为 15 分钟,但该问题断断续续持续了大约一个星期。
任何故障排除建议?
嗯....当您将通配符 CNAME 指令替换为以下内容时会发生什么:
不要将 CNAME 与通配符混合使用,尤其是当您的 CNAMES 之一可能与通配符名称匹配时。
在这些情况下,通配符、CNAME 和 DNS 缓存的组合似乎会给您带来不一致的结果。
我通过消除所有 CNAME 并将它们替换为 A 记录来解决间歇性解决问题。不是很干,但不再有不一致的查找。