具有两个 ISP 的 Web 服务器地址

网络工程 故障转移 IP地址 负载均衡器
2021-07-28 11:06:16

我是网络新手,我有以下问题。在我工作的小公司中,我们有一个负载平衡路由器,它有两个 ISP(目前只有一个 ISP 连接),并且路由器上有一台服务器连接着多个托管在其上的网站。服务器具有来自 ISP1 的静态 IP 地址。这是在 Internet 上路由的地址。问题是,当 ISP2 连接到路由器时,它为服务器提供了不同的 IP,并且这些站点不再可访问。目前我能想到的就是打电话给 ISP2 并要求他们从 ISP1 路由地址,但我不知道他们是否会同意。解决问题的最佳方法是什么,是否有不涉及呼叫任一 ISP 的解决方案?提前致谢。

更新:虽然下面的解决方案是完全有效的,但事实证明,在我们的情况下,它很难完成,因为我们没有直接连接到 ISP,并且配置 BGP 需要与其他人进行长时间的交谈。是否可以仅从 ISP2 注册地址(使用 RIPE ?),以便如果第一个失败,则可以通过第二个访问服务器?

4个回答

不幸的是 BGP 不会帮助你,这是小规模的。即使 RIPE 仍在发布它们,您也无法为单个 Web 服务器证明独立于提供者的地址块是合理的。如果没有足够大的地址块,任何 ISP 都无法宣传您的 PI 地址块。

如果您确实必须自己托管这些网络服务器,那么解决方案是为您的域托管 DNS,如果需要,可以使用 CNAME 记录。您可以随时控制用于联系服务器的 IP 地址。您可能需要购买某种 DNS 设备或负载平衡器来执行此操作,或者可能只是在单个 DNS 服务器上使用多个 DNS 视图。这仅取决于您的业务需求和预算。良好的弹性是昂贵的,您需要分析您要防范的风险,并确保在增加复杂性时不会产生额外的技术和/或操作风险。这个解决方案的细节在这里是题外话。

但是,除非您有发展托管中心业务的雄心,否则我不明白您为什么不将网络服务器放在云中并缓解此类网络问题。

最适合您的解决方案是使用您自己的地址空间运行 BGP。然后您可以将您自己的独立提供商地址分配给服务器并将其通告给两个 ISP。否则,任何足够的 ISP都不会同意路由不属于您的网络。

除了 BGP,我看到的唯一选择是使用类似 dyndns 的东西。尽管此解决方案不适用于关键应用程序。

我同意 @artem_d93 的观点,即 BGP 是最合适的解决方案。使用 BGP,当一条路径出现故障时,会发生重新收敛,并向网络流量提供一条新路径(通过备用 ISP)。这可能需要几分钟才能发生。

您真的需要问问自己或管理层,如果 ISP 或网络设备出现故障,这些服务器保持可用的重要性有多大。如果它不是矫枉过正并且确实有必要,那么一种方法可能是像我所做的那样。

我为每个 ISP 配备了两个 Cisco 4431 路由器,每个路由器都直接连接到另一个,共享一个备用 (HSRP) 地址。它们连接到一对端口连接在一起的 DMZ 交换机(不是堆栈,因为堆栈可能会失败)。然后让两个 ASA 5515X 相连,以便它们共享状态和故障转移。然后连接到我网络核心的两台 Nexus 5548UP 交换机。这是一个完全冗余的设置,因此如果生产线上的任何地方出现故障,我们将继续运行。我们的 IPv4 和 IPv6 块用于 ASA 5515x 和 ISR4431 路由器之间的地址。我还有一个专用的 WAN 路由器(有另一个断开的连接)连接回我的核心以及 4431 路由器

请您的 ISP 之一为您分配 IPv4 /24 块(尽可能小)。您将为此支付月费,但只要您继续使用 ISP,就会根据您的需要分配费用。您至少需要一台可以处理 BGP 的企业级路由器或路由防火墙设备。大多数专用路由器以及一些防火墙设备都可以。消费级设备不能

分配块后,您将需要从 RIPE 获取 ASN。这个自治系统编号将使您成为互联网上的唯一节点。

一旦有了冗余的 ISP,就应该有两个路由器在备用/故障转移配置中共享一个 IP 地址(查找 HSRP),每个路由器都连接到一个 ISP。使用 HSRP,如果一个路由器出现故障,流量将通过另一台路由器 - 它将共享您分配的公共地址之一。

在前面提到的路由器和您的专用网络之间,您应该有一个(或一对)防火墙设备。或许还有一对 DMZ 交换机。通过所有这些互连,您可以拥有完全冗余的互联网连接。

或者,您可以拥有一对具有所有这些功能的防火墙设备。它可以变得非常广泛,但如果你真的需要它,它真的是一个可靠的方法。

其他选项:

  • 如果您通过 IP 地址和端口访问地址,请同时提供您的最终用户并告诉他们在另一个加载失败时使用一个。虽然这是笨拙的解决方法。

  • 如果您可以控制 DNS 记录,则可以更新地址,但请确保将 TTL 设置得非常低,这样陈旧的记录就不会存在很长时间。

  • 如果可能,使用网络托管服务 - 其中一些可以提供 VPN 连接,以便托管服务器可以访问内部数据,但是访问类型可能使其无法使用(例如数据库访问)。

如果您的服务器通过 DHCP 从 ISP1 获取公共 IP 地址,则它不在路由器后面。

DNS A 记录可以使用辅助 IP 地址。将其用于故障转移/备份访问。