gpt4 book ai didi

Azure LoadBalancerProbe 响应被忽略

转载 作者:行者123 更新时间:2023-12-01 10:51:23 26 4
gpt4 key购买 nike

我为我的 webrole 定义了一个自定义 LoadBalancerProbe,如下


<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="CloudService" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" schemaVersion="2013-03.2.0">
<LoadBalancerProbes>
<LoadBalancerProbe name="MyProbe" protocol="http" intervalInSeconds="15" path="/api/ping" port="80" timeoutInSeconds="30" />
</LoadBalancerProbes>
<WebRole name="TestApp" vmsize="Small">
<Sites>
<Site name="Web">
<Bindings>
<Binding name="Endpoint1" endpointName="Endpoint1" />
</Bindings>
</Site>
</Sites>
<Endpoints>
<InputEndpoint name="Endpoint1" protocol="http" port="80" localPort="80" loadBalancerProbe="MyProbe"/>
</Endpoints>
<Imports>
<Import moduleName="Diagnostics" />
<Import moduleName="RemoteAccess" />
<Import moduleName="RemoteForwarder" />
</Imports>
</WebRole>
</ServiceDefinition>

在 Azure 中时,我有 2 个实例。我启用了trace.axd并且可以看到负载均衡器调用ping方法,所以这肯定发生了。

当我希望我的实例出现故障时(我更改了实例上的配置设置),我还可以在测试应用程序中看到“503”响应(服务器不可用)。我可以从负载均衡器 X-MS-LB-MonitorStatus Down 看到自定义 HTTP header .

当我使用Curl请求访问负载均衡的url时,它总是返回正确的结果(如果我将实例设置为返回503而不是200,则它不会出现在响应结果中)。

但是,当我使用浏览器(在本例中为 Chrome)时,我仍然可以从应该关闭的实例中获取结果(即该实例可用,我禁用它,然后仍然对负载平衡 url 进行额外调用解析为“禁用”实例)。

我可以使用trace.axd信息确认解决每个请求的实际实例

我很难相信 azure 在这里正确地进行了负载平衡。

  1. 为什么浏览器仍然能够访问一个被认为不循环的实例?
  2. 为什么curl“总是正确”?

最佳答案

Azure 负载均衡器是第 3 层负载均衡器,仅对新传入 TCP 连接进行负载均衡。它对 HTTP 流量一无所知。

通常,浏览器将建立一个 TCP 连接,并将 keep-alive 设置为 true,并保持该 TCP 连接打开一段时间,并且对网站的任何后续请求将只是现有 TCP 连接上的 HTTP 流量。诸如curl之类的应用程序通常会在每次请求后关闭TCP连接。

因此,在您的情况下,Azure 负载均衡器运行正常,但您的浏览器已经与不轮换的实例建立了 TCP 连接,因此 future 的 HTTP 请求仍将发送到同一个不轮换的实例。

要验证是否发生了这种情况,您可以在客户端或服务器端使用 netmon/wireshark。

要解决此问题,您有以下几种选择:

  1. 空闲时间超过 4 分钟后,连接将被终止你的浏览器应该建立一个新的 TCP 连接并获取路由到正在轮换的实例。
  2. 关闭所有浏览器窗口并重新打开浏览器应建立新的 TCP连接。
  3. 在服务器端,您可以将 keep-alive 设置为 false,这将终止 Azure 实例上的 TCP 连接。

请参阅第三次问答:http://blogs.msdn.com/b/kwill/archive/2013/02/28/heartbeats-recovery-and-the-load-balancer.aspx了解更多信息。

关于Azure LoadBalancerProbe 响应被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19547795/

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