确保网络冗余:如何在没有停机的情况下从默认ISP切换到备份ISP

时间:2008-12-08 19:44:49

标签: networking

情况如下。我正在与之合作的这家小公司希望拥有冗余的互联网接入。他们从办公室运行大量服务 - 一个网站,POP + SMTP服务器,并使用VPN从家里访问网络共享。他们有2个独立的互联网连接来自2个ISP(一个是本地有线电视提供商,另一个是DSL)。如果他们的默认连接断开,他们会切换到备份。

不幸的是,他们现在已经设置好了,每次发生这种情况时都必须更改DNS记录,这意味着每次切换都会导致最多几个小时的停机时间。他们希望完全冗余,并且能够在没有停机的情况下在网络之间切换。怎么能实现呢?

是否可以在远程数据中心设置服务器,将DNS指向它并让网络流量转发到正确的IP?

如果这只是一个Web应用程序,我会设置一个基本服务器并使用301重定向或类似的东西。我真的不在乎每次是否必须手动切换,因为他们有一两个专门的IT人员可以做到这一点。但他们也需要以这种方式重定向他们的POP,SMTP和VPN流量。

所以它几乎就像负载平衡,但不是真的。是否存在可提供此功能的现有解决方案?你会如何提供这样的ISP冗余?

4 个答案:

答案 0 :(得分:3)

上次我这样做时,我有自己的ASN,并向两个ISP发出BGP 宣布我自己的/ 24(你可以从任何ISP获得,或者也许 ARIN)。你可以沿着这条路走下去,但它有一点点设置。还有一个 随机有线/ DSL ISP可能不会与你一起设置。这样做 消除所有故障点并完全切换 透明的。

您还可以将DNS记录中的TTL降低到5分钟左右。这个 不会立即切换,但5分钟可能足够快。

否则,您当然可以在colo中使用远程服务器,但随后 当然,这成为单一的失败点。你有两个 选择如何重定向流量:

  • GRE /等。隧道:您从colo框中运行两个隧道,每个隧道一个 在你的办公室连接。双向隧道所有相关的流量 你最近在你办公室的colo中找到了一些IP。那你可以 运行路由协议(即使是简单的事情,比如RIP)来实现这一点 自动故障转移,甚至同时使用两个ISP 额外的带宽。这可以在Linux上相当容易地实现 盒子或Cisco路由器。我认为Juniper可以,但我从未使用过 他们。故障转移是透明的(例如,不会破坏VPN连接)。 注意MTU问题。如果您的办公室连接不做反向 路径过滤(或可以为您做例外),您不必 隧道输出流量返回colo。
  • NAT。可能会或可能不会使用您正在运行的任何协议,但是 您可以在colo处设置1:1静态NAT以重定向流量。 轻松完成常见的TCP协议,也可能是您的VPN。可行 几乎任何东西。故障转移不透明;现有 连接会超时。也可以使用两个连接 基于每个连接的额外带宽。交通必须 隧道回到了结肠。
  • 明显的第三个答案:将服务移至colo。具有防止停电的优点。

答案 1 :(得分:2)

我认为DynDns“自定义DNS”服务可能会对您的情况有所帮助 - 您的域名背后的IP可能会动态更新(许多路由器都内置支持它)。

更新: 为了减少停机时间,您可以创建一个简单的脚本,一次ping主ISP,如果失败,则将DynDNS更新为次要的(以相同的方式返回)。

答案 2 :(得分:2)

这有点晚了,但答案是循环DNS。使用两个IP地址1.1.1.1和2.2.2.2设置您的网络服务器(www.example.com)。当人们尝试访问www.example.com时,浏览器会自动随机尝试一个,如果第一个没有应答则切换到另一个,然后缓存结果直到浏览器关闭或连接再次失败。如果首先选择错误的IP地址,则不需要停机时间,并且只在第一次连接时出现短暂的昙花一现。

实际上,您甚至可以同时在两个IP地址上运行Web服务器;这被称为“超简单负载平衡”。

答案 3 :(得分:0)

您可以使用default-nexthop设置路线图。

这将处理传出流量而不是传入冗余,这将需要AS编号和至少为/ 24的块的BGP通知,因为ISP不会发布小于/ 24块的任何内容。