如果 aCNAME的 TTL 为 1 小时,指向ATTL 为 1 分钟的记录,CNAME那么查找该记录的人会将整个结果缓存 1 小时,还是将不得不每 1 分钟查找一次 A 记录?
我正在将域的名称服务器从注册商转移到 dnsmadeasy.com,以便我们可以进行自动故障转移(以及其他好处)。当我过去这样做时,我只是将 A 记录的 TTL 值设置得尽可能低(1 分钟),以便在主服务器出现故障时备份服务器(几乎)立即在线。
我能发现的唯一一个问题是 TTL 低,我们将拥有“更高的查询流量”。这是坏事吗?相反,使用高 TTL 值是否有好处?
当有人访问您的 DNS 控制并在您的域上设置 100 年的 TTL,同时将其 IP 指向某个不起眼的网站时会发生什么?
(当然你发现它太晚了)
我目前使用 DNS 循环进行负载平衡,效果很好。记录看起来像这样(我的 TTL 为 120 秒)
;; ANSWER SECTION:
orion.2x.to. 116 IN A 80.237.201.41
orion.2x.to. 116 IN A 87.230.54.12
orion.2x.to. 116 IN A 87.230.100.10
orion.2x.to. 116 IN A 87.230.51.65
Run Code Online (Sandbox Code Playgroud)
我了解到并非每个 ISP/设备都以相同的方式处理此类响应。例如,一些 DNS 服务器随机地轮换地址或总是循环它们。一些只是传播第一个条目,其他人尝试通过查看 IP 地址来确定哪个是最好的(区域附近)。
但是,如果用户群足够大(分布在多个 ISP 上,等等),它的平衡就会很好。从最高负载到最低负载的服务器的差异几乎都超过 15%。
但是,现在我遇到的问题是,我正在向系统中引入更多服务器,而且并非所有服务器都具有相同的容量。
我目前只有 1 Gbps 服务器,但我也想使用 100 Mbps 和 10 Gbps 服务器。
所以我想要的是我想引入一个权重为100的10 Gbps服务器,一个权重为10的1 Gbps服务器和一个权重为1的100 Mbps服务器。
我之前添加了两次服务器来为它们带来更多流量(效果很好——带宽几乎翻了一番)。但是向 DNS 添加 100 次 10 Gbps 服务器有点荒谬。
所以我考虑使用TTL。
如果我给服务器 A 240 秒的 TTL 和服务器 B 仅 120 秒(这大约是循环使用的最小值,因为如果指定了较低的 TTL,许多 DNS 服务器设置为 120(所以我听说过))。我认为在理想情况下应该会发生这样的事情:
First 120 …Run Code Online (Sandbox Code Playgroud) networking domain-name-system load-balancing ttl round-robin
我正在使用 Varnish 3.0.3(撰写本文时的最新版本),或多或少是默认安装,使用以下存储:
# # Cache file location
VARNISH_STORAGE_FILE=/var/lib/varnish/varnish_storage.bin
#
# # Cache file size: in bytes, optionally using k / M / G / T suffix,
# # or in percentage of available disk space using the % suffix.
VARNISH_STORAGE_SIZE=4000M
#
# # Backend storage specification
VARNISH_STORAGE="file,${VARNISH_STORAGE_FILE},${VARNISH_STORAGE_SIZE}"
#
Run Code Online (Sandbox Code Playgroud)
大多数可以缓存的页面都有很长的 TTL。我正在使用的站点很大,有数百万个页面,这不可能适合上面列出的存储大小 (4 GB)。
设置问题:
让我们假设整个存储空间已满,并且缓存中的任何内容都没有过期(我的 TTL 是缓存中每个项目的 2 周)。
我假设 Ban Lurker 在这里没用,因为它只会删除过期的项目,而没有过期的项目。
问题:
鉴于上述情况,当额外的请求进入缓存中尚未存在的内容时,Varnish 会发生什么情况?无论这些项目的 TTL 是多少,Varnish 是否会尝试从缓存中删除旧项目?清漆会崩溃吗?悬挂?
如果 Varnish 不处理场景,我可以做些什么来配置它以更好地处理场景?(我显然可以降低缓存中项目的 TTL,但我想知道是否有任何其他建议)。
在这种情况下,我看到 Varnish 有效地停止响应请求。在发生这种情况时,我并没有耗尽内存或 CPU 的内存。
谢谢。
跟进: …
我的 php 脚本正在发送一个标头X_Cache_ttl: 1h,在我的清漆配置文件中我有
sub vcl_fetch
{
if(beresp.http.X-Cache-ttl){
set beresp.ttl = beresp.http.X-Cache-ttl;
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我尝试启动它时,带有 set 命令的行导致 varnish 失败。
在我得到的日志中
Expression has type STRING, expected DURATION
('input' Line 116 Pos 34) -- ('input' Line 116 Pos 56)
set beresp.ttl = beresp.http.X-Cache-ttl;
Run Code Online (Sandbox Code Playgroud)
如何转换X-Cache-ttl为持续时间以便我可以动态设置 TTL?
我想避免多个类似的 if 语句
if(beresp.http.X-Cache-ttl == "60s") {
set beresp.ttl = 60s;
}
if(beresp.http.X-Cache-ttl == "1h") {
set beresp.ttl = 1h;
}
Run Code Online (Sandbox Code Playgroud)
如果重要的话,我在 centos 6 上使用 varnish 3.0.3。
我有以下配置:CISCO 881,IOS 15.2(4)M6。在 WAN 接口上配置了来自我们 ISP 的 86.34.156.48/29 子网。路由器后面是 2 个网络服务器。NAT:86.34.156.51 <> 10.10.10.100(私有 IP,server1)。如果我使用服务器的外部 IP(86.34.156.51)配置 BIND DNS 服务器 A 记录,外部世界永远不会从我的 DNS 服务器获得响应(我不知道那里发生了什么,也许路由器进行了 DNS 修改或其他操作)类似(这是一个问题)),并且确定 DNS 服务器已配置并正常工作(我使用 TCPdump 捕获了 IP 数据包)。但是,如果我使用服务器私有 IP (10.10.10.100) 配置 DNS 服务器 A 记录,则数据包总是会到达正确的目的地(使用服务器外部 IP,也可能是 DNS 篡改)。
我能做什么???
+-----+
| | an other host somewhere on internet(C)
| |
+-----+
|
|
:
: internet
:
|
+-----+
| | ISP's router
| | black box, without acces
+-----+
|
| 86.34.456.48/29
+-----+
| | CISCO 881, …Run Code Online (Sandbox Code Playgroud) 在清除 DNS 缓存之前是否有一个标准的持续时间,以便如果分心的操作员或卡住的密钥将 86400 的 TTL 转换为 864000000,您最终不会得到权威资源记录甚至整个 DNS 区域,其更改不会承认 27.397 年?
而且,如果没有针对此类错误的保护,那么允许 TTL 持续时间长达 68 年而不是最大可能是一个月的原因是什么?
最近我发现发送给我的一些 ping 出现TTL错误。当有人 ping 我的计算机时,它会TTL为每个数据包显示不同的值。
例如,ping.eu 显示:
--- PING 78.188.216.242 (78.188.216.242) 56(84) bytes of data. ---
64 bytes from 78.188.216.242: icmp_req=1 ttl=112 time=78.7 ms
64 bytes from 78.188.216.242: icmp_req=2 ttl=17 time=78.8 ms
64 bytes from 78.188.216.242: icmp_req=3 ttl=206 time=78.7 ms
64 bytes from 78.188.216.242: icmp_req=4 ttl=212 time=78.7 ms
--- 78.188.216.242 ping statistics ---
packets transmitted 4
received 4
packet loss 0 %
time 3002 ms
--- Round Trip Time (rtt) ---
min 78.734 ms
avg 78.782 …Run Code Online (Sandbox Code Playgroud) ttl ×10
cache ×3
networking ×3
varnish ×2
a-record ×1
cisco ×1
cname-record ×1
dns-hosting ×1
dns-zone ×1
nameserver ×1
round-robin ×1