第7章 性能和可靠性模式 Server Clustering(服務器羣集)

上下文

您正在設計要部署應用程序的基礎結構層。運行要求包括無法滿足的可用性或性能能力,因爲基礎結構中存在性能瓶頸或故障單點。

影響因素

設計基礎結構時,請考慮下列影響因素:

  • 用戶希望在使用應用程序時這些應用程序可以使用並且能夠作出響應。

  • 在生產環境中(無論是支持重要客戶端/服務器應用程序的數據庫,還是電子商務網站)的連續運行時間日益成爲普遍的業務要求。

  • 應用程序故障可能會造成嚴重的經濟損失。例如,由於基礎結構中一個服務器出現故障,某大銷售量在線商店每小時 25,000 美元的收入即會降低。如果故障持續數小時,其資金影響則可能相當嚴重。

  • " 應用程序基礎結構中的所有系統都需要維護。各個系統必須既能適應硬件升級,又能適應軟件升級,而不會導致應用程序停止運行。例如,發佈了修補程序,以修復 運行於某服務器(提供了應用程序)的組件的相關安全問題。如果僅有此服務器,則應用程序將停止運行。如果該服務器是一系列服務器之一,則僅該服務器將會停 止運行,而應用程序不會停止運行。

  • " 增加硬件可能會增加解決方案的成本和複雜程度。例如,新硬件或功能更強的硬件需要增加開發和測試,才能使應用程序充分利用功能更強的環境。另外,管理更爲複雜的環境還需要增加維護和培訓成本。

解決方案

對應用程序基礎結構進行相應設計,使服務器對用戶和應用程序表現爲虛擬統一計算資源。實現這種虛擬效果的方法之一是使用服務器羣集。服務器羣集是相互連接的兩個或多個服務器,這些服務器表現爲一個服務器,因而創建了能增強可用性和(或)可伸縮性的虛擬資源。

在某個服務器由於故障或計劃停機而無法使用時,通過確保羣集中其他服務器可以承擔工作負載,羣集服務器可以實現提高可用性的目標(請參閱 Failover Cluster 模式)。此類羣集可避免向訪問該羣集的用戶或應用程序所提供服務的損失,還可透明進行服務器轉移而不爲用戶所知。

還可以使用羣集增強可伸縮性。服務器羣集可以在當前性能級別支持更多用戶,或通過向多個服務器分散工作負載來提高當前數量的用戶的應用程序性能。另外,如前所述(請參閱 Load-Balanced Cluster 模式),可伸縮羣集服務器還有一附帶作用,即多個服務器的額外冗餘性有助於提高系統可用性。

圖 1:羣集基本概念

圖 1 顯示了服務器羣集如何使兩個或多個服務器(服務器 1 到服務器 n)對獨立應用程序表現爲一個虛擬資源。

不對稱羣集

在" 不對稱羣集"中,備用服務器僅是爲了在其他服務器發生故障時接替其工作。此類羣集通常用於爲讀/寫存儲(如數據庫、郵件系統以及文件和打印服務)提供高可 用性和高可伸縮性。如果由於維護需要而出現計劃停機,或因故障導致未計劃停機,羣集中某節點因而無法使用,其他節點則會接替該故障節點的功能。

備用服務器不執行其他有用工作,且其功能不強於主服務器。在將主服務器與多個冗餘子系統配置一起以獲得高可用性和高容錯性時,通常使用功能較差、成本較低的備用服務器。不對稱羣集的一個常見類型是 Failover Cluster(請參閱 Failover Cluster 模式)。

圖 2:不對稱羣集

圖 2 顯示了不對稱羣集如何嚮應用程序顯示虛擬資源。正常情況下,主服務器處理所有請求。發生故障時,備用服務器將接替處理所有請求。

對稱羣集

在" 對稱羣集"中,羣集中每個服務器都執行有用工作。通常情況下,每個服務器都是一組特定應用程序的主服務器。如果一個服務器出現故障,其餘服務器則會繼續處 理其分配應用程序組,同時處理髮生故障的服務器上的應用程序。因爲更爲充分利用了羣集資源,對稱羣集的成本效率更高;但在發生故障時,剩餘各服務器的附加 負載可能導致這些服務器也出現故障。

圖 3:對稱羣集

圖 3 顯示了對稱羣集如何嚮應用程序顯示虛擬資源。請求被分散至各個正常運行的服務器,以分散負載並增加可伸縮性。

對稱羣集的一個常見類型是負載平衡羣集(請參閱 Load-Balanced Cluster 模式)。通過向服務器羣集中所有正常運行的服務器分佈請求,負載平衡羣集可以提高 Web 服務器、介質服務器、*** 服務器和只讀存儲等服務的性能、可用性和可伸縮性。

結果上下文

Server Clustering 具有下列優缺點:

優點

  • 更強的可伸縮性。通過 Server Clustering,應用程序可以處理更多負載。

  • 更高的可用性Server Clustering 有助於應用程序避免服務中斷。

  • 更大的靈活性。羣集具有提供虛擬統一計算資源的功能,IT 人員因而在配置基礎結構以支持應用程序性能、可用性和可伸縮性要求的時候有更多選擇。

缺點

  • 增加了基礎結構的複雜性。有些羣集設計會明顯增加解決方案的複雜性,從而可能影響運行和支持要求。例如,羣集可能會增加要管理的服務器、要維護的存儲設備以及要配置和監視的網絡連接。

  • 增加設計和代碼要求。應用程序可能需要特定設計並更改代碼,才能在使用羣集的基礎結構中正常運行。例如,跨越多個服務器管理會話狀態的需要可能會變得更加困難,並且可能需要更改代碼才能適應維護狀態的需要,這樣在發生服務器故障時纔不會丟失會話信息。

不兼容性。現有應用程序或應用程序組件可能不支持羣集技術。例如,用於開發應用程序或組件的技術可能存在這樣的限制:即使更改代碼,也不支持羣集。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章