2013-08-01 204 views
0

我想了解在應用服務器發生故障的情況下,這樣的設置的系統行爲:兩個Tomcat服務器的前HTTP負載平衡行爲

  • 硬件負載平衡器承載Web應用程序
  • 負荷配置無論是持續性會話管理器或集羣

我的理解是,如果兩個雄貓的一個崩潰時SE平衡器與粘性活躍

  • 2雄貓發出請求,用戶會收到http錯誤消息,當他嘗試刷新頁面時,平衡器將用戶重定向到正在工作的tomcat,該tomcat將再次開始處理請求。

    這是否正確,並且當處理請求的服務器失敗時,無法避免用戶收到錯誤消息?

  • 回答

    0

    該行爲取決於如何配置負載均衡器,從tomcat服務器獲取的錯誤以及應用程序的行爲。

    負載平衡器會定期(每隔幾秒)健康檢查它正在監視的服務器;因此單個服務器完全有可能在用戶請求之間崩潰並被負載平衡器注意到。然後該服務器被從組中取出,並且當用戶下次刷新時,他們被引導到其餘的服務器之一,而不知道中間出現了什麼問題。

    但這取決於您的應用程序是無狀態的。如果單個服務器上存儲了任何狀態(這是使用粘滯會話隱含的),那麼當用戶重定向到另一個服務器時,他們可能會遇到會話超時或其他錯誤,必須重新登錄並重新啓動。因此,第1步避免用戶出錯是爲了使應用程序無狀態或以某種方式有效地共享狀態。

    這也是值得考慮的應用程序如何失敗,如果負載平衡器將檢測到它。通常,負載平衡器配置爲進行第4層或第7層健康檢查。

    第4層檢查網絡服務器是否在給定端口(例如端口80)上偵聽。只要它響應服務器保存在組中。這對於服務器上/下類型的監控來說很好,但是您可能會遇到應用程序出現錯誤或凍結的情況,但Web服務器在端口80上響應,並且用戶仍在被引導到該服務器。

    第7層檢查它配置爲監視的網頁上的給定內容。這更像是「真實世界」監控,因爲它正在查看用戶所擁有的相同類型的內容,並且會將服務器從應用程序級別問題中移出組。

    +0

    好的一切都很清楚,您的回答我的疑問仍然存在。假設我們有一個負載平衡器在第7層工作,並對後端服務器設置進行了適當的健康檢查。後端服務器正在工作,並將請求路由到後端1.現在,後端服務器開始處理請求,並在請求發生時發生請求並且服務器崩潰。在這種情況下,我認爲用戶會得到錯誤信息,並且沒有辦法避免這種情況。我對麼? – user1522106

    +0

    如果在處理請求時發生崩潰,則會出現該請求的錯誤。根據應用程序的配置方式,接下來會發生什麼變化。如果無國籍,那麼他們刷新,他們去優秀的服務器,並繼續。如果有狀態,那麼他們的會話數據就會丟失,他們可能需要重新登錄等。 –