gpt4 book ai didi

azure - 如何为微服务设置 Azure 负载平衡?

转载 作者:行者123 更新时间:2023-12-02 07:29:41 24 4
gpt4 key购买 nike

我们在 Azure VM 上托管了一个 API 微服务基础架构。每个虚拟机将托管多个 API,这些 API 是在 Kestrel 上运行的单独站点。所有外部流量都通过 RP(在 IIS 上运行)传入。

我们有一些 API 旨在接受外部请求,而另一些则仅是内部 API。

内部 API 托管在规模集上,每个规模集 VM 都是托管所有内部 API 的副本。秤组前面有一个内部负载均衡器 (ILB)/vip。根本问题是我们的内部 API 调用同一规模集上托管的其他内部 API。理想情况下,这些调用将发送至 VIP(使用内部 DNS),而 VIP 将路由至规模集中的其中一台计算机。但看起来 Azure 不允许这样做......根据文档:

You cannot access the ILB VIP from the same Virtual Machines that are being load-balanced

那么人们如何使用微服务来设置它呢?我可以看到三种方法,但没有一种是理想的:

  1. 将 API 分成不同的规模集。并不理想服务非常轻量级,我不想将我的 Azure VM 增加三倍花费。
  2. 将内部 LB 转换为外部 LB(添加公共(public)IP地址)。然后将该LB放入其自己的网络安全中组/子网仅允许来 self 们的 Azure IP 范围的调用。我会预计这里会有更多延迟并将端点暴露在外部任何方式都会创造更多的攻击面以及更多配置复杂性。
  3. 如果需要调用 ILB,请将虚拟机设置为环回...这意味着源自虚拟机的任何请求都将被由同一个虚拟机处理。这违背了微服务的目的在 VIP 后面。内部微服务可能会在同一台设备上出现故障由于某种原因机器可以在另一台机器上使用......这就是原因我们在 ILB 上分别为每个服务设置运行状况探针。如果它只是返回到同一台机器,你就失去了弹性。

任何有关其他人如何解决此问题的指示将不胜感激。

谢谢!

最佳答案

我认为您的问题与服务发现有关。

负载均衡器显然不是为此设计的。您应该考虑专用软件,例如 Eureka (可以在 AWS 之外工作)。服务发现使您的微服务在被发现后可以直接相互调用。

另请查看客户端负载平衡工具,例如 Ribbon .

关于azure - 如何为微服务设置 Azure 负载平衡?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38531170/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com