我想查看 CNAME 记录的生存时间 (TTL) 值。
我可以访问dig(在 Apple Mac OS X 上),它给了我这样的答案:
% dig host.example.gov
<*SNIP*>
;; ANSWER SECTION:
host.example.gov. 43200 IN CNAME host1.example.gov.
host1.example.gov. 43200 IN A 192.168.16.10
Run Code Online (Sandbox Code Playgroud)
值“43200”是此 DNS 记录的 TTL 吗?
当我们尝试 ping 不同网段中的服务器时,我们会收到消息“传输中的 TTL 过期”。当我们运行 tracert 时,4 个 ip 地址无限重复:
14 60 ms 59 ms 60 ms xxx.xxx.xxx.2
15 83 ms 81 ms 82 ms xxx.xxx.xxx.128
16 75 ms 80 ms 81 ms xxx.xxx.xxx.249
17 81 ms 78 ms 80 ms xxx.xxx.xxx.250
18 82 ms 80 ms 77 ms xxx.xxx.xxx.2
19 102 ms 101 ms 100 ms xxx.xxx.xxx.128
20 101 ms 100 ms 98 ms xxx.xxx.xxx.249
21 97 ms 98 ms 99 ms xxx.xxx.xxx.250
...
Run Code Online (Sandbox Code Playgroud)
排除此错误的基本步骤是什么?
我们目前将我们的 DNS SOA 记录设置为 stackoverflow.com 的以下内容:
primary name server = ns1.p19.dynect.net
serial = 2009090909
refresh = 3600 (1 hour)
retry = 600 (10 mins)
expire = 604800 (7 days)
default TTL = 60 (1 min)
Run Code Online (Sandbox Code Playgroud)
对于像 stackoverflow.com 这样每天接收接近 100 万浏览量的网站,我们的刷新/重试/过期/默认 TTL 是否有更好的选择?
我正在从 Rackspace ta 专用服务器上的云服务器迁移我们的应用程序。
我想关闭应用程序约 5 分钟以将数据从云服务器复制到专用服务器,因此我不希望在复制数据后请求转到旧服务器。
我想将我们的 DNS 记录指向新服务器,但 TTL 设置为 24 小时。我已将其更改为 300 秒。我是否需要等待 24 小时才能更新域指向的 IP/复制数据?
几年前,当我将一些设备从一个数据中心移动到另一个数据中心时,我不得不在几周的时间里进行几次 DNS 更改。在我这样做的时候,世界上大约 95% 的名称服务器似乎尊重 TTL 值,而大约 5% 的名称服务器忽略了我们的值并自行创建。换句话说,95% 的流量在我们定义的 15 分钟 TTL 内移动。另有 3% 的人在第一个小时内成功,1% 的人在第一天就成功了,而一些掉队者则需要长达三天的时间。
(是的,好的,我将流量百分比与名称服务器百分比混淆了。请插入手势。)
不过,那是在 2001 年左右,我们使用恐龙通过管道传输数据包。我的猜测是今天的域名服务器表现更好,落后者的问题会更少。有没有人知道现在有多少流量会在定义的 TTL 内切换?是否还有许多名称服务器忽略 TTL?
我知道根据情况它可能会有很大不同,但是对于托管一个没有计划移动托管服务器的网站来说,在 DNS 记录上设置什么 TTL 是好的?
由于我的网络中涉及多少台服务器,我很难让它们井井有条。其中一些没有静态 IP,所以我认为如果我创建了一个 config.mydomain.com 域可能会很好。在这个域上,我可以为每个服务器存储 A 记录和 IP。我是这样设置的:
s1.config.mydomain.com. A 10.0.0.1 #ttl 60
s2.config.mydomain.com. A 10.0.0.2 #ttl 60
s3.config.mydomain.com. A 10.0.0.3 #ttl 60
# etc
Run Code Online (Sandbox Code Playgroud)
每条记录的 TTL 为 60,以防我需要快速更改 IP,但我不一定希望客户端每 60 秒连接一次更新。现在假设我设置了我的域以使用它们,如下所示:
mydomain.com. CNAME s2.config.mydomain.com. #ttl 3600
mail.mydomain.com. CNAME s2.config.mydomain.com. #ttl 10800
svn.mydomain.com. CNAME ns1.config.mydomain.com. #ttl 21600
Run Code Online (Sandbox Code Playgroud)
CNAMES 的 TTL 更高,所以假设我访问 mydomain.com。它向我的 DNS 服务器询问 的 IP mydomain.com,我的服务器返回CNAME s2.config.mydomain.com.然后它向我的服务器询问 的 IP s2.config.mydomain.com,并且我的服务器返回10.0.0.1。
它会将CNAME s2.config.mydomain.com记录缓存3600 秒,并将A 10.0.0.1记录缓存60 秒吗?这意味着每 60 秒它仍然会向我的服务器询问 IP 地址吗?
或者它会缓存 …
我发现我可以在 VCL 文件中按如下方式在 Varnish 中设置 TTL:
sub vcl_fetch {
# 1 minute
set obj.ttl = 1m;
}
Run Code Online (Sandbox Code Playgroud)
但是默认设置是什么(假设后端服务器没有设置缓存控制标头)?
DNS 管理器管理工具似乎没有为单个记录配置 TTL 的选项。我可以通过右键单击 -> 属性 -> SOA 来设置每个区域的 TTL。每个记录的等价物在哪里?
ttl ×10
cache ×1
cname-record ×1
dig ×1
hosting ×1
nameserver ×1
networking ×1
ping ×1
rackspace ×1
tcp ×1
varnish ×1
web ×1
web-hosting ×1
web-server ×1