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