是否有可能完全避免 Web 后端的单点故障?

是否有可能完全避免 Web 后端的单点故障?

似乎您总是依赖于某个托管提供商的可用性。即使您的服务器在数据中心之间具有地理冗余,您仍然有一个指向某个 IP 地址的 DNS 记录,并且它将由某个可能随时消失的 DNS 服务器解析。有解决方案吗?我见过有人建议使用某种机制来检测停机时间和执行故障转移,以实现 DNS 负载平衡。哪个 DNS 提供商提供此功能?它是否仍然依赖于其中一个数据中心不停机?

假设我们第一条联系线(LB 代理)后面的一切已经具有地理冗余,那么是否真的有可行的方法来解决最后一步?

答案1

实际上,可以有多个 DNS 服务器为某个域提供服务,看一下域 stackoverflow.com:

$ nslookup -type=ns stackoverflow.com
服务器:192.168.0.1
地址:192.168.0.1#53

非权威答案:
stackoverflow.com 名称服务器 = ns3.serverfault.com。
stackoverflow.com 名称服务器 = ns1.serverfault.com。
stackoverflow.com 名称服务器 = ns2.serverfault.com。

权威的答案可以参见:

$

stackoverflow.com 下的域名可以由三个名称服务器解析,因此即使其中一个或两个服务器发生故障,域名仍然可以解析。

答案2

为 DNS 服务器提供建议的 RFC 建议使用至少三个放置在逻辑和地理位置不同的名称服务器来避免这个问题。为这些服务器发布的 IP 地址也可以使用 IP 任播进行设置,以便不同位置的服务器可以共享相同的 IP 地址。当使用正确的路由时,绕过故障的路由几乎是自动的(即,与该 IP 绑定的一个位置发生故障,流量会自动定向到另一个位置)。根 DNS 服务器和许多主要 TLD 都以这种方式设置,以抵御故障并抵御 DDoS 攻击。这就是 OpenDNS 等服务即使在处理数十亿次查询时也能保持接近 100% 正常运行时间的原因。

公司已花费数百万美元用于建设冗余基础设施以减少停机时间,但故障仍然会发生,而且通常是以意想不到的方式发生,与人为因素而非技术因素有关。

相关内容