0

我们在 Azure 中托管了一个 .NET 服务(目前在 VM 上,后来作为 Web 作业),它通过第三方 API 向外部公共服务执行 HTTP/HTTPS 请求。为了可扩展性和可靠性(因为服务不可靠,并且在发出过多请求时可能会长时间停机),我们希望对此服务进行负载平衡。

我认为通过基础设施比通过代码解决这个问题要好得多,但我对 Azure 提供的基础设施知之甚少,不知道这是否甚至可以通过基础设施解决。我已经阅读了有关Azure 负载平衡器的概述文档,但他们只讨论了将请求平衡Azure(公共和内部负载平衡),而不是从它传到 Internet 的请求。

那么,Azure 是否提供了一些基础架构,允许我对从我的应用程序到 Internet 的请求进行负载平衡?

具体要求:

  • 将单个 HTTP 端点映射到多个配置的端点,理想情况下使用配置的权重(即,在 66% 的情况下选择端点 A,在 22% 的情况下选择端点 B,在 12% 的情况下选择端点 C)。
  • 当配置的端点之一发生故障时,透明地故障转移到另一个端点并忽略失败的端点一段时间。

更新 (2018-05-06): @kim 下面的回答让我注意到了 Azure 流量管理器,它使用基于 DNS 的负载平衡和轮询来进行自动故障转移。这可能是进行负载平衡的标准方法,但我的问题的理想解决方案是接收请求的代理,将它们重播到负载平衡端点之一,检测单个请求的故障,并立即故障转移,用另一个端点重试请求。这样一来,调用应用程序就不会注意到有问题,除非没有可用的工作端点。我知道这可能对我的问题来说太具体了,无法拥有标准的基础设施解决方案,但无论如何我都会添加它,以防万一......

4

2 回答 2

1

我从来没有做过你所描述的事情,但这里有一些我的想法。以下服务可能对您有用:

您可以尝试在您的 API 前面放置一个流量管理器,以对它们进行负载平衡并监控它们是否正常运行。

然后,在流量管理器之上放置一个 API 管理服务来保护 API 并为其提供访问控制。如果将来您需要重新定位 API,您可以轻松地重新配置 API 管理服务以指向其他位置。

于 2018-05-04T07:57:22.207 回答
1

您还可以将三个端点配置为应用程序网关后端池的一部分。这将确保在给定端点出现故障时进行健康检查并故障转移到健康端点。然而,今天的应用程序网关只进行循环而不是加权循环。

于 2018-06-11T16:51:49.330 回答