我已經定義了一個自定義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