在 Azure 中使用什么来路由数千个子域?

What to use for routing thousands of subdomains in Azure?

我们有一个应用程序托管在 Microsoft Azure 的多个环境中。我们想根据子域路由流量,比如 xxx.mydomain.com 应该转到我在北欧的 webapp,而 yyy.mydomain.com 和 zzz.mydomain.com 应该转到我在东欧的 webapp美国

我知道这听起来像是简单的 DNS,但它不仅如此。因为:

我研究过 Azure 流量管理器。它似乎没有基于子域的流量选项。 此外,我还查看了 Azure 应用程序网关。这似乎是正确的选择,它支持 API,但我找不到子域的限制。

有什么建议吗?

Azure 应用程序网关确实可能是适合您的方案的最佳选择之一。 正如您已经说过的,它有一个 api,您可以使用它根据您的子域动态添加规则。

应用程序网关的限制只允许每个网关 200 条规则。 但是每个订阅可以有 1000 个网关,所以如果你可以链接网关,那将给你大约 200.000 个规则。 Microsoft 文档并未显示您可以请求提高这些限制,但如果您提出的要求非常好,也许会允许。

也许这不是您问题的答案,但它可能是一个答案。

根据标准,您似乎正在寻找可通过 API 控制的 load-balancer/proxy/application-delivery-controller 解决方案。我会在这里加上我的 5 美分,因为我们刚刚遇到了非常相似的问题。然而,这些更像是在 Azure 之外寻找答案的建议。

蔚蓝

Azure 流量管理器或 Azure 应用程序网关有您无法适应的限制。例如,在具有 200 条规则的 Azure 应用程序网关中,当您需要提供 HTTP 和 HTTPS 服务时,您可能只托管 200 个 HTTPS 站点,每个应用程序网关限制为 100 个站点。您需要将您的解决方案拆分为多个订阅,以适应订阅范围的限制。此外,应用程序网关 API 对我来说有点太复杂了。

Azure DNS 也有点问题,因为 DNS 记录最长可达 24 小时。因此,您将失去 switch/route 立即将流量发送到不同来源的能力。

自托管

您可以查看更多老派解决方案,运行 HAProxy 或 Nginx,并以编程方式即时修改它们的配置(文本文件)并重新加载配置。 HAPROxy还有一个socket "API"可以为你简化配置修改和reload

还有一组新的服务网格控制器,例如 Kong,它可以 运行 在云中原生地用于服务网格解决方案,但是 Kong 提供了一个简单的 API,在那里您可以 manage/route 轻松访问。

SaaS

如果您打算将此作为服务购买,Cloudflare、Fastly 或其他边缘云提供商确实是“一个大型代理服务器”,并且可以通过编程方式配置它们以将流量路由到不同的来源,这是他们到底做了什么。

如果有人感兴趣,我们最终使用了 Azure DNS。我们联系了微软,他们确认他们可以将配额增加到 500,000,这对我们来说绰绰有余。 :)