消除网络服务器的单点故障?

700*_*are 2 failover web-server redundancy

我知道在 DNS 中,每个 DNS 服务器都会尝试查看它们是否会响应

我在电子邮件中知道,如果发生故障,它将转到列表中的下一个,或者将邮件保留一段时间

据我所知,在网络服务器中,浏览器将获取网络服务器 IP 地址之一并尝试它,如果失败,它将放弃。这样对吗?如果是这样,那么将流量从出现故障的 IP 地址引开的唯一方法就是使用 DNS 服务器,即使这样也不会立即更新。

Mik*_*ott 5

如果您根本不希望出现单点故障,则需要进行全局服务器负载平衡——您显然不能依赖单个数据中心,即使使用冗余 BGP 配置,您的 BGP 表也会构成单点故障如果有人推送错误的配置,可能会搞砸。

您所做的是配置 DNS 为您的域名的 A 记录通告多个 IP 地址,指向位于不同数据中心(最好在不同城市)的站点副本,浏览器将选择一个(通常是随机的,但注意 Windows Vista,它实现了 RFC3484 的愚蠢位,因此不是随机的),并将存储其他人。根据浏览器的不同,如果它使用的地址不可用,它通常会使用其他地址之一。您的 DNS 服务器必须持续监控所有站点,并停止为任何出现故障的站点做广告。他们还需要非常短的 TTL。对此有硬件解决方案——例如 F5 的 BigIP 设备。

您还需要在数据中心之间实时复制数据库、文件和用户会话状态的方法。

显然,您还需要从所有 ISP 获取网络图和供应商列表,以确保所有网络路由在地理上完全不同,并且 ISP 不依赖于同一个上游供应商。确保它们不在同一个电网上可能也是值得的。

有关全局服务器负载平衡的更多信息,请参见此处(虽然它有点旧且过时):http : //www.tenereillo.com/GSLBPageOfShame.htm

您的故障转移不会像 BGP 故障转移那么快,但您将无法使用单个错误的 BGP 配置使您的站点完全关闭。您可能会弄乱单个 DNS 服务器或数据中心的配置,但这不会使您完全崩溃(除非您将 DNS 更新自动推送到所有 DNS 服务器)。

  • 当然。它指定当从 A 记录上的多个 IP 地址中选择时,客户端应该选择与自己的 IP 地址共享最多前缀位的地址,而不是按照显示的顺序获取它们或随机选择一个。这对 IPV6 来说是有意义的,至少按照最初的设想,但对 IPV4 来说完全没有意义。大多数 Vista 客户端都在 192.168.xx 范围内的 IP 地址上运行 NAT,因此它们将始终选择与该子网共享大多数前缀位的 IP 地址,从而将您的负载偏向您的站点之一。 (2认同)