Sun Java System Message Queue 4.1 版本說明

4.1 版的新增功能

Message Queue 4.1 推出高可用性 (資料與服務可用性) 代理程式叢集、JAAS 支援以及各種其他次要的功能。本節將說明這些功能,並提供更多參考資訊供您使用。

高可用性

Message Queue 4.1 推出高可用性叢集,在提供服務可用性的同時,還提供資料可用性。它會在用戶端失去與高可用性代理程式的連線時,自動重新連線至叢集中的其他代理程式。提供新連線的代理程式會接管故障代理程式的永久性資料與狀態,並繼續為故障代理程式用戶端提供不間斷服務。您可以透過安全連線執行高可用性代理程式。

高可用性代理程式需要使用高可用性資料庫 (HADB)。若不具備此類資料庫或資料可用性對您而言不重要,則可繼續使用傳統叢集,提供自動重新連線與服務可用性。

配置高可用性代理程式很簡單:為叢集中的每個代理程式指定下列種類的代理程式特性。

若要使用此項功能,必須執行下列作業:

  1. 安裝高可用性資料庫。

  2. 安裝 JDBC 驅動程式的 .jar 檔案。

  3. 為高可用性永久存放區建立資料庫模式。

  4. 針對叢集中每個代理程式的高可用性,設定相關特性。

  5. 啟動叢集中的每個代理程式。

如需有關高可用性的概念性說明,以及它與傳統業集的對比,請參閱「Sun Java System Message Queue 4.1 Technical Overview」中的第 4 章「Broker Clusters」。如需有關高可用性的程序性資訊與參考資訊,請參閱「Sun Java System Message Queue 4.1 Administration Guide」中的第 8 章「Broker Clusters」「Sun Java System Message Queue 4.1 Administration Guide」中的「Cluster Configuration Properties」

如果您搭配 Message Queue 4.0 版使用 HADB 資料庫,且需要使用高可用性叢集,您可以使用 dbmgr 公用程式升級為共用 HADB 存放區。請參閱代理程式叢集,以取得更多資訊。

JAAS 支援

除了內建檔案式和 LDAP 式認證機制,Message Queue 也支援 Java 認證與授權服務 (JAAS),可讓您將各種服務外掛到代理程式,以認證 Message Queue 用戶端。本節說明代理程式提供給 JAAS 相容認證服務的資訊,並說明如何配置代理程式使用這類服務。

JAAS API 不在本文件的論述範疇內。如需瞭解更多資訊,請參閱下列資訊來源。

JAAS API 是 J2SE 的核心 API,因此是 Message Queue 執行階段環境不可或缺的一部分。JAAS 會在應用程式與認證機制之間定義一個抽象層,允許外掛所需的機制,而無須變更應用程式的程式碼。對於 Message Queue 服務而言,此抽象層位於代理程式 (應用程式) 與認證提供者之間。藉由設定某些代理程式特性,可以在不中斷或變更代理程式的程式碼情況下,外掛任何 JAAS 相容認證服務並升級此服務。

若使用 JAAS 式認證,便可使用 JMX 用戶端管理代理程式,但在啟動代理程式之前,必須手動設定 JAAS 支援 (藉由設定與 JAAS 相關的代理程式特性)。您無法使用 JMX API 變更這些特性。

JAAS 的元素

圖 1–1 說明了 JAAS 的基本元素:JAAS 用戶端、JAAS 相容認證服務與 JAAS 配置檔案。

圖 1–1 JAAS 元素

本圖說明 JAAS 相容認證所需的元素。圖形的介紹文字可解釋圖形內容。

下一節說明 Message Queue 服務如何使用這些元素,以提供 JAAS 相容認證。

JAAS 與 Message Queue

下圖說明 Message Queue 代理程式如何使用 JAAS。該圖說明的 JAAS 模型實作比上圖所示更為複雜。

圖 1–2 Message Queue 使用 JAAS 的方式

該圖說明 JAAS 相容認證如何搭配 Message Queue 使用。圖形之後的文字說明其內容。

如同較簡單的範例所示,此認證服務層與代理程式是分開的。認證服務包含一或多個登入模組 (LoginModule),並視需要包含其他認證模組。執行登入模組的 Java 虛擬機器與執行代理程式的 Java 虛擬機器相同。Message Queue 代理程式被登入模組視為 LogInContext,並藉由屬於代理程式執行階段程式碼的 CallBackHandler 與登入模組通訊。

認證服務也提供 JAAS 配置檔案 (包含登入模組的項目)。配置檔案會指定使用模組的順序,以及某些使用條件。啟動代理程式時,JAAS 會依 Java 系統特性 java.security.auth.login.config 或 Java 安全性特性檔案找出配置檔案。接著會根據代理程式特性 imq.user_repository.jaas.name 的值,選取 JAAS 配置檔案中的項目。此項目會指定認證將使用的登入模組。如圖所示,代理程式可使用多個登入模組。(圖 1–3 說明了配置檔案與登入模組以及代理程式之間的關係。)

Message Queue 用戶端完全不會感受到代理程式使用 JAAS 外掛認證服務。用戶端會如同往常繼續連線至代理程式,並傳遞使用者名稱與密碼。而代理程式會使用回呼處理程式將此資訊傳遞至認證服務,再由服務使用該資訊認證使用者並傳回結果。認證一旦成功,代理程式便會授權連線;如果失敗,用戶端執行階段會傳回用戶端必須處理的 JMS 安全性異常。

Message Queue 用戶端經過認證之後,如果需要進一步的授權,則代理程式會如同往常進行;它會參考存取控制檔案,決定是否授權已認證的用戶端以執行所負責的動作:存取目標、使用訊息、瀏覽佇列等。

設定 JAAS 相容認證

設定 JAAS 相容認證的步驟,包含設定代理程式和系統特性以選取此認證類型、指定配置檔案的位置,以及指定將使用的登入模組項目。

本節說明 JAAS 用戶端、登入模組以及 JAAS 配置檔案之間如何相互關聯,接著說明設定 JAAS 相容認證所需的程序。下圖說明配置檔案、登入模組與代理程式之間的關係。

圖 1–3 設定 JAAS 支援

本圖說明 JAAS 相關檔案之間的關係。圖形之後的文字說明其內容。

如圖所示,JAAS 配置檔案 MyJAASCFile.config 包含數個登入模組的參照,共同組成一個進入點。代理程式會藉由查詢 Java 系統特性 java.security.auth.login.config 或 Java 安全性特性檔案,以找出配置檔案。決定要使用的登入模組時須查詢代理程式特性 imq.user_repository.jaas.name,該特性會指定配置檔案中的所需項目。這些模組的類別位於 lib/ext 目錄中。

若要設定 JAAS 對 Message Queue 的支援,您必須完成下列步驟。(在開發環境中,這些步驟可能是由開發人員完成。在生產環境中,管理員會接管部分此類作業。)

  1. 建立可實作認證服務的一或多個登入模組類別。以下列出代理程式支援的 JAAS 回呼類型。

    javax.security.auth.callback.LanguageCallback

    代理程式使用此回呼,將執行代理程式所在的語言環境傳遞給認證服務。此值可用於本土化。

    javax.security.auth.callback.NameCallback

    代理程式使用此回呼,將請求連線時由 Message Queue 用戶端所指定的使用者名稱,傳遞至認證服務。

    javax.security.auth.callback.TextInputCallback

    代理程式使用此回呼,在 TextInputCallback.getPrompt()imq.authentication.type 時,將 imq.authentication.type 的值指定給認證服務。現在此欄位唯一可能的值為 basic。這表示 Base-64 密碼編碼。

    javax.security.auth.callback.PasswordCallback

    代理程式使用此回呼,將請求連線時由 Message Queue 用戶端所指定的密碼,傳遞至認證服務。

    javax.security.auth.callback.TextOutputCallback

    代理程式使用此回呼將文字輸出記錄到代理程式記錄檔,以提供記錄服務給認證服務。回呼的訊息類型 ERRORINFORMATIONWARNING 分別對映至代理程式的記錄層級 ERRORINFOWARNING

  2. 建立包含參照登入模組類別之項目的 JAAS 配置檔案,並將此檔案的位置指定給 Message Queue 管理員。(該檔案可位於遠端,並可由 URL 指定其位置。)

  3. 記下 JAAS 配置檔案中參照登入實作類別的項目名稱。

  4. 將實作登入模組的類別歸檔為 jar 檔案,並將 jar 檔案置於 Message Queue 的 lib/ext 目錄中。

  5. 配置與 JAAS 支援相關的代理程式特性。這些特性說明於表 1–2 中。

  6. 設定下列系統特性,以指定 JAAS 配置檔案的位置。

    java.security.auth.login.config= JAAS_Config_File_Location

    例如,您可以在啟動代理程式時指定配置檔案。

    imqbrokerd -Djava.security.auth.login.config=JAAS_Config_File_Location

    還有其他方法可指定 JAAS 配置檔案的位置。如需其他資訊,請參閱

    http://java.sun.com/j2se/1.5.0/docs/guide/security/jaas/tutorials/LoginConfigFile.html

下表列出設定 JAAS 支援所需的代理程式特性。

表 1–2 JAAS 支援的代理程式特性

特性 

說明 

imq.authentication.type

設定為 basic,以表示為 Base-64 密碼編碼。此為 JAAS 認證的唯一允許值。

imq.authentication.basic.user_repository

設定為 jaas,以指定 JAAS 認證。

imq.accesscontrol.type

設定為 file

imq.user_repository.jaas.name

設定為參照需要用做認證機制之登入模組的所需項目 (位於 JAAS 配置檔案中) 名稱。這是您在步驟 3 中記下的名稱。

imq.user_repository.jaas.userPrincipalClass

此特性由 Message Queue 存取控制所使用,會指定登入模組中的 java.security.Principal 實作類別,讓代理程式用來擷取在 Message Queue 存取控制檔案中表示使用者實體的主體名稱。若未指定,則會改用請求連線時從 Message Queue 用戶端傳遞的使用者名稱。

imq.user_repository.jaas.groupPrincipalClass

此特性由 Message Queue 存取控制所使用,會指定登入模組中的 java.security.Principal 實作類別,讓代理程式用來擷取在 Message Queue 存取控制檔案中表示使用者實體的主體名稱。若未指定,則會忽略 Message Queue 存取控制檔案中的群組規則 (若有的話)。

永久存放區格式變更

Message Queue 4.1 版將 JDBC 存放區變更為支援高可用性。因此,JDBC 存放區版本會增加為 410。JDBC 存放區版本 350、370 和 400 會自動遷移至 410 版本格式。

請注意,檔案式永久存放區版本由於沒有任何變更,因此還是 370。

代理程式配置

特性 IMQ_DEFAULT_EXT_JARS 已增加至 imqenv.conf 檔案。您可以設定此特性,以指定在啟動代理程式時,將外部 .jar 檔案的路徑名稱納入 CLASSPATH。若使用此特性指定外部 .jar 檔案的位置,則不需要再將這些檔案複製到 lib/ext 目錄。外部 jar 可參照 JDBC 驅動程式或 JAAS 登入模組。下列指令範例指定 jdbc 驅動程式的位置。

IMQ_DEFAULT_EXT_JARS=/opt/SUNWhadb4/lib/hadbjdbc4.jar:/opt/SUNWjavadb/derby.jar

JES 監視架構支援

Message Queue 支援 Sun Java Enterprise System (JES) 監視架構,可使用常用圖形式介面監視 Java Enterprise System 元件。此介面利用名為「Sun Java System Monitoring Console」的網路型主控台實作。如果您執行 Message Queue 和其他 JES 元件,可能會發現使用單一介面管理所有元件比較方便。

JES 監視架構會定義所有 JES 元件產品所使用的共用資料模式 (Common Data Model, CMM)。此模式可以統一的方式集中檢視所有 JES 元件。Message Queue 可將以下物件交給 JES 監視架構:

這些物件會各自對映一個 CMM 物件。您可使用 JES 監視主控台監視這些物件的屬性。在執行階段時,管理員可使用主控台檢視效能統計、建立自動監視的規則,以及確認警示。如需有關將 Message Queue 物件對映至 CMM 物件的詳細資訊,請參閱「Sun Java Enterprise System 監視指南」。

若要啟用 JES 監視,必須執行下列作業:

  1. 根據「Sun Java Enterprise System 安裝指南」中提供的指示,在部署中安裝並配置所有元件 (Message Queue 和其他元件)。

  2. 如「Sun Java Enterprise System 監視指南」中所述,為所有監視的元件啟用並配置監視架構。

  3. 如「Sun Java Enterprise System 監視指南」中所述,在一部單獨的主機上安裝監視主控台、啟動主代理程式,然後再啟動 Web 伺服器。

由於監視架構會從代理程式現有的監視資料基礎架構擷取資料,完成收集度量的所有工作,因此使用 JES 監視架構並不會影響代理程式的效能。

作業事件管理

在舊版中,只有處於 PREPARED 狀態的作業事件可以由管理員回復。換言之,若屬於分散式作業事件的階段作業未正常終止,作業事件將繼續處於代理程式管理員無法清除的狀態。在 Message Queue 4.1 中,您可以使用 imqcmd 公用程式清除 (回復) 下列狀態的作業事件:STARTEDFAILEDINCOMPLETECOMPLETEPREPARED

imqcmd 公用程式提供其他資料做為部分 imqcmd query txn 輸出,以協助您決定特定作業事件是否可回復 (特別是如果該作業事件不在 PREPARED 狀態時)。該公用程式提供啟動作業事件的連線 ID,並指定作業事件的建立時間。管理員可使用此資訊,決定是否需要回復作業事件。一般說來,管理員應避免提前回復作業事件。

C 用戶端連線的固定連接埠

C 用戶端可使用 MQ_SERVICE_PORT_PROPERTY 連線特性,指定要連線的固定連接埠。這在嘗試通過防火牆或需要略過代理程式的連接埠對映器服務 (動態指定連接埠) 時,會很有用。

請記住,您還需要在代理程式端配置 JMS 服務連接埠。例如,若需要透過 ssljms 將用戶端連線至連接埠 1756,請執行下列作業:


備註 –

MQ_SERVICE_PORT_PROPERTY 連線特性是於 Message Queue 3.7 Update 2 中引入。