我的公司通过专门的托管服务提供商为其客户构建各种网站。
该托管服务提供商意外关闭了负责为小范围 IP 发布边界网关协议 (BGP) 的设备。由于我很幸运,其中一个 IP 恰好是分配给负载均衡器的公共 IP 地址,用于我们客户的所有 Web 流量。结果,该范围的 BGP 路由通告被撤回,并很快在全球范围内变得无法访问。
托管服务提供商在收到警报后就解决了这个问题,但这让我们损失了超过 15 分钟的停机时间,我们急于在未来避免这种情况。
我们如何监控这个?它比我们的普通监控低很多,它只检查 apache httpd 状态、JVM 等。我们有内部监控,使用 Advent AppEngine 来检查服务器进程、apache 服务器状态响应、应用程序主页响应。
我们是否能够采取措施自己解决这个问题?例如,通过某种方式发布我们自己的 BGP 公告?
我很高兴得到指针/建议阅读,而不仅仅是直接的答案,因为这个级别的堆栈对我来说是全新的,我想填补我的知识空白。
您不太可能解决此问题,除非您的地址空间足够大,可以运行自己的 BGP。即使这样,您也容易受到对等方的 BGP 故障的影响。
如果您在不同的 AS 中使用多个 DNS 服务器,则可以通过设置较低的 TTL 并在发现问题后通过更改 DNS 故障转移到不同网络块/数据中心中的单独 Web 服务器来解决一些问题. 然而,即使这至少需要几分钟。
编辑:正如 Chris 所指出的,如果您正在运行 BGP,您需要在您变得无法访问之前让所有对等方都失败。
除非您至少拥有 /23 的提供商独立地址空间并且拥有 ASN 编号,否则您不太可能运行 BGP。因此,您需要信任您的托管公司。路由器更改往往相当少见,因此再次发生此问题的可能性很小。您可以调查您与他们的任何 SLA,但这可能只是涉及获得您的托管费用退款。
就监控而言,我们在网络外部有一个专用服务器,我们将其用作外部 Nagios 服务器。您可以购买便宜的 VPS 服务器并使用它来监控来自外部用户的 PoV 的内容。例如,我们检查 SMTP 和 HTTP 工作,而不是检查 exim 和 apache 是否正在运行,我们在内部监控中这样做。
作为记录,它存在几个免费的 BGP 监控和警报系统。没有提供您想要的 15 百万分辨率。而且,由于您可能有许多其他原因导致中断,因此从外部监控 IP 连接是唯一真正的解决方案。
关于 BGP 监控的一般文章,法语。
根据设置的方式、通告的网络块的大小以及上游聚合的方式,您可以使用其中一个窥镜脚本来监控服务器所在块的 BGP 公告。
从外部从服务器后退一步 ping 主机和路由器可能更容易。您可以使用 traceroute 来确定要使用的地址。
您几乎无法阻止托管公司再次这样做。为此,您至少需要将路由器或其他运行 BGP 的主机连接到您的提供商。除非您还有其他提供商,否则如果他们不小心关闭了对等路由器,这将无济于事。
更好的解决方案可能是拥有另一个答案提到的故障转移站点。根据您的风险承受能力,您可以将故障转移设置为在很短的时间内发生,但这涉及对您的 DNS 的完全控制。
你的选择非常有限。您可以对您的提供商大喊大叫,您可以转移到另一个提供商,您可以获得 2 个不同的 IP 范围并在两者上宣传服务,并在您的 DNS 条目上设置较短的 TTL。
但
如果您真的想解决这个问题,请搬到带有会议室的托管设施,并从几个提供商那里购买带宽和 IP 地址。然后,向 arin(或任何适合您居住的地方的注册商) 注册一个 ASN,并自己与提供商对等。
如果您购买了足够的带宽,那么让他们咳出 /24 或 /23 并不难。对等也将非常容易,具体取决于 colo 设施的大小和您将要求的带宽量。
如果您正在写大额支票并且表现得好像您确切地知道自己想要什么(并且您想要什么是合理的),那么完成这些事情并不难。如果您将其外包给您的“供应商”,您将永远处于愚蠢的一端。