Sun Java Enterprise System 5 安裝規劃指南

附錄 A Java ES 和 Solaris 10 區域

本附錄描述您在 Solaris 10 區域內安裝及配置 Java ES 元件時會發生的問題,並就因應這些問題提供了一些建議的做法。此附錄包含下列各節:

何謂區域?

區域是 Solaris 10 作業系統的一種應用程式與資源管理功能。此功能可讓作業系統以獨立且安全的虛擬作業系統環境 (區域) 形式呈現給應用程式。這些區域憑著某種程度的集中化資源管理提供作業系統獨立性優點。因此,透過在不同的區域內安裝和執行應用程式,便可將應用程式彼此區隔開來,同時還可以集中分配和管理特定的作業系統資源。

從支援多個區域的作業系統來看,作業系統資源包括諸如程序管理、記憶體、網路配置、檔案系統、套裝軟體登錄、使用者帳號、共用程式庫等資源,在某些情況下也包括已安裝的應用程式。

多區域環境的結構

多區域環境由一個全域區域 (預設作業系統) 和一個或多個非全域區域組成。全域區域包含可由全域 (區域) 管理員在多個非全域區域之間分配的資源。非全域區域提供下列功能:

非全域區域有兩種類型:整體根區域 (whole root zone) 和稀疏根區域 (sparse root zone):

整體根區域與稀疏根區域

在使用整體根非全域區域還是稀疏根非全域區域之間做出選擇時,需在資源效率與管理控制之間進行權衡。整體根區域可讓您以犧牲記憶體和其他資源為代價來最大程度地提升管理控制 (獨立性與隔離),而稀疏根區域則是以犧牲管理獨立性為代價來使可執行檔及共用程式庫的有效共用最佳化 (同時大大減少所佔用的磁碟空間)。目前未對稀疏根區域相較於整體根區域的效能優勢進行衡量;這很可能要視具體軟體而定。

套裝軟體傳遞

在全域區域內安裝的套裝軟體 (依預設) 對所有非全域區域均可用:此程序即稱為套裝軟體傳遞。(若要進行傳遞,新建立的非全域區域必須完全啟動,亦即處於執行狀態。)傳遞可使全域區域內安裝的套裝軟體具有本機 (非全域) 可視性及可用性。傳遞允許全域管理員集中執行應用程式套裝軟體生命週期管理 (安裝、升級、解除安裝),而應用程式配置和執行階段管理則由 (非全域) 區域管理員執行。

對於整體根區域,傳遞是透過將所安裝的檔案從全域區域自動複製到整體根區域以及自動同步登錄資訊來完成的。對於稀疏根區域,傳遞則是透過全域區域與稀疏根區域之間共用的唯讀檔案系統以及自動同步登錄資訊來完成的。

套裝軟體到非全域區域的傳遞是使用內部套裝軟體屬性在套裝軟體層級進行控制的。對於這些屬性的某些值 (起碼是預設值),可在安裝時使用 pkgadd —G 選項來停用傳遞,該選項會覆寫這些屬性值。安裝後便無法修改套裝軟體的傳遞運作方式,此時只能透過解除安裝爾後重新安裝套裝軟體來進行修改。舉例來說,修補程式無法變更套裝軟體的傳遞運作方式;事實上,必須依照修補程式所要升級的套裝軟體的傳遞運作方式來套用修補程式。

為何對 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 在多區域環境中的部署方式設下一些限制。Java ES 共用元件和區域涉及到兩個問題:

共用元件的同步

測試和支援大量 (約 30 個) 共用元件很困難而且在 Java ES 共用元件與 Java ES 產品元件之間有著複雜的互動,因而必須將單一作業系統實例內的所有共用元件同步為相同的 Java ES 版本。換言之,非區域環境中或是 Solaris 10 環境內任何單一區域中安裝的所有 Java ES 共用元件都必須具有相同的版本。這項需求會對如何在多區域環境中使用 Java ES 設下某些限制。

此同步需求具有下列蘊義:

共用元件同步需求會對 Java ES 安裝程式在多區域環境中所限執行的動作加諸限制 (如需更多資訊,請參閱Java ES 安裝程式中的區域支援),而且還會影響 Java ES 產品元件在多區域環境中的安裝和升級程序。

共用元件與稀疏根區域

對 Java ES 在多區域環境中的使用有影響的另一個問題是,由於稀疏根區域中的檔案系統是唯讀的,故而無法在稀疏根區域中安裝大量的共用元件。因此,基底目錄為 /usr (依預設由全域區域共用的目錄) 的共用元件必須安裝在全域區域中才能在稀疏根區域中使用。

無法在稀疏根區域中安裝多個 Java ES 共用元件意味著,若要將與這類共用元件有相依性的產品元件成功地安裝至稀疏根區域中,必須先將共用元件安裝在全域區域中,然後再將其傳遞至非全域區域。

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 安裝程式為安裝 (與升級) Java ES 產品元件以及同步共用元件提供了合格的區域支援。已在安裝程式中實作了多個策略來幫助防止有問題的安裝及升級方案。

Java ES 傳遞策略

根據第 3 節中所探討的限制,Java ES 安裝程式實作了兩項 Java ES 傳遞策略:

產品元件的安裝

Java ES 安裝程式可以安裝產品元件,以及支援每個產品元件所需的共用元件。在安裝所選產品元件之前,安裝程式會檢查是否有目前和先前版本的共用元件存在。如果安裝程式偵測到所選元件所需的共用元件為先前版本或是缺少,安裝程式將會升級目前安裝的所有共用元件,並安裝所選元件所需的任何缺少的共用元件。此運作方式符合共用元件的同步的需求,適用於非區域作業系統、全域區域以及所有的非全域區域。

不過,此運作方式有兩個例外情況:

產品元件的升級

在 Java ES 發行版本 5 中實作了一個新的功能,用以在少數特殊情況下升級產品元件:Application Server、Message Queue、HADB 以及 Java DB。當 Java ES 安裝程式偵測到這些產品元件先前安裝的發行版本時,它會在 [元件選取] 頁面中將這些元件標示為可升級。如果選取了上述四個產品元件中的任何一個,安裝程式將會使用類似於全新安裝所用的邏輯來升級這些元件。

特別地,在升級所選產品元件之前,安裝程式會檢查是否有目前和先前版本的共用元件存在。如果安裝程式偵測到所選元件所需的共用元件為先前版本或是缺少,安裝程式將會升級目前安裝的所有共用元件,並安裝所選元件所需的任何缺少的共用元件。此運作方式符合同步所有共用元件中所述的需求,適用於非區域作業系統、全域區域以及所有的非全域區域。

不過,此運作方式有三個例外情況:


備註 –

存在若干特例或例外,它們可能會妨礙產品元件在非全域區域中的安裝或升級。在特例或例外中對這些情況進行了說明。


同步所有共用元件

為了因應必須同步所有共用元件的情況,提供了一個共用元件同步選項。當選取了 [所有共用元件] 選項時,安裝程式將會升級目前安裝的所有共用元件,並安裝任何缺少的共用元件,不論是否有任何特定產品元件需要這些元件。此選項會套用至全域區域及整體根區域,但不會套用至稀疏根區域。

在下列兩個以區域為基礎的方案中,需要使用 [所有共用元件] 選項:

與共用元件有關的 Java ES 安裝程式運作方式摘要

下表摘要說明了上述各種運作方式,其中顯示了 Java ES 安裝程式是如何根據區域環境以及在元件選取頁面中已選取的元件來處理共用元件的。

表 A–1 與共用元件有關的安裝程式運作方式

區域環境 

所選的產品元件 

所選的所有共用元件 

非區域作業系統 

升級目前安裝的所有共用元件 

安裝所選產品元件所需的任何缺少的共用元件 

升級目前安裝的所有共用元件 

安裝任何缺少的共用元件,不論是否有任何特定產品元件需要這些元件 

全域區域:無非全域區域 

升級目前安裝的所有共用元件 

安裝所選產品元件所需的任何缺少的共用元件 

升級目前安裝的所有共用元件 

安裝任何缺少的共用元件,不論是否有任何特定產品元件需要這些元件 

全域區域:存在非全域區域 

升級目前安裝的所有共用元件 

安裝任何缺少的共用元件,不論是否有任何特定產品元件需要這些元件 

升級目前安裝的所有共用元件並安裝任何缺少的共用元件,不論是否有任何特定產品元件需要這些元件 

整體根區域 

升級目前安裝的所有共用元件 

安裝所選產品元件所需的任何缺少的共用元件 

升級目前安裝的所有共用元件 

安裝任何缺少的共用元件,不論是否有任何特定產品元件需要這些元件 

稀疏根區域 

無法在唯讀目錄中升級或安裝某些共用元件。如果安裝程式遇到這類共用元件,它會停下來指示使用者在全域區域中管理共用元件。 

無法在唯讀目錄中升級或安裝某些共用元件。因此,安裝程式會停下來指示使用者在全域區域中管理共用元件。 

建議的區域與 Java ES 的搭配使用

儘管在多區域環境中部署 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,以下是若干建議採行的措施:

部署架構

表 A–2 中的方案說明和上述建議採行的措施不包括建議對多區域環境採用的 Java ES 部署架構。這種架構在針對多電腦網路環境而建立的部署架構基礎上進行了改造。換言之,多區域環境的可用性並不會改變用於達成 Java ES 部署系統的高效能、高可用性、延展性、安全性和可維修性的基本部署設計方法。多區域環境允許您執行的動作只是將這種部署架構整合至更少的電腦中。

不過,如前面各節所探討的那樣,如何使 Java ES 部署架構與多區域環境相適應的細節在很高程度上取決於您想要採取的管理策略。部署架構還取決於您為了達成高可用性而採取的策略。

請注意,表 A–2 和上面建議採行的措施不包括建議在實作所述方案時採用的程序。在某些情況下,Java ES 元件的安裝順序以及非本機區域的建立順序可能很重要。

特例或例外

Solaris 10 隨附有一些 Java ES 共用元件和一些 Java ES 產品元件,有許多特例大多都是因此而生的。由於這種隨附情形之故,這些 Java ES 元件存在於全域區域中,因而也存在於從全域區域建立而來的任何非全域區域中。

產品元件特例

共用元件特例

圖解範例:在稀疏根區域中安裝 Application Server

提供下列範例是為了大略說明 Java ES 區域支援中所涉及的某些複雜性。在本範例中,目標是要在 Solaris 10 稀疏根區域中安裝 Application Server。Solaris 10 隨附有 Application Server (以及 Application Server 所依賴的 Message Queue),因而會在所有非全域區域中安裝該隨附版本,由此就使此項安裝變得複雜化。如需更多資訊,請參閱產品元件特例

若要將 Application Server 安裝在稀疏根區域中,您必須先移除該隨附版本。(不能簡單地在稀疏根區域中升級該隨附版本,因為它安裝在唯讀目錄中)。若要從稀疏根區域中移除該隨附版本,您必須在全域區域中將其移除。

此外,Message Queue 安裝在全域區域中,這就表示背離了表 A–2 中的方案 3,在該方案中,只有共用元件 (並非產品元件) 才會安裝在全域區域中。然而,由於 Message Queue 安裝在唯獨目錄中,因此無法將其安裝在稀疏根區域中,這樣就必須在全域區域中對其進行安裝和升級。

程序如下:

  1. 驗證 Solaris 10 正在您的系統上執行。

    本範例假定全域區域中已明確安裝了不含 Java ES 元件的純淨版本的 Solaris 10。

  2. 建立一個稀疏根區域 (配置、安裝並啟動它)。

    此區域將納入全域區域中已安裝的所有 Java ES 元件,即 Solaris 10 隨附的 Message Queue 和 Application Server 版本。

  3. 從全域區域中移除隨附的 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 可按相反順序執行。)

  4. 在全域區域中安裝 Java ES 5 共用元件。

    1. 在全域區域中執行 Java ES 安裝程式。

    2. 從元件選取面板中選取 [所有共用元件]。請勿選取其他任何元件。

    3. 完成共用元件的同步。即會在全域區域中同步所有的共用元件,並將其傳遞至所有的非全域區域。

  5. 在全域區域中升級 Message Queue。

    Solaris 10 隨附的 Message Queue 版本已藉由步驟 2 安裝在稀疏根區域中。若要在稀疏根區域中升級 Message Queue,只需在全域區域中對其進行升級即可;升級狀態將會傳遞至稀疏根區域。(Message Queue 是唯一一個不能安裝在稀疏根區域中的產品元件,但安裝在全域區域中後,將會傳遞至非全域區域。)

    1. 在全域區域中執行 Java ES 安裝程式。

    2. 在元件選取面板中選取 Message Queue。請勿選取其他任何元件。

    3. 完成 Message Queue 的升級。

  6. 在稀疏根區域中安裝 Application Server。

    1. 在稀疏根區域中執行 Java ES 安裝程式。

    2. 在元件選取面板中選取 Application Server。請勿選取其他任何元件進行升級。若已選取了 Message Queue,請取消選取。

    3. 完成 Application Server 的安裝。