我们有一个架构,我们在两个 Azure 应用程序网关前面有一个流量管理器,并根据优先级进行配置(越靠近优先级越高)。我们正在使用应用程序网关进行基于路径的路由到多个 Web 应用程序。如果应用程序网关下的 Web 应用程序(后端池)之一出现故障,流量管理器会继续将流量定向到同一应用程序网关,尽管请求失败。我猜流量管理器只是在探测默认的后端池?任何人都知道在这种情况下如何配置流量管理器,以便在请求在第一优先级位置失败时将流量重新路由到第二个位置?
6 回答
为了解决这个问题,在流量中使用自定义标头可能会终结。标头主机:<<域名>>应添加到端点。这将有助于 appgateway 确定适当的后端进行健康检查。
如果您的流量管理器的端点是应用程序网关的 IP 地址,那么流量管理器也会从应用程序网关获得 200 OK 状态。
因为流量管理器未检测到应用程序网关后端池中的机器或应用程序。流量管理器的探测只检测自身配置的端点。如果应用程序网关运行良好,它将照常将流量路由到该网关。
流量管理器探测可以采用路径,但我假设您已经为不同的 webapps 配置了多个路径。您正在寻找的是一个设置,如果路径关闭,流量管理器应该路由到第二个应用程序网关。这很难设置,除非您有一个专用的 web 应用程序,它根据所有基于路径的 web 应用程序的聚合健康状况来响应健康/不健康状态。
我确实在与同样的问题作斗争。
My App Gateway 具有基于 URL 的侦听器,用于基于请求的 URL 在其下的每个网站。我有一个用于 HTTP 和另一个用于 HTTPS,两者都围绕同一个公开的 DNS 名称。
我认为这个问题的解决方案是添加第三个侦听器,但这将使用流量管理器主机名。这样,请求将到达应用程序网关,然后它将匹配一个已知的 URL,并向下到达网关下方的网站。
否则,监视器将仅轮询网关状态,并将“始终”返回已知的 HTTP 状态代码。
在您的场景中,只有当添加到应用程序网关后端的两个端点/Web 应用程序都失败时,流量才会切换到其他位置的应用程序网关,因为只要应用程序网关响应,流量管理器探测就会成功200 OK。
为每个应用程序添加一个单独的应用程序网关。这将是一个昂贵的解决方案,但可以在不改变架构的情况下解决您的问题。