在 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,但它不仅如此。因为:
- 我需要能够使用代码动态添加或更新条目,因此应该可以使用 API。
- 正常的 DNS 条目有 24 小时的生存时间,这意味着如果我想将我的应用程序从一个环境移动到另一个环境,最多 24 小时,用户将访问这两个环境。
- 我预计会有数十万个子域。 Azure DNS 有 25,000 个条目的限制。
我研究过 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,这对我们来说绰绰有余。 :)
我们有一个应用程序托管在 Microsoft Azure 的多个环境中。我们想根据子域路由流量,比如 xxx.mydomain.com 应该转到我在北欧的 webapp,而 yyy.mydomain.com 和 zzz.mydomain.com 应该转到我在东欧的 webapp美国
我知道这听起来像是简单的 DNS,但它不仅如此。因为:
- 我需要能够使用代码动态添加或更新条目,因此应该可以使用 API。
- 正常的 DNS 条目有 24 小时的生存时间,这意味着如果我想将我的应用程序从一个环境移动到另一个环境,最多 24 小时,用户将访问这两个环境。
- 我预计会有数十万个子域。 Azure DNS 有 25,000 个条目的限制。
我研究过 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,这对我们来说绰绰有余。 :)