2013-03-29 58 views
-2

我有4個服務器上每個應用程序相同。我在網絡上的負載均衡器是一個簡單的循環法。問題是如果其中一個應用程序關閉,則負載平衡器仍會嘗試連接到它,然後向我的用戶返回http錯誤。我可以使用JavaScript加載餘額嗎?

有沒有一種方法在JavaScript中,我可以調用一個服務器,如果我得到一個錯誤,然後調用下一個服務器?

感謝

+0

通常情況下,LB可以檢查服務器的運行狀況並將其從旋轉中刪除。 – Andrey

+0

關於[SO]的問題通常應與您所遇到的特定編碼問題有關。你沒有發佈任何代碼,也沒有顯示[你嘗試過的](http://whathaveyoutried.com),它使得這個問題無論是主題還是過於本地化。 – zzzzBov

+0

你認爲應該在你的JS中完成,而不是你的代碼? – hop

回答

3

這裏真正的答案是修復或更換負載平衡器,因爲負載平衡器將呼叫路由到死的服務器是不是... ...有用:-)

但回答你實際詢問的問題:

簡短的答案可能是「不」,但請繼續閱讀。

長的答案是它可能取決於你的意思是「呼叫」。如果你的意思是通過ajax調用服務器,那麼你必須設置服務器來支持Cross-Origin Resource Sharing(並要求你的用戶使用browsers compatible with it),否則你會被SOP阻止。但是如果你這樣做了,基本上就是如果你在響應負載均衡地址的ajax調用時出錯,你可以再次嘗試使用特定的服務器地址。

您可以在加載圖像時做同樣的事情(通過再次嘗試使用特定地址來響應error事件)。

但是,如果你的用戶只是跟隨你的負載均衡地址或其他任何東西的鏈接,這將不會對你有所幫助,這將我們帶回到:這真的需要在負載平衡器級別修復。

0

根據負載均衡器的不同,它應該有能力在其中一臺不可用的情況下故障轉移到其他主機。通常情況下,您需要設置一個狀態頁面(如果是基於Web的)或要監視的端口,並且它不可用,則負載平衡器將自動從池中移除主機並將所有會話轉移到其他主機(同樣,假設基於網絡的應用程序)。

下一層嘗試這一點將在服務器級別。如果這是一個基於Web的應用程序,則大多數Web服務器都會附帶一些心跳功能,可用於故障切換到其他Web服務器。

做這個客戶端(除非你談論服務器編譯JS)將是你最後的追索權,如果其他選項不可用。但是,在進一步提供幫助之前,我們需要更多關於您的應用程序的信息

相關問題