如果我的主服务器由于某种原因离线超过 1 小时,我计划更改 DNS,以便用户访问辅助服务器。这不是减少停机时间的完美解决方案,但它很简单,而且有效。我不确定它的实用性。所以我有一个问题。
如果我要对我的域名的 A 记录进行 DNS 更改(从一个 IP 更改为另一个 IP),那么 2 小时内有多少百分比的用户会转移到新信息?(大致)
我知道这是一个模糊的问题,并且有很多变数,但欢迎任何意见,因为我有过痛苦的停机经历,不想再经历一次。
谢谢
答案1
从长远来看,如果你每次主机或 30% 的主机因维护或黑客入侵而停机时都依赖于 DNS 更改,那么很难扩展基础设施。因此,我建议如果你的组织有预算,你可以 -
- 在您的 IT 部门可以访问的任何第 3 层负载均衡器(如 F5、Cisco)上创建 VIP(VirtualIP),或者您可以使用软件负载均衡器(如 HAProxy)。
- 一旦你有了 VIP,就让你的两个服务器(主服务器和辅助服务器)都成为 VIP 成员
- 在您的 DNS 服务器上添加 A 记录,以将 whateverhost.com 指向 VIP。
这样,所有请求都将到达负载均衡器,负载均衡器将决定将请求转发到哪个服务器。因此,当您想要关闭主服务器时,只需禁用主服务器池成员,负载均衡器就会自动将所有请求路由到辅助服务器。
答案2
如果您想使用此策略,最重要的是确保受影响的 DNS 记录的 TTL(生存时间)较短。TTL 是客户端(及其解析器)将从您的名称服务器获取的地址缓存的秒数。
您可以更改单个记录的 TTL
www.yourdomain.com. IN A 192.0.2.1 ; uses default ttl
变成
www.yourdomain.com. 300 IN A 192.0.2.1 ; ttl = 300 seconds (5 minutes)
SOA
或者,您可以在区域文件顶部添加以下格式的行,从而在其记录中设置整个域的默认 TTL
$TTL 5m ; i.e. 300 seconds
一旦您更新名称服务器上的记录,所有客户端将在 TTL 过期后获得新值。
答案3
理论上,DNS 记录的缓存时间是您所指定的 TTL 字段的持续时间。如果该值为 3600 秒,则在您更改 IP 地址 1 小时后,所有缓存记录都将过期,并且每个访问者都应该将您的域解析为其新的 IP 地址。
实际上,有些 ISP 会立即接受这种变化,而有些 ISP 会运行缓存名称服务器,这些服务器通常会忽略 TTL 值。例如目前有多少百分比的名称服务器遵守 TTL?