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