我们正在寻找一个 Azure 解决方案,用于通过单个入口点将传入的 API 消息(基于微服务)路由到多个Azure Web App
实例(*.azurewebsites.net),而不是多个虚拟机。
路由将基于 URL,因为 URL 部分包含微服务名称。之后,我们打算使用相同的服务进行负载平衡。
目前,我们正在使用nginx
具有 URL 重定向的自定义服务器执行此操作,但我们想知道是否可以使用本机 Azure 服务来实现。
到目前为止,似乎是Azure Application Gateway
面向 VM 的。
答案1
概述
不要害怕陷入困境的公民;Azure API 管理已经赶来拯救你!
Azure API 管理允许您拥有一个用于提取的端点,并允许您基于 URL 路由到各种服务,安克萨斯,Azure Web 应用,逻辑应用甚至更多!你甚至可以将其路由到应用程序网关如果你想。
它还允许您保护您的服务,而无需编写一个全新的应用程序来托管在 AKS 或其他服务中。它还允许您安全存储机密在资源中,这样您就不需要在代码中存储凭据。
由于该解决方案是无服务器的,因此您可以大幅减少责任,同时最大限度地提高回报、安全性和可维护性。无需混乱的 helm/AKS 清单。
图表
答案2
但我们想知道是否可以通过原生 Azure 服务实现
有一个名为Azure Kubernetes 服务 (AKS).可用于在标准化的环境中操作容器。
Kubernetes 有一个对象叫做入口,这是一种声明式的方式来描述您的系统提供的基于 HTTP 的服务,以及它们背后对应的后端服务。有多种入口控制器您可以选择的实现,将 Ingress 对象描述的服务集转变为具有适当配置的实际工作的反向代理/负载均衡器。NGINX 入口控制器是这些实现之一,是基础 Kubernetes 项目的一部分。它使用由 Ingress Controller 配置和控制的 nginx 反向代理。
作为 Ingress 对象的目标,您可以使用类型 ExternalName服务对象来引用 AKS 外部的目标服务,或者您可以使用其他类型的服务对象来引用 AKS 内部的目标服务。
答案3
您可以查看 Azure 负载均衡器:
https://docs.microsoft.com/tr-tr/azure/load-balancer/load-balancer-overview