我正在使用websocket處理程序的龍捲風應用程序。我使用Supervisord運行應用程序的多個實例,但是我在加載平衡websocket連接時遇到了問題。使用HAProxy負載均衡與Tornado應用程序的WebSocket連接?
我知道nginx不支持處理開箱即用的websockets,但我按照http://www.letseehere.com/reverse-proxy-web-sockets的說明使用nginx tcp_proxy模塊來反向代理websocket連接。然而,這不起作用,因爲模塊無法路由websocket url(例如:ws:// localhost:80/something)。所以它不適用於我在我的Tornado應用中定義的URL路由。
從我對網絡的研究中,似乎HAProxy是負載平衡我的websocket連接的方式。但是,我無法找到任何體面的指導來設置HAProxy來負載均衡websocket連接,並且還能夠處理websocket URL路由。
我真的很感謝有關如何實現這一目標的一些詳細說明。我也對其他解決方案完全開放。
感謝您提供詳細和翔實的回覆。我今天會試一試並回復。我知道你表達了你對高空閒超時的厭惡感,並且你的觀點對大多數應用程序都有意義。我實際上使用websockets在嵌入式設備和服務器之間創建通信。這個設備實際上永遠是永遠(理論上)。那麼有沒有辦法根本沒有超時? –
@AmirR。我也希望實施類似的設置,希望聽到您採用上述答案的結果。 – skyork
如果您想要(並且會收到警告),您可以禁用超時。但是,這總是一個設計錯誤,因爲您認爲設備永遠不會失敗/崩潰/重新啓動/斷開連接,這是100%錯誤。請記住,超時是爲了保護組件免受其他組件意外故障的影響。當你的設備出現故障時,你不想重新啓動haproxy來擺脫fantom連接,這是沒有意義的。 –