WebLogic Server 群集由多個 WebLogic Server 服務(wù)器實例組成,這些服務(wù)器實例同時運行并一起工作以提高可縮放性和可靠性。對于客戶端而言,群集是一個 WebLogic Server 實例。構(gòu)成群集的服務(wù)器實例可以在同一臺計算機上運行,也可以位于不同的計算機上。可以通過向現(xiàn)有計算機上的群集中添加更多的服務(wù)器實例來增加群集的容量,也可以向群集中添加計算機以承載遞增的服務(wù)器實例。群集中的每個服務(wù)器實例必須運行同一版本的 WebLogic Server。
群集與域
群集是特定 WebLogic Server 域的一部分。
域是作為單元進(jìn)行管理的一組相關(guān)的 WebLogic Server 資源。一個域包含一個或多個 WebLogic Server 實例,這些實例可以是群集實例、非群集實例,或者是群集與非群集實例的組合。一個域可以包含多個群集。域還包含部署在域中的應(yīng)用程序組件、此域中的這些應(yīng)用程序組件和服務(wù)器實例所需的資源和服務(wù)。應(yīng)用程序和服務(wù)器實例使用的資源和服務(wù)示例包括計算機定義、可選網(wǎng)絡(luò)通道、連接器和啟動類。
可以使用各種條件將 WebLogic Server 實例組織到域中。例如,可以選擇根據(jù)承載的應(yīng)用程序的邏輯分區(qū)、地理方面的考慮或管理的資源的數(shù)目或復(fù)雜性將資源分配到多個域中。
在每個域中,一個 WebLogic Server 實例可充當(dāng)管理服務(wù)器 - 此服務(wù)器實例可配置、管理和監(jiān)視域中所有其他服務(wù)器實例和資源。每個管理服務(wù)器只管理一個域。如果一個域中包含多個群集,則域中的每個群集都具有相同的管理服務(wù)器。
群集中的所有的服務(wù)器實例必須駐留在同一域中;不能將群集“拆分”到多個域中。同樣,不能在域之間共享配置的資源或子系統(tǒng)。例如,如果在一個域中創(chuàng)建了 JDBC 連接緩沖池,則不能將其用于另一個域中的服務(wù)器實例或群集。(而是必須在另一個域中創(chuàng)建類似的連接緩沖池。)
群集的 WebLogic Server 實例除提供故障轉(zhuǎn)移和負(fù)載平衡外,其他行為與非群集的實例相似。配置群集的 WebLogic Server 實例所使用的過程和工具與配置非群集的 WebLogic Server 實例所使用的過程和工具相同。但是,為了獲得群集啟用的負(fù)載平衡和故障轉(zhuǎn)移優(yōu)點,必須符合群集配置的某些準(zhǔn)則。
群集的優(yōu)點
WebLogic Server 群集提供了以下這些優(yōu)點:
可伸縮性
可以動態(tài)增加部署在 WebLogic Server 群集中的應(yīng)用程序的容量以滿足需要。可以將服務(wù)器實例添加到群集中而不會中斷服務(wù) - 應(yīng)用程序?qū)⒗^續(xù)運行而不會影響客戶端和最終用戶。
高可用性
在 WebLogic Server 群集中,當(dāng)服務(wù)器實例失敗時應(yīng)用程序可繼續(xù)進(jìn)行處理。可通過將應(yīng)用程序組件部署到群集中的多個服務(wù)器實例“群集”這些組件 - 這樣,如果在其上運行某個組件的服務(wù)器實例失敗,則將此組件部署到的其他服務(wù)器實例可以繼續(xù)進(jìn)行應(yīng)用程序處理。
群集 WebLogic Server 實例的選擇對于應(yīng)用程序開發(fā)人員和客戶端是透明的。但是,了解啟用群集的技術(shù)基礎(chǔ)結(jié)構(gòu)將有助于編程人員和管理員最大化其應(yīng)用程序的可伸縮性和可用性。
群集的關(guān)鍵功能
本部分采用非技術(shù)術(shù)語定義了啟用可伸縮性和高可用性的關(guān)鍵群集功能。
應(yīng)用程序故障轉(zhuǎn)移
簡單的說,故障轉(zhuǎn)移是當(dāng)應(yīng)用程序組件(在下列部分中通常稱作“對象”)正在處理某個特定作業(yè)時 - 某些處理任務(wù)部分由于任何原因而變得不可用,已失敗對象的副本將結(jié)束此作業(yè)。
對于能夠接管失敗對象的新對象:
必須存在可接管作業(yè)的已失敗對象的副本。
必須存在對于其他對象和管理故障轉(zhuǎn)移的程序可用的信息,從而定義所有對象的位置和操作狀態(tài),以便在完成其作業(yè)之前確定第一個失敗的對象。
必須存在對于其他對象和管理故障轉(zhuǎn)移的程序可用的信息(關(guān)于正在進(jìn)行中的作業(yè)的進(jìn)度),以便接管中斷作業(yè)的對象了解在第一個對象失敗之前完成的作業(yè)量,例如,已更改的數(shù)據(jù)以及過程中已完成的步驟。
WebLogic Server 使用基于標(biāo)準(zhǔn)的通信技術(shù)和工具 - 多播、IP 套接口、以及 Java 命名和目錄接口 (JNDI) 來共享和維護(hù)群集中有關(guān)對象可用性的信息。這些技術(shù)允許 WebLogic Server 確定某個對象在結(jié)束其作業(yè)之前已停止,以及用于完成已中斷作業(yè)的對象副本的位置。
有關(guān)已對作業(yè)所進(jìn)行的操作的信息被稱作狀態(tài)。WebLogic Server 可使用稱為“會話復(fù)制”和“可識別副本的存根控件”的技術(shù)來維護(hù)有關(guān)狀態(tài)方面的信息。如果某個特定對象意外地停止進(jìn)行其作業(yè),復(fù)制技術(shù)將啟用此對象的副本將拾取失敗對象停止的位置,并完成作業(yè)。
WebLogic Server 支持自動或手動將群集服務(wù)器實例從一臺計算機遷移到另一臺計算機。可遷移的受管服務(wù)器被稱作“可遷移服務(wù)器”。本功能適用于要求高可用性的環(huán)境。服務(wù)器遷移功能對于以下方面非常有用
負(fù)載平衡
負(fù)載平衡是在環(huán)境中跨計算資源與網(wǎng)絡(luò)資源平均分發(fā)作業(yè)和關(guān)聯(lián)的通信。對于即將發(fā)生的負(fù)載平衡:
可以群集對象的類型
群集的應(yīng)用程序或應(yīng)用程序組件在群集中的多個 WebLogic Server 實例上可用。如果已群集某個對象,則此對象的故障轉(zhuǎn)移和負(fù)載平衡是可用的。將對象均勻部署到群集中的每個服務(wù)器實例,可以簡化群集管理、維護(hù)和故障排除。
Web 應(yīng)用程序可由不同類型的對象組成,包括企業(yè) Java Bean (EJB),servlet 和 Java Server Pages (JSP)。每種對象類型都具有唯一的一組與控制、調(diào)用以及它如何在應(yīng)用程序內(nèi)起作用相關(guān)的行為。由于此原因,WebLogic Server 用于支持群集的方法,以及用于提供負(fù)載平衡和故障轉(zhuǎn)移的方法,會因不同的類型對象而異。可在 WebLogic Server 部署對下列類型的對象進(jìn)行群集:
Servlet
JSP
EJB
遠(yuǎn)程方法調(diào)用(Remote Method Invocation,簡稱 RMI)對象
Java 消息服務(wù) (JMS) 目標(biāo)
Java 數(shù)據(jù)庫連接 (JDBC) 連接
不同對象類型可以具有某些共同的行為。如果是這樣的話,則這些類似對象類型的群集支持和實現(xiàn)注意事項可能是相同的。在以下部分中,以下對象類型的解釋和說明通常組合為:
Servlet 和 JSP
EJB 和 RMI 對象
下列部分簡述了 WebLogic Server 為不同類型的對象提供的群集、故障轉(zhuǎn)移和負(fù)載平衡支持。
Servlet 和 JSP
WebLogic Server 通過復(fù)制訪問群集 servlet 和 JSP 的客戶端的 HTTP 會話狀態(tài),為 servlet 和 JSP 提供了群集支持。WebLogic Server 可在內(nèi)存、文件系統(tǒng)或數(shù)據(jù)庫中維護(hù) HTTP 會話狀態(tài)。
要啟用 servlet 和 JSP 的自動故障轉(zhuǎn)移,會話狀態(tài)必須持久保存在內(nèi)存中。有關(guān) servlet 和 JSP 的故障轉(zhuǎn)移的工作方式信息,以及相關(guān)要求和編程注意事項。
可使用 WebLogic Server 代理插件或外部負(fù)載平衡硬件在群集中平衡 servlet 和 JSP 的負(fù)載。WebLogic Server 代理插件可執(zhí)行循環(huán)法負(fù)載平衡。外部負(fù)載平衡器通常支持各種會話負(fù)載平衡機制。
EJB 和 RMI 對象
可使用“可識別副本的存根控件”(可在群集中定位對象實例)處理 EJB 和 RMI 對象的負(fù)載平衡和故障轉(zhuǎn)移。為 EJB 和 RMI 對象創(chuàng)建可識別副本的存根控件是對象編譯過程所產(chǎn)生的結(jié)果。會將 EJB 和 RMI 對象均勻部署到群集中的所有服務(wù)器實例。
可使用對象的可識別副本的存根控件完成 EJB 和 RMI 對象的故障轉(zhuǎn)移。當(dāng)客戶端通過可識別副本的存根控件向失敗的服務(wù)做出調(diào)用時,該存根控件可檢測故障并在另一副本上重試此調(diào)用。
WebLogic Server 群集支持多種負(fù)載平衡群集 EJB 和 RMI 對象的算法:round-robin、weight-based、random、round-robin-affinity、weight-based-affinity 和 random-affinity。默認(rèn)情況下,WebLogic Server 群集將使用 round-robin 方法。可使用管理控制臺配置群集以使用其他方法之一。選擇的方法將保留在為群集對象獲取的可識別副本的存根控件中。有關(guān)詳細(xì)信息。
JDBC 連接
WebLogic Server 允許您群集 JDBC 對象(包括數(shù)據(jù)源和多數(shù)據(jù)源),以提高群集承載應(yīng)用程序的可用性。為群集配置的每個 JDBC 對象必須存在于群集中的每個受管服務(wù)器上 - 當(dāng)配置 JDBC 對象時,會將其定位到群集。
數(shù)據(jù)源 - 在群集中,外部客戶端必須通過 JNDI 樹上的 JDBC 數(shù)據(jù)源獲得連接。數(shù)據(jù)源使用 WebLogic Server RMI 驅(qū)動程序來獲取連接。如果承載先前連接的服務(wù)器實例失敗,那么外部客戶端應(yīng)用程序中的 WebLogic 數(shù)據(jù)源的群集識別特性將請求另一個連接。盡管不是嚴(yán)格要求,BEA 還是建議服務(wù)器端的客戶也應(yīng)通過 JNDI 樹中的數(shù)據(jù)源獲得連接。
多數(shù)據(jù)源 - 多數(shù)據(jù)源是一組數(shù)據(jù)源的提取,可提供與此多數(shù)據(jù)源相關(guān)聯(lián)的各數(shù)據(jù)源之間的負(fù)載平衡或故障轉(zhuǎn)移處理。就像數(shù)據(jù)源會綁定到 JNDI 樹一樣,多數(shù)據(jù)源會綁定到 JNDI 樹或本地應(yīng)用程序上下文。就像在 JNDI 樹上查找數(shù)據(jù)源一樣,應(yīng)用程序?qū)⒃?JNDI 樹上查找多數(shù)據(jù)源,然后請求數(shù)據(jù)庫連接。多數(shù)據(jù)源會根據(jù)在多數(shù)據(jù)源配置中選擇的算法(負(fù)載平衡或故障轉(zhuǎn)移)確定要使用哪一個數(shù)據(jù)源來滿足該請求。
使用群集的 JDBC 獲取連接
要確保任何 JDBC 請求可由任何群集成員等同處理,群集中的每個受管服務(wù)器必須具有相似命名/定義的數(shù)據(jù)源或多數(shù)據(jù)源(如果適用)。要達(dá)到此效果,應(yīng)將數(shù)據(jù)源和多數(shù)據(jù)源定位到群集中,以便它們可識別群集,如果將其用于外部客戶端,它們將可連接到任何群集成員。
外部客戶端連接 - 要求數(shù)據(jù)庫連接執(zhí)行 JNDI 查找,并獲取數(shù)據(jù)源的可識別副本的存根控件的外部客戶端。數(shù)據(jù)源存根控件包括承載數(shù)據(jù)源的服務(wù)器實例列表 - 服務(wù)器實例應(yīng)該是群集中的所有受管服務(wù)器。可識別副本的存根控件包括負(fù)載平衡邏輯,用于在主機服務(wù)器實例中分發(fā)負(fù)載。
服務(wù)器端客戶端連接 - 對于服務(wù)器端使用,將由數(shù)據(jù)源或多數(shù)據(jù)源的本地實例處理連接請求。服務(wù)器端數(shù)據(jù)源不會由于其 JDBC 連接而轉(zhuǎn)至其他群集成員。在數(shù)據(jù)庫事務(wù)的持續(xù)時間內(nèi),并且只要應(yīng)用程序代碼保留連接(除非連接關(guān)閉),連接將被固定到本地服務(wù)器實例。
JDBC 連接的故障轉(zhuǎn)移和負(fù)載平衡
群集 JDBC 對象不會啟用連接的故障轉(zhuǎn)移,但在連接失敗時,它將簡化重新連接的過程。在復(fù)制的數(shù)據(jù)庫環(huán)境中,可以群集多數(shù)據(jù)源以支持?jǐn)?shù)據(jù)庫故障轉(zhuǎn)移和連接的負(fù)載平衡(可選)。有關(guān)詳細(xì)信息,請參閱下列主題:
JMS和群集
通過支持在群集范圍內(nèi)透明訪問群集中任何 WebLogic Server 服務(wù)器實例中目標(biāo),WebLogic Java 消息傳遞服務(wù) (JMS) 體系結(jié)構(gòu)可實現(xiàn)多個 JMS 服務(wù)器的群集。盡管 WebLogic Server 支持通過群集分發(fā) JMS 目標(biāo)和連接工廠,但是同一 JMS 主題和隊列仍由群集中的每個 WebLogic Server 實例獨立管理。
JMS 支持負(fù)載平衡。要啟用負(fù)載平衡,必須為 JMS 服務(wù)器配置目標(biāo)。
不可群集類型的對象
以下 API 和外部服務(wù)不可在 WebLogic Server 內(nèi)群集:
在群集的各個 WebLogic Server 實例中仍可使用這些服務(wù)。但是,這些服務(wù)不能使用負(fù)載平衡或故障轉(zhuǎn)移功能。
jwebee
我的個人網(wǎng)站
posted on 2007-06-11 11:39
周行 閱讀(6170)
評論(1) 編輯 收藏 所屬分類:
IT技術(shù) 、
weblogic