本附錄描述您在 Solaris 10 區域內安裝及配置 Java ES 元件時會發生的問題,並就因應這些問題提供了一些建議的做法。此附錄包含下列各節:
區域是 Solaris 10 作業系統的一種應用程式與資源管理功能。此功能可讓作業系統以獨立且安全的虛擬作業系統環境 (區域) 形式呈現給應用程式。這些區域憑著某種程度的集中化資源管理提供作業系統獨立性優點。因此,透過在不同的區域內安裝和執行應用程式,便可將應用程式彼此區隔開來,同時還可以集中分配和管理特定的作業系統資源。
從支援多個區域的作業系統來看,作業系統資源包括諸如程序管理、記憶體、網路配置、檔案系統、套裝軟體登錄、使用者帳號、共用程式庫等資源,在某些情況下也包括已安裝的應用程式。
多區域環境由一個全域區域 (預設作業系統) 和一個或多個非全域區域組成。全域區域包含可由全域 (區域) 管理員在多個非全域區域之間分配的資源。非全域區域提供下列功能:
安全性。藉由在非全域區域內執行分散式服務來侷限發生安全性違規時可能受到的損害。在一個區域內成功利用軟體安全性漏洞的入侵者,其活動範圍僅被限制在該區域內。在非全域區域內享有的權限為在全域區域內所享有權限的子集。
執行階段隔離。非全域區域允許在同一台電腦上部署多個應用程式,即使當這些應用程式需有不同的安全性層級、需對全域資源進行獨佔存取或是需要進行個別配置時,亦是如此。例如,可使用與每一個非全域區域相關的不同 IP 位址將多個在不同區域中執行的應用程式連結至同一個網路連接埠。這些應用程式不能監視或截取彼此的網路通訊、檔案系統資料或程序作業。
管理性隔離。虛擬化的作業系統環境允許對每一個非全域區域分開進行管理。區域管理員 (相對於全域管理員) 在非全域區域內所採取的動作 (如建立使用者帳號、安裝和配置軟體,以及管理程序) 不會影響其他區域。
非全域區域有兩種類型:整體根區域 (whole root zone) 和稀疏根區域 (sparse root zone):
整體根區域。包含全域區域上現有檔案系統的讀/寫副本。建立整體根區域後,便可在該整體根區域中使用全域區域上安裝的所有套裝軟體:系統會建立套裝軟體資料庫,並將所有檔案複製到整體根區域,以便以專屬和獨立的方式使用該區域。
稀疏根區域。僅包含全域區域上現有檔案系統一部份的讀/寫副本 (稀疏根即因此而得名),而其他檔案系統則是以唯讀方式從全域區域做為環迴虛擬檔案系統而掛載的。建立稀疏根區域後,全域管理員會選取要與稀疏根區域共用的檔案系統 (依預設,/usr、/lib、/sbin 與 /platform 目錄是做為唯讀的檔案系統來共用的)。將會使全域區域上安裝的所有套裝軟體皆可用於稀疏根區域:會建立一個套裝軟體資料庫並與該區域共用所掛載檔案系統中的所有檔案。
在使用整體根非全域區域還是稀疏根非全域區域之間做出選擇時,需在資源效率與管理控制之間進行權衡。整體根區域可讓您以犧牲記憶體和其他資源為代價來最大程度地提升管理控制 (獨立性與隔離),而稀疏根區域則是以犧牲管理獨立性為代價來使可執行檔及共用程式庫的有效共用最佳化 (同時大大減少所佔用的磁碟空間)。目前未對稀疏根區域相較於整體根區域的效能優勢進行衡量;這很可能要視具體軟體而定。
在全域區域內安裝的套裝軟體 (依預設) 對所有非全域區域均可用:此程序即稱為套裝軟體傳遞。(若要進行傳遞,新建立的非全域區域必須完全啟動,亦即處於執行狀態。)傳遞可使全域區域內安裝的套裝軟體具有本機 (非全域) 可視性及可用性。傳遞允許全域管理員集中執行應用程式套裝軟體生命週期管理 (安裝、升級、解除安裝),而應用程式配置和執行階段管理則由 (非全域) 區域管理員執行。
對於整體根區域,傳遞是透過將所安裝的檔案從全域區域自動複製到整體根區域以及自動同步登錄資訊來完成的。對於稀疏根區域,傳遞則是透過全域區域與稀疏根區域之間共用的唯讀檔案系統以及自動同步登錄資訊來完成的。
套裝軟體到非全域區域的傳遞是使用內部套裝軟體屬性在套裝軟體層級進行控制的。對於這些屬性的某些值 (起碼是預設值),可在安裝時使用 pkgadd —G 選項來停用傳遞,該選項會覆寫這些屬性值。安裝後便無法修改套裝軟體的傳遞運作方式,此時只能透過解除安裝爾後重新安裝套裝軟體來進行修改。舉例來說,修補程式無法變更套裝軟體的傳遞運作方式;事實上,必須依照修補程式所要升級的套裝軟體的傳遞運作方式來套用修補程式。
向在不同區域中執行的應用程式所提供的隔離類似於藉由在不同電腦的作業系統中執行應用程式所提供的隔離。因此,無須為了隔離和保護 Java ES 元件而在不同的電腦上安裝、配置和執行這些元件,而是可以在同一台電腦內的不同區域中安裝、配置或執行這些元件。
藉由這樣的 Java ES 元件整併亦可更有效地利用資源。在多台專屬的、未充分利用的電腦上執行的 Java ES 元件可改在單一電腦的不同非全域區域中執行。全域管理員可視在不同區域中執行之元件的資源需求,在這些區域間動態地分配資源。(請注意,與目前對不同元件的資源需求通常所具備的知識和了解相比,需要對此有更多的知識和了解才有可能達成此目的。)
多區域環境亦有助於達成其他目標:
版本劃分。不同版本的 Java ES 元件平行集可在不同的區域中執行。如此便可在一段時間過後從一個 Java ES 版本遷移至另一版本。例如,一個非全域區域中的 Java ES 發行版本 4 元件可與另一個非全域區域中的 Java ES 發行版本 5 元件平行執行。為了達成這種版本劃分,將生命週期管理 (以及配置和執行階段管理) 交由區域管理員來執行。
集中式生命週期管理。儘管因 Java ES 的限制而對此不完全支援,但利用區域將有可能集中進行 Java ES 元件的生命週期管理。可在全域區域中安裝、升級和解除安裝元件,但可在多個非全域區域中配置和執行元件,以提供執行階段隔離、安全性、延展性及其他所需的功能。當有多個元件實例在不同區域中執行,或是您想要確保此類實例同步為相同的發行版本時,集中進行生命週期管理很有助益。
例如,只要在全域區域中安裝一次 Application Server,便能夠在不同的非全域區域中執行多個實例。各種 Application Server 實例均可能支援 Access Manager、Portal Server 或其他 Java ES 元件 (這些元件可以是不同非全域區域中的相同或不同元件)。不同區域中的不同開發團隊也可使用不同的 Application Server 實例。
為了達成此目標,生命週期管理由全域管理員執行,而配置和執行階段管理則交由相應的區域管理員負責。這種方法需要在執行生命週期管理作業 (如升級) 時進行廣泛的協調。
組織獨立性。不同的組織可維護單獨的 Java ES 元件部署或單獨的 Java ES 元件執行階段實例,它們全都共存於同一台電腦上並在其上執行。例如,不同的開發人員小組可使用各自不同的 Java ES 元件實例,不同的組織也可使用不同的 Java ES 部署來進行測試、生產前分階段建置或生產。視具體目標,可採用多種方法達成組織獨立性:在集中進行 Java ES 生命週期管理的同時將配置及執行階段管理交由區域管理員負責, 或是將所有管理功能 (生命週期、配置和執行階段) 都交由區域管理員負責。
您在多區域環境中使用 Java ES 所能達成的不同目標及其隱含的使用方案,需要在整個多區域環境中採取不同的策略來部署和管理 Java ES 元件。一些目標利用不同區域的隔離來獨立管理不同的 Java ES 元件及其執行階段實例,而其他目標則利用全域區域的傳遞功能來簡化 Java ES 元件的生命週期管理。
在探討過由 Java ES 軟體的固有特性所加諸的一些多區域環境限制後,我們將會再回頭說明用於在多區域環境中使用 Java ES 的安裝及管理策略。
如「Sun Java Enterprise System 5 技術摘要」中所述,Java ES 元件分為多種不同的類型。因此,系統服務元件提供主要的 Java ES 基礎架構服務,而服務品質元件用於增強這些系統服務。這兩種類型的 Java ES 元件在此一併稱為產品元件,即可以在 Java ES 安裝程式內選取的元件。
每個產品元件均依賴於一個或多個稱為 Java ES 共用元件的本機共用程式庫。依所安裝的產品元件而定,共用元件會在產品元件安裝期間由 Java ES 安裝程式自動進行安裝。它們並非是在部署 Java ES 產品元件期間個別選取、安裝或配置的。
在為何對 Java ES 使用區域?中重點探討了 Java ES 產品元件對區域的使用:可在 Java ES 安裝程式中明確選取並在各種區域中安裝和配置這些元件,以達成所希望的部署架構和運作功能。不過,產品元件所依賴的共用元件會對 Java ES 在多區域環境中的部署方式設下一些限制。Java ES 共用元件和區域涉及到兩個問題:
測試和支援大量 (約 30 個) 共用元件很困難而且在 Java ES 共用元件與 Java ES 產品元件之間有著複雜的互動,因而必須將單一作業系統實例內的所有共用元件同步為相同的 Java ES 版本。換言之,非區域環境中或是 Solaris 10 環境內任何單一區域中安裝的所有 Java ES 共用元件都必須具有相同的版本。這項需求會對如何在多區域環境中使用 Java ES 設下某些限制。
此同步需求具有下列蘊義:
不同版本的 Java ES 共用元件只能位於不同的區域。例如,您可以將 Java ES 發行版本 4 共用元件安裝在一個區域中,而將 Java ES 發行版本 5 共用元件安裝在另一個區域中,但是您不能將它們合併在同一個區域中。
如果升級了某區域中的任何共用元件,或是引入了任何較高版本的新共用元件,則該區域中的所有共用元件也都必須同時進行升級。(共用元件必須具有向後相容性,因此發行版本 4 產品元件與發行版本 5 共用元件搭配使用毫無問題。)例如,假定某個發行版本 5 產品元件安裝在一個或多個發行版本 4 產品元件所在的區域中。由於該發行版本 5 產品元件需要一定數量的發行版本 5 共用元件,因此同步需求便意味著必須在安裝該發行版本 5 產品元件的同時將所有位於該區域中的發行版本 4 共用元件都升級至發行版本 5。即使要安裝的發行版本 5 產品元件所需的不同共用元件來自區域中已安裝的共用元件,亦是如此。
在將共用元件安裝在全域區域中並從中傳遞出去時 (請參閱Java ES 傳遞策略),必須特別注意保持所有區域中共用元件的同步。否則,非全域區域中較早版本的共用元件便可能會和從全域區域傳遞過來的發行版本 5 共用元件混雜在一起。(特別注意通常意味著共用元件生命週期管理僅會在全域區域中進行。如需更多資訊,請參閱表 A–2 與共用元件特例。)
共用元件同步需求會對 Java ES 安裝程式在多區域環境中所限執行的動作加諸限制 (如需更多資訊,請參閱Java ES 安裝程式中的區域支援),而且還會影響 Java ES 產品元件在多區域環境中的安裝和升級程序。
對 Java ES 在多區域環境中的使用有影響的另一個問題是,由於稀疏根區域中的檔案系統是唯讀的,故而無法在稀疏根區域中安裝大量的共用元件。因此,基底目錄為 /usr (依預設由全域區域共用的目錄) 的共用元件必須安裝在全域區域中才能在稀疏根區域中使用。
無法在稀疏根區域中安裝多個 Java ES 共用元件意味著,若要將與這類共用元件有相依性的產品元件成功地安裝至稀疏根區域中,必須先將共用元件安裝在全域區域中,然後再將其傳遞至非全域區域。
為何對 Java ES 使用區域?中針對在多區域環境中使用 Java ES 所探討的某些目標及其蘊含的使用方案,利用了全域區域的傳遞功能來簡化 Java ES 產品元件的生命週期管理。舉例來說,這類使用方案要求由全域管理員在全域區域中執行 Java ES 產品元件的生命週期管理,而這些元件的配置和執行階段管理則由區域管理員在非全域區域中執行。
換言之,產品元件將在全域區域中進行安裝和升級,但實例卻是在非全域區域中配置和執行的。此使用方案會將集中式生命週期管理的優點與非全域區域所提供的隔離及安全性結合在一起。
不過,此方案仰賴於能否將每個產品元件均安裝在全域區域中而在非全域區域中進行配置和執行。這樣的劃分取決於如何達成每個產品元件的配置、在何處儲存配置和動態應用程式資料、如何藉由執行二進位檔案來尋找配置資料,以及如何執行升級。例如,劃分可能取決於安裝或升級前後的程序檔所執行的動作:它們是啟動或停止了元件實例、設定了至配置資料的連結,還是執行了使生命週期管理與配置管理的區別變得模糊不清的其他作業。
這樣的劃分亦可能取決於配置是在整體根區域中還是在稀疏根區域中執行的。舉例來說,如果產品元件的配置程序檔寫入至稀疏根區域中的唯讀檔案系統 (例如 /usr),或是與稀疏根區域共用非預設檔案系統 (如 /opt),則元件的配置便會失敗。
幾乎所有 Java ES 產品元件都安裝在 /opt 下,依預設,它在稀疏根區域中是可寫入的。如需更多資訊,請參閱「適用於 UNIX 的 Sun Java Enterprise System 5 安裝參照」。
目前,在全域區域與非全域區之間,尚未建立使大約 20 個 Java ES 產品元件中的每一個均支援劃分生命週期管理和配置/執行階段管理的功能。各種產品元件採用了不同的配置和升級方法。若是這種情況,則目前不支援 Java ES 產品元件 (Message Queue 除外) 的傳遞。如需更多資訊,請參閱Java ES 傳遞策略。
根據為何對 Java ES 使用區域?中所探討的使用方案,以及Java ES 元件的區域限制中所探討的 Java ES 元件需求與限制,Java ES 安裝程式為安裝 (與升級) Java ES 產品元件以及同步共用元件提供了合格的區域支援。已在安裝程式中實作了多個策略來幫助防止有問題的安裝及升級方案。
根據第 3 節中所探討的限制,Java ES 安裝程式實作了兩項 Java ES 傳遞策略:
在全域區域中安裝產品元件時,依預設,它們被設定為不傳遞至非全域區域中 (Message Queue 例外)。因此,非全域區域在其登錄中看不到這些元件,也沒有對所安裝元件的存取權限。
在全域區域中安裝共用元件時 (例如,做為產品元件安裝的一部份),會將其設定為傳遞至非全域區域中。因此,非全域區域會在其登錄中看到它們,並且具有對所安裝共用元件的存取權限。如Java ES 共用元件與區域中所述,此策略有助於履行共用元件版本在任何區域內均應同步的需求。
Java ES 安裝程式可以安裝產品元件,以及支援每個產品元件所需的共用元件。在安裝所選產品元件之前,安裝程式會檢查是否有目前和先前版本的共用元件存在。如果安裝程式偵測到所選元件所需的共用元件為先前版本或是缺少,安裝程式將會升級目前安裝的所有共用元件,並安裝所選元件所需的任何缺少的共用元件。此運作方式符合共用元件的同步的需求,適用於非區域作業系統、全域區域以及所有的非全域區域。
不過,此運作方式有兩個例外情況:
在稀疏根區域中,某些共用元件無法進行安裝或升級 (請參閱共用元件與稀疏根區域),且安裝會暫停,直到已在全域區域中安裝或升級了這些共用元件之時才會繼續。安裝程式會提供下列訊息:[無法在稀疏根區域中安裝或升級您選取之元件所需的下列共用元件。請先在全域區域中安裝或升級這些共用元件再繼續。使用 [所有共用元件] 選項。] 如需更多資訊,請參閱同步所有共用元件。
在全域區域中,如果存在非全域區域,則安裝程式不會升級目前安裝的所有共用元件以及安裝所選元件所需的任何缺少的共用元件,而是會同步所有的 Java ES 共用元件,不論是否有任何特定產品元件需要這些共用元件。如此便可將所有共用元件都傳遞至非全域區域,從而確保非全域區域中不會出現共用元件版本相互混雜的情形。
在 Java ES 發行版本 5 中實作了一個新的功能,用以在少數特殊情況下升級產品元件:Application Server、Message Queue、HADB 以及 Java DB。當 Java ES 安裝程式偵測到這些產品元件先前安裝的發行版本時,它會在 [元件選取] 頁面中將這些元件標示為可升級。如果選取了上述四個產品元件中的任何一個,安裝程式將會使用類似於全新安裝所用的邏輯來升級這些元件。
特別地,在升級所選產品元件之前,安裝程式會檢查是否有目前和先前版本的共用元件存在。如果安裝程式偵測到所選元件所需的共用元件為先前版本或是缺少,安裝程式將會升級目前安裝的所有共用元件,並安裝所選元件所需的任何缺少的共用元件。此運作方式符合同步所有共用元件中所述的需求,適用於非區域作業系統、全域區域以及所有的非全域區域。
不過,此運作方式有三個例外情況:
在稀疏根區域中,某些共用元件無法進行安裝或升級,且升級作業會暫停,直到已在全域區域中安裝或升級了這些共用元件之時才會繼續。(如需更多資訊,請參閱共用元件與稀疏根區域) 安裝程式會提供下列訊息:[無法在稀疏根區域中安裝或升級您選取之元件所需的下列共用元件。請先在全域區域中安裝或升級這些共用元件再繼續。使用 [所有共用元件] 選項。] (如需更多資訊,請參閱同步所有共用元件。)
Application Server 和 Message Queue 都是 Solaris 作業系統隨附的。這兩個版本均無法在稀疏根區域中直接升級。如需與這兩個隨附元件有關的詳細資訊,請參閱產品元件特例。
在全域區域中,如果存在非全域區域,則安裝程式不會升級目前安裝的所有共用元件以及安裝選取安裝的元件所需的任何缺少的共用元件,而是會同步所有的 Java ES 共用元件,不論當時是否有任何選取安裝的元件需要這些共用元件。如此便可將所有元件都傳遞至非全域區域,從而確保非全域區域中不會出現共用元件版本相互混雜的情形。
存在若干特例或例外,它們可能會妨礙產品元件在非全域區域中的安裝或升級。在特例或例外中對這些情況進行了說明。
為了因應必須同步所有共用元件的情況,提供了一個共用元件同步選項。當選取了 [所有共用元件] 選項時,安裝程式將會升級目前安裝的所有共用元件,並安裝任何缺少的共用元件,不論是否有任何特定產品元件需要這些元件。此選項會套用至全域區域及整體根區域,但不會套用至稀疏根區域。
在下列兩個以區域為基礎的方案中,需要使用 [所有共用元件] 選項:
手動升級產品元件。當所要升級的產品元件無法使用 Java ES 安裝程式進行升級時,需要使用 [所有共用元件] 選項來執行所需的共用元件安裝與升級。
稀疏根區域中的安裝或升級。某些共用元件無法安裝在預設的稀疏根區域中。(如需詳細資訊,請參閱產品元件的安裝與產品元件的升級。)因此,在稀疏根區域中執行安裝程式時,視所牽涉的共用元件而定,可能會要求您先在全域區域中同步共用元件。可在全域區域中使用 [所有共用元件] 選項來執行在此情況下所需的共用元件安裝與升級。
下表摘要說明了上述各種運作方式,其中顯示了 Java ES 安裝程式是如何根據區域環境以及在元件選取頁面中已選取的元件來處理共用元件的。
表 A–1 與共用元件有關的安裝程式運作方式
區域環境 |
所選的產品元件 |
所選的所有共用元件 |
---|---|---|
非區域作業系統 |
升級目前安裝的所有共用元件 安裝所選產品元件所需的任何缺少的共用元件 |
升級目前安裝的所有共用元件 安裝任何缺少的共用元件,不論是否有任何特定產品元件需要這些元件 |
全域區域:無非全域區域 |
升級目前安裝的所有共用元件 安裝所選產品元件所需的任何缺少的共用元件 |
升級目前安裝的所有共用元件 安裝任何缺少的共用元件,不論是否有任何特定產品元件需要這些元件 |
全域區域:存在非全域區域 |
升級目前安裝的所有共用元件 安裝任何缺少的共用元件,不論是否有任何特定產品元件需要這些元件 |
升級目前安裝的所有共用元件並安裝任何缺少的共用元件,不論是否有任何特定產品元件需要這些元件 |
整體根區域 |
升級目前安裝的所有共用元件 安裝所選產品元件所需的任何缺少的共用元件 |
升級目前安裝的所有共用元件 安裝任何缺少的共用元件,不論是否有任何特定產品元件需要這些元件 |
稀疏根區域 |
無法在唯讀目錄中升級或安裝某些共用元件。如果安裝程式遇到這類共用元件,它會停下來指示使用者在全域區域中管理共用元件。 |
無法在唯讀目錄中升級或安裝某些共用元件。因此,安裝程式會停下來指示使用者在全域區域中管理共用元件。 |
儘管在多區域環境中部署 Java ES 的一般目標是為了提供產品元件執行階段隔離和有效地利用資源,但對於可以使用多區域環境的情況,還有若干更為具體的目標。在為何對 Java ES 使用區域?中對此進行了探討。多區域環境中的 Java ES 安裝和管理策略在很大程度上取決於您想要達成其中的哪些目標。
表 A–2 對五種方案及其所對應的安裝和管理策略以及意欲達成的目標進行了比較。儘管在某些情況下有可能混用這些方案,但可能會產生問題並造成管理混亂。因此,一般而言,Java ES 發行版本 5 不支援在部署中混用這些方案。
此外,方案 1 和方案 5 都有問題,因此 Java ES 發行版本 5 目前不支援這兩種方案 (不過就方案 5 而言,可以針對特定產品元件進行適應性調整)。
表 A–2 Java ES 的區域安裝及管理策略
方案 (安裝策略) |
管理策略 |
目標 (請參閱為何對 Java ES 使用區域?) |
註釋 |
---|---|---|---|
1:在啟用了傳遞的全域區域中安裝產品元件和共用元件。非全域區域中未安裝任何元件。* |
元件生命週期管理:全域管理員 配置與執行階段管理區域管理員 |
集中式產品元件生命週期管理 產品元件配置與執行階段管理的組織獨立性 |
有問題:對於 Java ES 產品元件 (Message Queue 除外) 尚不支援。要求產品元件支援在全域區域中進行安裝但在非全域區域中進行配置和執行階段管理。 |
2:在全域區域中安裝共用元件,在整體根區域中安裝產品元件。 |
共用元件生命週期管理:全域管理員 產品元件生命週期管理:區域管理員 配置與執行階段管理區域管理員 |
集中式共用元件生命週期管理 產品元件生命週期、配置與執行階段管理的組織獨立性 |
當所有元件的 Java ES 版本均相同或是在所有整體根區域中升級所有產品元件時大部份都適用。 |
3:在全域區域中安裝共用元件,在稀疏根區域中安裝產品元件** |
與第 2 方案相同 |
共用元件生命週期的集中式管理。 產品元件生命週期、配置與執行階段管理的組織獨立性 比第 2 案例提高了資源效率 (請參閱整體根區域與稀疏根區域) |
在稀疏根區域中安裝產品元件時建議採用此方案。(有些共用元件無法安裝在稀疏根區域中,因而必須安裝在全域區域中。) |
4:在整體根區域中安裝產品元件和共用元件 |
元件生命週期管理:區域管理員 配置和執行階段管理:區域管理員 |
版本劃分 |
不應在全域區域中安裝任何共用元件或產品元件。建議對整體根區域採用的方案。 |
5:在稀疏根區域中安裝產品元件和共用元件。 |
與第 4 方案相同 |
產品元件生命週期、配置與執行階段管理的組織獨立性 比第 4 方案提高了資源效率 (請參閱整體根區域與稀疏根區域) |
有問題。一般無法實作,因為無法在稀疏根區域中安裝多個共用元件。 |
* 方案 1 不區分整體根區域和稀疏根區域環境;它假定非全域區域中未安裝任何產品元件。方案 2-5 涵蓋了產品元件在非全域區域中的安裝。
** 方案 3 假定尚未在稀疏根區域中使 /opt 成為唯讀目錄。假如 /opt 是唯讀目錄,便無法在稀疏根區域中安裝大部份的 Java ES 產品元件,而須如方案 1 那樣改為安裝在全域區域中。
結合表 A–2,以下是若干建議採行的措施:
視為何對 Java ES 使用區域?中您想要達成的目標,事先規劃您的 Java ES 區域部署策略。如表 A–2 的不同方案所示,不同的目標需採用不同的安裝和管理策略。
避免混用方案。特別是:
要使您的 Java ES 區域部署及管理策略盡可能簡單。勿在同一台電腦上混用 Java ES 元件的整體根和稀疏根部署。(如在方案 3 中支援稀疏根區域部署所需的程序和措施可能會與如在方案 4 中的整體根區域部署相牴觸。)
勿在全域區域和非全域區域二者中安裝相同的 Java ES 產品元件,即使元件版本不同亦如此。(如在方案 1 中升級全域區域安裝所需的程序可能會破壞如在方案 4 中的非全域區域安裝。)
當整體根區域中已安裝了發行版本 4 (或更早版本) Java ES 元件時,請勿在全域區域中安裝 Java ES 發行版本 5 元件 (產品元件和共用元件均不可),並且勿在全域區域中將 Java ES 元件升級至發行版本 5。換言之,當整體根區域中已有預先存在的 Java ES 安裝時,方案 2 不受支援。(在全域區域中安裝或升級可能會導致整體根區域中的發行版本 4 和發行版本 5 檔案相互混雜。)
建議採行的措施:
如果您要在不同的區域中執行不同的 Java ES 產品元件,請在非全域區域中安裝產品元件 (方案 2、3、4、5)。
如果您要在不同的區域中執行不同的 Java ES 產品元件,但又想要集中管理共用元件生命週期,請先在全域區域中同步共用元件,然後在非全域區域中安裝產品元件 (方案 2、3)。(每當在稀疏根區域中安裝產品元件時,均建議採行此措施。)
如果您要達成 Java ES 產品元件的版本劃分,或是出於其他原因想要隔離 Java ES 產品元件的部署 (方案 4),則需在整體根區域中安裝和配置所有的 Java ES 元件。勿在全域區域中安裝任何 Java ES 元件。
建議採行的升級措施:
如果您要將所有已安裝的發行版本 4 產品元件都升級至發行版本 5,請先在全域區域中同步所有的 Java ES 共用元件,然後在已安裝有所需產品元件的區域中執行這些元件的升級。(發行版本 5 共用元件具有向後相容性。)
如果您已在某個非區域環境中安裝了發行版本 4 或發行版本 5 產品元件,而您希望向該環境中增加非全域區域,並在新的非全域區域中安裝產品元件,請務必按照上面建議採行的措施行事。這可能意味著需在全域區域中解除安裝元件,然後在非全域區域中重新安裝這些元件。
表 A–2 中的方案說明和上述建議採行的措施不包括建議對多區域環境採用的 Java ES 部署架構。這種架構在針對多電腦網路環境而建立的部署架構基礎上進行了改造。換言之,多區域環境的可用性並不會改變用於達成 Java ES 部署系統的高效能、高可用性、延展性、安全性和可維修性的基本部署設計方法。多區域環境允許您執行的動作只是將這種部署架構整合至更少的電腦中。
不過,如前面各節所探討的那樣,如何使 Java ES 部署架構與多區域環境相適應的細節在很高程度上取決於您想要採取的管理策略。部署架構還取決於您為了達成高可用性而採取的策略。
請注意,表 A–2 和上面建議採行的措施不包括建議在實作所述方案時採用的程序。在某些情況下,Java ES 元件的安裝順序以及非本機區域的建立順序可能很重要。
Solaris 10 隨附有一些 Java ES 共用元件和一些 Java ES 產品元件,有許多特例大多都是因此而生的。由於這種隨附情形之故,這些 Java ES 元件存在於全域區域中,因而也存在於從全域區域建立而來的任何非全域區域中。
Solaris 10 隨附有 Message Queue,因此會在建立非全域區域時自動傳遞該元件 (除非您已先行從全域區域中移除了 Message Queue)。不能將 Message Queue 安裝在稀疏根區域中。當 Message Queue 由 Java ES 安裝程式在全域區域中進行安裝或升級時,與其他產品元件不同,依預設會將其傳遞至非全域區域。
Solaris 10 隨附有 Application Server,因此會在建立非全域區域時自動傳遞該元件 (除非您已先行從全域區域中移除了 Application Server)。以這種方式傳遞後,Java ES 安裝程式便無法在稀疏根區域中升級安裝在 /usr 中之隨附的 Application Server (依預設,/usr 是唯讀的)。為了因應這個問題,在將發行版本 5 Application Server 安裝在稀疏根區域中之前,必須先手動從全域區域中移除隨附的 Application Server。
Sun Cluster 只能安裝在全域區域中。Sun Cluster 在非全域區域中不受支援。
Java ES 安裝程式無法移除 Solaris 10 (Update 1 和 Update 2) 隨附的 SJWC 套裝軟體。這些較舊的 SJWC 套裝軟體已將 SUNW_PKG_ALLZONES 設定為 True,意即該套裝軟體在所有區域中均必須是相同的,而且只能由全域管理員進行管理。因此,必須在全域區域中手動移除這些套裝軟體,才可用正確的套裝軟體替代它們。
如果 Java ES 安裝程式試圖將所選元件安裝在非全域區域中,且偵測到 SJWC 需要進行升級,則安裝程式便會阻塞。在 Solaris 10 Update 1 及 2 上安裝時會發生這種情況。
為了解決這個問題而開發了一個特殊的程序檔,該程序檔會從全域區域中移除舊的 SJWC 套裝軟體,並以具有正確區域傳遞屬性設定的 SJWC 2.2.6 替代它們。結果會將 SJWC 2 2.6 傳遞至所有非全域區域。
Common Agent Container。僅當安裝了 Sun Cluster、Sun Cluster GE 或 Sun Cluster Agent 時,才會安裝版本 1.1。當選取了 [同步所有共用元件] 時不會安裝該版本。在這種情況下,只會安裝版本 2.0。
Sun Explorer Data Collector。僅當安裝了 Sun Cluster、Sun Cluster GE 或 Sun Cluster Agent 時,才會安裝此共用元件。當選取了 [所有共用元件] 時不會安裝該版本。
提供下列範例是為了大略說明 Java ES 區域支援中所涉及的某些複雜性。在本範例中,目標是要在 Solaris 10 稀疏根區域中安裝 Application Server。Solaris 10 隨附有 Application Server (以及 Application Server 所依賴的 Message Queue),因而會在所有非全域區域中安裝該隨附版本,由此就使此項安裝變得複雜化。如需更多資訊,請參閱產品元件特例。
若要將 Application Server 安裝在稀疏根區域中,您必須先移除該隨附版本。(不能簡單地在稀疏根區域中升級該隨附版本,因為它安裝在唯讀目錄中)。若要從稀疏根區域中移除該隨附版本,您必須在全域區域中將其移除。
此外,Message Queue 安裝在全域區域中,這就表示背離了表 A–2 中的方案 3,在該方案中,只有共用元件 (並非產品元件) 才會安裝在全域區域中。然而,由於 Message Queue 安裝在唯獨目錄中,因此無法將其安裝在稀疏根區域中,這樣就必須在全域區域中對其進行安裝和升級。
程序如下:
驗證 Solaris 10 正在您的系統上執行。
本範例假定全域區域中已明確安裝了不含 Java ES 元件的純淨版本的 Solaris 10。
建立一個稀疏根區域 (配置、安裝並啟動它)。
此區域將納入全域區域中已安裝的所有 Java ES 元件,即 Solaris 10 隨附的 Message Queue 和 Application Server 版本。
從全域區域中移除隨附的 Application Server 版本。
此作業必須藉由手動移除 Application Server 套裝軟體來執行:
pkgrm SUNWascmnse SUNWaslb SUNWasut ...
在此可使用下列指令取得完整的套裝軟體集:
pkginfo -I|grep -I application server
結果應包括如下的套裝軟體:
SUNWascmnse、SUNWaslb、SUNWasut、SUNWasac、SUNWasdem、SUNWasman、SUNWaswbcr、SUNWasacee、SUNWashdm、SUNWasmanee、SUNWascml、SUNWasJdbcDrivers、SUNWasu、SUNWascmn、SUNWasjdoc、SUNWasuee
而且也可能包括本土化套裝軟體:
SUNWLocaleasacee、 SUNWLocaleascmnse、SUNWLocaleasu、 SUNWLocaleasuee
從全域區域中移除 Application Server 的狀態會傳遞至步驟 2 中建立的稀疏根區域。(此步驟和步驟 2 可按相反順序執行。)
在全域區域中安裝 Java ES 5 共用元件。
在全域區域中執行 Java ES 安裝程式。
從元件選取面板中選取 [所有共用元件]。請勿選取其他任何元件。
完成共用元件的同步。即會在全域區域中同步所有的共用元件,並將其傳遞至所有的非全域區域。
在全域區域中升級 Message Queue。
Solaris 10 隨附的 Message Queue 版本已藉由步驟 2 安裝在稀疏根區域中。若要在稀疏根區域中升級 Message Queue,只需在全域區域中對其進行升級即可;升級狀態將會傳遞至稀疏根區域。(Message Queue 是唯一一個不能安裝在稀疏根區域中的產品元件,但安裝在全域區域中後,將會傳遞至非全域區域。)
在全域區域中執行 Java ES 安裝程式。
在元件選取面板中選取 Message Queue。請勿選取其他任何元件。
完成 Message Queue 的升級。
在稀疏根區域中安裝 Application Server。
在稀疏根區域中執行 Java ES 安裝程式。
在元件選取面板中選取 Application Server。請勿選取其他任何元件進行升級。若已選取了 Message Queue,請取消選取。
完成 Application Server 的安裝。