我已经定义了一个自定义LoadBalancerProbe我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头。
当我使用Curl请求来访问负载平衡的url时,它总是返回正确的结果(如果我设置了一个实例返回503而不是200,它不会出现在响应结果中)。当我使用浏览器(在本例中为Chrome)时,我仍然可以从应该关闭的实例中获取结果(即实例可用,禁用它,然后调用负载平衡url仍然解析为“禁用”实例)。
我可以证实,使用的trace.axd信息
我挣扎相信Azure是在做正确的负载均衡这里解决每个请求的实际情况。
- 为什么浏览器仍然能够访问一个据推测不能旋转的实例?
- 为什么卷曲“总是得到它的权利”?
哇,感谢 - 它是驾驶我疯了:) –
你应该更新你的答案,因为它已经过时了。 –
非常有帮助的答案。使用浏览器测试负载均衡器探测器时遇到同样的问题。切换到为每个请求创建新连接的命令行工具可解决此问题。 – Nik