在Azure中对外部服务进行负载平衡

时间:2018-05-04 07:15:29

标签: .net azure load-balancing azure-load-balancer

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

我认为通过基础设施比通过代码更好地解决了这个问题,但我对Azure提供的基础架构知之甚少,无法知道这个是否可以甚至通过基础设施来解决。我已经阅读了有关Azure load balancer的概述文档,但他们只讨论将请求平衡到 Azure(公共和内部负载平衡),而不是将中删除的请求上网。

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

具体要求:

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

更新(2018-05-06): @ kim的回答让我注意到了Azure Traffic Manager,它使用基于DNS的负载均衡和轮询进行自动故障转移。这可能是进行负载平衡的标准方法,但我的问题的理想解决方案是接收请求的代理,将它们重放到其中一个负载平衡端点,检测单个请求的失败,并立即进行故障转移,用另一个端点重试请求。这样,除非没有可用的工作端点,否则调用应用程序将不会注意到某些错误。我知道这对于我的问题可能过于具体,因为它有一个标准的基础设施解决方案,但我还是要添加它,以防万一...

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

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