我有4個服務器上每個應用程序相同。我在網絡上的負載均衡器是一個簡單的循環法。問題是如果其中一個應用程序關閉,則負載平衡器仍會嘗試連接到它,然後向我的用戶返回http錯誤。我可以使用JavaScript加載餘額嗎?
有沒有一種方法在JavaScript中,我可以調用一個服務器,如果我得到一個錯誤,然後調用下一個服務器?
感謝
我有4個服務器上每個應用程序相同。我在網絡上的負載均衡器是一個簡單的循環法。問題是如果其中一個應用程序關閉,則負載平衡器仍會嘗試連接到它,然後向我的用戶返回http錯誤。我可以使用JavaScript加載餘額嗎?
有沒有一種方法在JavaScript中,我可以調用一個服務器,如果我得到一個錯誤,然後調用下一個服務器?
感謝
這裏真正的答案是修復或更換負載平衡器,因爲負載平衡器將呼叫路由到死的服務器是不是... ...有用:-)
但回答你實際詢問的問題:
簡短的答案可能是「不」,但請繼續閱讀。
長的答案是它可能取決於你的意思是「呼叫」。如果你的意思是通過ajax調用服務器,那麼你必須設置服務器來支持Cross-Origin Resource Sharing(並要求你的用戶使用browsers compatible with it),否則你會被SOP阻止。但是如果你這樣做了,基本上就是如果你在響應負載均衡地址的ajax調用時出錯,你可以再次嘗試使用特定的服務器地址。
您可以在加載圖像時做同樣的事情(通過再次嘗試使用特定地址來響應error
事件)。
但是,如果你的用戶只是跟隨你的負載均衡地址或其他任何東西的鏈接,這將不會對你有所幫助,這將我們帶回到:這真的需要在負載平衡器級別修復。
根據負載均衡器的不同,它應該有能力在其中一臺不可用的情況下故障轉移到其他主機。通常情況下,您需要設置一個狀態頁面(如果是基於Web的)或要監視的端口,並且它不可用,則負載平衡器將自動從池中移除主機並將所有會話轉移到其他主機(同樣,假設基於網絡的應用程序)。
下一層嘗試這一點將在服務器級別。如果這是一個基於Web的應用程序,則大多數Web服務器都會附帶一些心跳功能,可用於故障切換到其他Web服務器。
做這個客戶端(除非你談論服務器編譯JS)將是你最後的追索權,如果其他選項不可用。但是,在進一步提供幫助之前,我們需要更多關於您的應用程序的信息
通常情況下,LB可以檢查服務器的運行狀況並將其從旋轉中刪除。 – Andrey
關於[SO]的問題通常應與您所遇到的特定編碼問題有關。你沒有發佈任何代碼,也沒有顯示[你嘗試過的](http://whathaveyoutried.com),它使得這個問題無論是主題還是過於本地化。 – zzzzBov
你認爲應該在你的JS中完成,而不是你的代碼? – hop