上一章 目錄 索引 下一章 |
Sun Java System Message Queue 3.5 SP1 管理指南

> ## 第 5 章
> 啟動與配置代理程式

> 安裝 Sun Java™ System Message Queue 之後，您可以使用 imqbrokerd 指定啟動代理程式。代理程式實例的配置由一組配置檔案和使用 imqbrokerd 指令傳送的選項管理，這些選項置換配置檔案中的相應特性。

> 本章介紹 imqbrokerd 指令的語法，以及如何使用指令行選項和配置檔案來配置代理程式實例。此外，還描述如何執行以下作業：

> - 編輯代理程式實例配置檔案
> - 使用代理程式叢集
> - 控制代理程式的記錄

> 如需如何啟動與使用作為 Windows 服務的代理程式的說明，請參閱「將代理程式用作 Windows 服務」。

> ##

> 配置檔案

> 用來配置代理程式的已安裝代理程式配置檔案範本，位於作業系統的某個目錄中，目錄位置因作業系統而異，如附錄 A「Message Queue 資料的位置」 中所述。

> 此目錄儲存以下檔案：

> - 啟動時載入的預設配置檔案。此檔案名稱為 default.properties，並且不可編輯。您可能需要閱讀此檔案，以確定預設值並找到您要變更之特性的確切名稱。
> - 包含安裝 Message Queue 時指定的所有特性的安裝配置檔案。此檔案名稱為 install.properties；安裝之後無法編輯。

> ### 實例配置檔案

> 當您首次執行代理程式時，會建立實例配置檔案，您可以用來指定代理程式實例的配置特性。實例配置檔案儲存於以代理程式實例名稱 (instanceName) 作為辨別依據的目錄中，且代理程式實例與配置檔案相互關聯 (請參閱附錄 A「Message Queue 資料的位置」)：

> .../instances/instanceName/props/config.properties

> 備註 | /instances/instanceName 目錄 (和實例配置檔案) 歸其對應的代理程式實例的建立者所有。之後必須以同一個使用者來啟動所有代理程式實例。

> 代理程式實例會維護實例配置檔案。當您使用管理工具變更配置時，即會修改實例配置檔案。您也可以以手動方式編輯實例配置檔案來變更配置 (請參閱「編輯實例配置檔案」)。若要執行此動作，您必須為 .../instances/instanceName 目錄的擁有者，或以超級使用者身分登入，才可變更目錄上的權限。

> 如果您連接叢集中的代理程式實例 (請參閱「多重代理程式叢集 (企業版)」)，您可能還需要使用叢集配置檔案以指定叢集配置資訊。如需更多資訊，請參閱「叢集配置特性」。

> ### 合併特性值

> 啟動時，系統會合併不同配置檔案中的特性值。它使用在安裝和實例配置檔案中配置的值置換在預設配置檔案中指定的值。您可以透過使用 imqbrokerd 指令選項置換結果值。此機制在圖 5-1 中有說明。

> 圖 5-1 代理程式配置檔案

> ### 特性命名語法

> 配置檔案中的任何 Message Queue 特性定義均使用以下命名語法：

> propertyName=value[[,value1]...]

> 例如，以下項目指定拒絕其他訊息前，代理程式會在記憶體和永久性倉庫中攔截 50,000 個訊息。

> imq.system.max_count=50000

> 下列項目指定每天 (86400 秒) 會建立一個新的日誌檔：

> imq.log.file.rolloversecs=86400

> 表 5-1 以字母順序列出代理程式配置特性 (及其預設值)。

> ### 編輯實例配置檔案

> 首次執行代理程式實例時，會自動建立 config.properties 檔案。您可以編輯此實例配置檔案，以自訂相應代理程式實例的運作方式和資源使用。

> 代理程式實例僅在啟動時讀取 config.properties 檔案。若要永久性變更 config.properties 檔案，您可以

> - 使用管理工具。如需有關可使用 imqcmd 配置之特性的資訊，請參閱表 6-4。
> - 當代理程式實例關閉時編輯 config.properties 檔案；然後重新啟動此實例。(在 Solaris 和 Linux 平台上，僅首次啟動此代理程式實例的使用者有權編輯 config.properties 檔案。)

> 表 5-1 以字母順序列出代理程式實例配置特性 (及其預設值)。如需有關每種特性的涵義和使用的更多資訊，請參閱指定的交叉參照部分。

> 表 5-1 代理程式實例配置特性

> 特性名稱 | 類型 | 預設值 | 參考
> --- | --- | --- | ---
> imq.accesscontrol.enabled | 布林 | true | 表 2-6
> imq.accesscontrol.file. filename | 字串 | accesscontrol. properties | 表 2-6
> imq.authentication.basic. user_repository | 字串 | file | 表 2-6
> imq.authentication. client.response.timeout | 整數 (秒) | 180 | 表 2-6
> imq.authentication.type | 字串 | digest | 表 2-6
> imq.autocreate.destination. isLocalOnly | 布林 | false | 表 2-10
> imq.autocreate.destination. limitBehavior | 字串 | REJECT_NEWEST | 表 2-10
> imq.autocreate.destination. maxBytesPerMsg | 位元組字串1 | 10k | 表 2-10
> imq.autocreate.destination. maxNumMsgs | 整數 | 100,000 | 表 2-10
> imq.autocreate.destination. maxNumProducers | 整數 | 100 | 表 2-10
> imq.autocreate.destination. maxTotalMsgBytes | 位元組字串1 | 10m | 表 2-10
> imq.autocreate.queue | 布林 | true | 表 2-10
> imq.autocreate.queue. consumerFlowLimit | 整數 | 1000 | 表 2-10
> imq.autocreate.queue. localDeliveryPreferred | 布林 | false | 表 2-10
> imq.autocreate.queue. maxNumActiveConsumers | 整數 | 1 | 表 2-10
> imq.autocreate.queue. maxNumBackupConsumers | 整數 | 0 | 表 2-10
> imq.autocreate.topic | 布林 | true | 表 2-10
> imq.autocreate.topic. consumerFlowLimit | 整數 | 1,000 | 表 2-10
> imq.cluster.property_name |  |  | 表 5-3
> imq.hostname | 字串 | 所有可用 IP 位址 | 表 2-3
> imq.httpjms.http.property_name |  |  | 表 C-1
> imq.httpsjms.https. property_name |  |  | 表 C-3
> imq.keystore.property_name |  |  | 表 8-8
> imq.log.console.output | 字串 | ERROR|WARNING | 表 2-9
> imq.log.console.stream | 字串 | ERR | 表 2-9
> imq.log.file.dirpath | 字串 | 請參閱附錄 A「Message Queue 資料的位置」 | 表 2-9
> imq.log.file.filename | 字串 | log.txt | 表 2-9
> imq.log.file.output | 字串 | ALL | 表 2-9
> imq.log.file.rolloverbytes | 整數 (位元組) | -1 (無自動重建) | 表 2-9
> imq.log.file.rolloversecs | 整數 (秒) | 604800 | 表 2-9
> imq.log.level | 字串 | INFO | 表 2-9
> imq.log.syslog.facility | 字串 | LOG_DAEMON | 表 2-9
> imq.log.syslog.identity | 字串 | imqbrokerd_${imq. instanceName} | 表 2-9
> imq.log.syslog.logconsole | 布林 | false | 表 2-9
> imq.log.syslog.logpid | 布林 | true | 表 2-9
> imq.log.syslog.output | 字串 | ERROR | 表 2-9
> imq.log.timezone | 字串 | 本地時區 | 表 2-9
> imq.message.expiration. interval | 整數 (秒) | 60 | 表 2-4
> imq.message.max_size | 位元組字串1 | 70m | 表 2-4
> imq.metrics.enabled | 布林 | true | 表 2-9
> imq.metrics.interval | 整數 (秒) | -1 (永不) | 表 2-9
> imq.metrics.topic.enabled | 布林 | true | 表 2-9
> imq.metrics.topic.interval | 整數 (秒) | 60 | 表 2-9
> imq.metrics.topic.persist | 布林 | false | 表 2-9
> imq.metrics.topic.timetolive | 整數 (秒) | 300 | 表 2-9
> imq.passfile.dirpath | 字串 | 請參閱附錄 A「Message Queue 資料的位置」 | 表 2-6
> imq.passfile.enabled | 布林 | false | 表 2-6
> imq.passfile.name | 字串 | 密碼檔案 | 表 2-6
> imq.persist.file. destination.message. filepool.limit | 整數 | 100 | 表 2-5
> imq.persist.file.message. cleanup | 布林 | false | 表 2-5
> imq.persist.file.message. filepool.cleanratio | 整數 | 0 | 表 2-5
> imq.persist.file.message. max_record_size | 位元組字串1 | 1m | 表 2-5
> imq.persist.file.sync. enabled | 布林 | false | 表 2-5
> imq.persist.jdbc.property_name |  |  | 表 B-1
> imq.persist.store | 字串 | file | 表 2-5
> imq.ping.interval | 整數 | 120 | 表 2-3
> imq.portmapper.backlog | 整數 | 50 | 表 2-3
> imq.portmapper.hostname | 字串 | 繼承自 imq.hostname | 表 2-3
> imq.portmapper.port | 整數 | 7676 | 表 2-3
> imq.resource_state.count | 整數 (百分比) | 5000 (green) 500 (yellow) 50(orange) 0 (red) | 表 2-4
> imq.resource_state. threshold | 整數 (百分比) | 0 (green) 80 (yellow) 90(orange) 98 (red) | 表 2-4
> imq.service.activelist | 清單 | jms, admin | 表 2-3
> imq.service_name. accesscontrol.enabled | 布林 | 繼承系統範圍的特性的值 | 表 2-6
> imq.service_name. accesscontrol.file.filename | 字串 | 繼承系統範圍的特性的值 | 表 2-6
> imq.service_name. authentication.type | 字串 | 繼承系統範圍的特性的值 | 表 2-6
> imq.service_name.max_threads | 整數 | 1000 (jms) 500 (ssljms) 500 (httpjms) 500 (httpsjms) 10 (admin) 10 (ssladmin) | 表 2-3
> imq.service_name.min_threads | 整數 | 10 (jms) 10 (ssljms) 10 (httpjms) 10 (httpsjms) 4 (admin) 4 (ssladmin) | 表 2-3
> imq.service_name.protocol_type. hostname | 字串 | 繼承自 imq.hostname | 表 2-3
> imq.service_name.protocol_type. port | 整數 | 0 (動態配置) | 表 2-3
> imq.service_name. threadpool_model | 字串 | dedicated (jms) dedicated (ssljms) dedicated (httpjms) dedicated (httpsjms) dedicated (admin) dedicated (ssladmin) | 表 2-3
> imq.shared. connectionMonitor_limit | 整數 | 512 (Solaris & Linux) 64 (Windows) | 表 2-3
> imq.system.max_count | 整數， 0 (無限制) | -1 | 表 2-4
> imq.system.max_size | 位元組字串1， 0 (無限制) | -1 | 表 2-4
> imq.transaction.autorollback | 布林 | false | 表 2-4
> imq.user_repository.ldap. property_name |  |  | 表 8-5
> 1 作為位元組字串鍵入的值，可以用位元組、千位元組和百萬位元組表示：例如：1000 表示 1000 位元組；7500b 表示 7500 位元組；77k 表示 77 千位元組 (77 x 1024 = 78848 位元組)；17m 表示 17 百萬位元組 (17 x 1024 x 1024 = 17825792 位元組)

> ##

> 啟動代理程式

> 啟動代理程式實例可使用 imqbrokerd 指令。

> 備註 | 您無法使用管理主控台 (imqadmin) 或指令公用程式 (imqcmd) 啟動代理程式實例。代理程式實例必須已處於執行狀態，才能使用這些 Message Queue 管理工具。

> 若要置換一個或多個特性值，請指定有效的 imqbrokerd 指令行選項。指令行選項可置換代理程式配置檔案中的值，但僅用於目前的代理程式階段作業：指令行選項不能寫入至實例配置檔案。

> ### imqbrokerd 指令的語法

> imqbrokerd 指令的語法如下 (選項和引數用空格分隔)：

> imqbrokerd [[ -Dproperty=value]...]
> [ -backup fileName]
> [ -cluster "[broker1] [[,broker2]...]"
> [ -dbuser userName] [ -dbpassword password]
> [ -force]
> [ -h|-help]
> [ -javahome path]
> [ -ldappassword password]
> [ -license licenseName]
> [ -loglevel level]
> [ -metrics interval]
> [ -name instanceName]
> [ -password keypassword] [ -passfile fileName]
> [ -port number]
> [ -remove instance]
> [ -reset data]
> [ -restore fileName]
> [ -shared]
> [ -silent|-s] [ -tty]
> [ -upgrade-store-nobackup]
> [ -version]
> [ -vmargs arg1 [[arg2]]

> 備註 | 在 Solaris 上，您可以將代理程式配置為異常結束後自動重新啟動，方法為透過將 /etc/imq/imqborkerd.conf 配置檔案中的 RESTART 特性配置為 YES。

> 備註 | 在 Solaris 和 Linux 平台上，包含配置資訊和永久性資料的目錄的許可權，取決於首次啟動代理程式實例的使用者的身份。因此，若要使代理程式實例運行正常，以後也必須僅由原來的使用者啟動它。

> ### 啟動範例

> 以下範例說明 imqbrokerd 指令的使用：如需更多 imqbrokerd 指令行選項的資訊，請參閱表 5-2。

> #####
> 若要啟動預設代理程式名稱和配置的代理程式實例

> 請使用以下指令：

> imqbrokerd

> 此指令可在本地機器上啟動代理程式的預設實例 (名為 imqbroker)，連接埠對映器位於連接埠 7676。

> #####
> 若要啟動使用試用企業版授權的代理程式實例

> 如果您有平台版的授權，但想要試用為期 90 天的企業版功能，您可以使用 -license 指令行選項，並將「try」作為要使用的授權傳送，以啟動試用企業版授權：

> imqbrokerd -license try

> 每次啟動代理程式實例時都必須使用此選項，否則它會預設回基本的平台版授權。

> #####
> 若要啟動包含外掛永久性的已命名代理程式實例

> 若要啟動使用外掛資料倉庫的 myBroker 代理程式 (請參閱附錄 B「設定外掛持續性」)，且要求輸入使用者和密碼，請使用以下指令：

> imqbrokerd -name myBroker -dbuser myName -dbpassword myPassword

> ### imqbrokerd 選項的摘要

> 表 5-2 描述了 imqbrokerd 指令的選項，還描述了每個選項影響的配置特性 (如果有)。

> 表 5-2 imqbrokerd 選項

> 選項 | 影響的特性 | 說明
> --- | --- | ---
> -backup fileName | 無影響的特性。 | 僅適用於代理程式叢集。將主代理程式的配置變更記錄備份至指定檔案。請參閱「備份配置變更記錄」。
> -cluster"[broker1] [[,broker2]..." 其中 broker 為以下之一 host[:port] [host]:port | 將 imq.cluster.brokerlist 配置為與其連接的代理程式清單。 | 僅適用於代理程式叢集。連接至指定主機和連接埠上的所有代理程式。此清單已與 imq.cluster.brokerlist 特性中的清單合併。如果您沒有為主機指定值，則使用 localhost。如果您沒有為連接埠指定值，則使用值 7676。請參閱「使用叢集 (企業版)」，以獲得有關如何使用此選項連接多重代理程式的更多資訊。
> -dbpassword password | 將 imq.persist.jdbc. password 配置為指定的密碼 | 為外掛 JDBC 相容資料倉庫指定密碼。請參閱附錄 B「設定外掛持續性」
> -dbuser userName | 將 imq.persist.jdbc.user 配置為指定的使用者名稱 | 為外掛 JDBC 相容資料庫指定使用者名稱。請參閱附錄 B「設定外掛持續性」
> -Dproperty=value | 配置系統特性。置換實例配置檔案中的相應特性值。 | 將指定的特性配置為指定的值。請參閱表 5-1，以獲得代理程式配置特性。 警告：請仔細檢查使用 D 選項配置的特性的拼寫與格式。如果您傳送了錯誤的值，系統將不警告您，並且 Message Queue 亦無法配置這些值。
> -force | 無影響的特性。 | 未經使用者確認即執行動作。此選項僅套用通常要求確認的 -remove instance 和 -upgrade-store-nobackup 選項。
> -h|-help | 無影響的特性。 | 顯示說明。不執行指令行上的其他任何指令。
> -javahome path | 無影響的特性。 | 指定替代 Java 2 相容 JDK 的路徑。預設為使用隨附的運行時間。
> -ldappassword password | 將 imq.user_repository. ldap.password 配置為指定的密碼 | 為存取 LDAP 使用者儲存庫指定密碼。請參閱「將 LDAP 伺服器用於使用者儲存庫」。
> -license [licenseName] | 無影響的特性。 | 如果要載入的授權與 Message Queue 產品版本預設的授權不同，則指定要載入的授權。如果您尚未指定授權名稱，則此項會列出系統上安裝的所有授權。根據已安裝的 Message Queue 版本，licenseName 值為 pe (平台版 - 基本功能)、try (平台版 - 90 天試用企業功能) 和 unl (企業版)。請參閱「產品版本」。
> -loglevel level | 將 imq.broker.log.level 配置為指定的級別。 | 將記錄級別指定為以下之一：NONE、ERROR、WARNING 或 INFO。預設值為 INFO。如需更多資訊，請參閱「記錄程式」。
> -metrics interval | Sets imq.metrics. interval 配置為指定的秒數。 | 指定寫入記錄程式的代理程式度量的指定間隔時間 (以秒為單位)。
> -name instanceName | 將 imq.instancename 配置為指定的名稱。 | 指定此代理程式的實例名稱，並使用相應的實例配置檔案。如果您沒有指定代理程式名稱，則將實例名稱配置為 imqbroker。 注意：如果您在同一主機上執行代理程式的多個實例，則每個實例必須具有唯一的名稱。
> -passfile fileName | 將 imq.passfile. enabled 配置為 true。將 jmq. passfile.dirpath 配置為包含此檔案的路徑。 將 imq.passfile.name 配置為此檔案的名稱。 | 指定檔案的名稱，您可從此檔案讀取 SSL 密鑰儲存、LDAP 使用者儲存庫或 JDBC 相容資料庫的密碼。如需更多資訊，請參閱「使用密碼檔案」。
> -password keypassword | 將 imq.keystore. password 配置為指定的密碼。 | 為 SSL 憑證密鑰儲存指定密碼。如需更多資訊，請參閱「安全性管理程式」。
> -port number | 將 imq.portmapper.port 配置為指定的號碼。 | 指定代理程式的連接埠對映器連接埠號。依預設，此項配置為 7676。若要在同一伺服器上執行代理程式的兩個實例，則每個代理程式的連接埠對映器必須有埠同的連接埠號。Message Queue 用戶端會使用此連接埠號連接至代理程式實例。
> -remove instance | 無影響的特性。 | 導致移除代理程式實例：刪除此實例配置檔案、日誌檔、永久性倉庫以及與此實例相關聯的其他檔案和目錄。要求使用者確認，除非也指定了 -force 選項。
> -reset store| messages| durables| props | 無影響的特性。 | 依據給定的引數，重設資料倉庫 (或資料倉庫的子集) 或代理程式實例的配置特性。 重設資料倉庫，清除所有永久性資料，包括永久性訊息、長期訂閱和異動資訊。此項可讓您啟動沒有記錄的代理程式實例。您還可以僅清除所有永久性訊息或僅清除所有長期訂閱。(如果您不想在後續的重新啟動中重設永久性倉庫，請重新啟動未使用 -reset 選項的代理程式實例。)如需更多資訊，請參閱「持續性管理程式」。 重設代理程式的特性，用空白檔案取代現有實例配置檔案 (config.properties)：所有特性均假設為預設值。
> -restore fileName | 無影響的特性。 | 僅適用於代理程式叢集。用指定的備份檔案取代主代理程式的配置變更記錄。此檔案必須已使用 -backup 選項事先建立。請參閱「復原配置變更記錄」。
> -shared | 將 imq.jms. threadpool_model 配置為 shared。 | 指定要使用共用執行緒儲存區模型實施的 jms 連接服務，在此模型中，執行緒在各連接之間共用以增加代理程式實例支援的連接數目。如需更多資訊，請參閱「連接服務」。
> -silent|-s | 將 imq.log.console. output 配置為 NONE。 | 關閉對主控台的記錄。
> -tty | 將 imq.log.console. output 配置為 ALL。 | 指定所有訊息均在主控台顯示。依預設，僅顯示 WARNING 和 ERROR 級別的訊息。
> -upgrade-store- nobackup | 無影響的特性 | 指定從不相容的版本升級到 Message Queue 3.5 或 Message Queue 3.5 SPx 時會自動移除舊的資料倉庫。如需其他詳細資訊，請參閱「Message Queue 安裝指南」。
> -version | 無影響的特性。 | 顯示安裝產品的版本編號。
> -vmargs arg1 [[arg2]...] | 無影響的特性 | 指定要傳送至 Java VM 的引數。用空格分隔各引數。如果您要傳送多個引數，或者如果引數包含空格，請使用括起的引號。例如： imqbrokerd -tty -vmargs "-Xmx128m -Xincgc"

> ##

> 使用叢集 (企業版)

> 本節描述用於配置多重代理程式叢集的特性以及連接代理程式的兩種方法，並介紹如何管理叢集。如需叢集的介紹，請參閱「多重代理程式叢集 (企業版)」。

> 使用叢集時，請確保叢集中所有代理程式的主機時鐘同步 (請參閱「系統時鐘設定」)。

> ### 叢集配置特性

> 當您將代理程式連接至叢集時，所有連接的代理程式必須指定為叢集配置特性的配置。這些特性描述了叢集中代理程式的參與情況。表 5-3 總結了與叢集相關的配置特性。以星號 (*) 標記的特性必須跟叢集中的所有代理程式擁有一樣的值。

> 表 5-3 叢集配置特性

> 特性名稱 | 說明
> --- | ---
> imq.cluster.brokerlist* | 指定叢集中的所有代理程式。由以逗號分隔的主機:連接埠項目清單組成，其中主機為每個代理程式的主機名稱，連接埠為它的連接埠對映器連接埠號。例如： host1:3000、host2:8000、ctrhost
> imq.cluster. masterbroker* | 指定叢集中的哪個代理程式 (如果有) 為記錄狀態變更的主代理程式。特性由 host:port 組成，其中host為主代理程式的主機名稱，port 為它的連接埠對映器連接埠號。配置生產環境的內容。例如，ctrhost:7676
> imq.cluster.url* | 指定叢集配置檔案的位置。用於代理程式參考中央叢集配置檔案，而不是個別配置。由 URL 字串組成：如果保留在 Web 伺服器上，則可使用一般的 http:URL 存取它。如果保留在共用磁碟機上，則可使用 file:URL 存取它。 例如：http://webserver/imq/cluster.properties file:/net/mfsserver/imq/cluster.properties
> imq.cluster.port | 對於叢集中的每個代理程式，均可用於為 cluster (叢集) 連接服務指定連接埠號。 cluster (叢集) 連接服務用於在叢集的各代理程式之間進行內部通訊。 預設值：0 (已動態配置連接埠)
> imq.cluster.hostname | 對於叢集中的每個代理程式，如果有多台主機可用 (例如，如果一台電腦中有多個網路介面卡)，則可用於指定 cluster (叢集) 連接服務所連結的主機 (主機名稱或 IP 位址)。cluster (叢集) 連接服務用於在叢集的各代理程式之間進行內部通訊。 預設值：繼承 imq.hostname 的值 (請參閱表 2-3)
> imq.cluster.transport* | 指定 cluster (叢集) 連接服務用於叢集中，代理程式間內部通訊的網路傳輸。為顧及代理程式間加密訊息發送的安全，請針對叢集中的所有代理程式，將此特性配置為 ssl。預設值：tcp

> 您可以使用以下兩種方法之一配置叢集特性：

> - 您可以在每個代理程式的實例配置檔案中 (或在啟動每個代理程式的指令行中)，配置與叢集相關的配置特性。例如，若要連接代理程式 A (在 host1 上，連接埠為 7676)、代理程式 B (在 host2 上，連接埠為 5000) 和代理程式 C (在 ctrlhost 上，連接埠為 7676)，則用於代理程式 A、B 和 C 的實例配置檔案需要配置以下特性。

> imq.cluster.brokerlist=host1, host2:5000, ctrlhost

> 如果您決定變更叢集配置，則此方法要求更新所有代理程式中與叢集相關的特性。

> - 您可以在一個中央叢集配置檔案中配置叢集配置特性。這些特性可能包括連接的代理程式清單 (imq.cluster.brokerlist)、用於叢集連接服務的網路傳輸 (imq.cluster.transport)，以及 (選擇性) 主代理程式的位址 (imq.cluster.masterbroker)。

> 如果您使用此方法，您還必須將 imq.cluster.url 特性 (對於叢集中的每個代理程式) 配置為指向叢集配置檔案的位置。從易於維護的角度看，此方法為叢集配置的建議方法。

> 以下程式碼範例顯示叢集配置檔案的內容。host1 與 ctrlhost 均正在預設連接埠上執行。這些特性指定在叢集中連接到 host1、host2 和 ctrlhost，且 ctrlhost 為主代理程式。

> imq.cluster.brokerlist=host1,host2:5000,ctrlhost imq.cluster.masterbroker=ctrlhost

> 用於在叢集中連接的每個代理程式的實例配置檔案，必須還包含此叢集配置檔案的 URL；例如：

> imq.cluster.url=file:/home/cluster.properties

> ### 連接代理程式

> 本節描述如何將代理程式連接到叢集，以及如何配置叢集的安全性，即配置叢集中代理程式間的加密訊息發送。

> #### 連接方法

> 有兩種通用方法可將代理程式連接到叢集：使用或不使用叢集配置檔案進行連接。

> 無論您使用哪種方法，您啟動的每個代理程式每 5 秒鐘會嘗試連接至其他代理程式；一旦啟動此叢集中的主代理程式，嘗試即可成功。如果叢集中有代理程式比主代理程式先啟動，則此代理程式將保持暫停狀態，從而拒絕用戶端連接。當主代理程式啟動時，暫停的代理程式的全部功能將自動可用。

> ##### 方法 1：不使用叢集配置檔案進行連接

> ##### 將代理程式連接到叢集

> 1. 使用啟動代理程式的 imqbrokerd 指令的 -cluster 選項，並將代理程式 (要連接的) 的完整清單指定為 -cluster 選項的引數。
> 2. 對於每個要連接至叢集的代理程式，在啟動它時執行此作業。

> 例如，以下指令啟動新的代理程式，並將其連接至在 host1 的預設連接埠上執行的代理程式、在 host2 的連接埠 7677 上執行的代理程式以及在本地主機的連接埠 7678 上執行的代理程式。

> imqbrokerd -cluster host1,host2:7677,:7678

> ##### 方法 2：使用叢集配置檔案進行連接

> 還可以建立叢集配置檔案，此檔案指定要連接的代理程式清單 (和選擇性地指定主代理程式的位址)。這種定義叢集的方法更適合用於生產系統。如果您要使用此方法，叢集中的每個代理程式均必須將 imq.cluster.url 特性的值配置為指向此叢集配置檔案。

> #### 安全代理程式互通連接

> 要求叢集中代理程式間的加密訊息發送的安全性時，您必須配置 cluster (叢集) 連接服務，以使用基於 SSL 的傳輸協定，方法如下所述：

> ##### 若要在叢集內配置安全連接

> 1. 針對叢集中的每個代理程式，配置基於 SSL 的連接服務。

> 請參閱「透過 TCP/IP 設定基於 SSL 的服務」中的說明。

> 2. 將 imq.cluster.transport 叢集配置特性配置為 ssl。

> 如果您沒有使用叢集配置檔案，那麼您必須在叢集中的每個代理程式配置此特性。

> ### 管理叢集中的代理程式

> 一旦您已配置代理程式叢集，您可能需要新增新的代理程式或重新啟動此叢集中已存在的代理程式，或者自叢集移除代理程式。

> #### 將代理程式新增至叢集

> ##### 若要新增新的代理程式至現有叢集

> - 如果您正在使用叢集配置檔案，那麼
> 1. 將此新代理程式新增至叢集配置檔案中的 imq.cluster.brokerlist 特性。
> 2. 向叢集中的每個代理程式發出以下指令。

> imqcmd reload cls

> 此指令強制所有代理程式重新載入 imq.cluster.brokerlist 特性，並確保此叢集中代理程式的所有永久性資訊均為最新的。

> 3. 啟動新的代理程式，並使用 -D 選項在指令行上指定 imq.cluster.url 特性。

> 這會將代理程式指向叢集配置檔案。

> - 如果您沒有使用叢集配置檔案，那麼在啟動新的代理程式時，請使用 -D 選項在指令行上指定 imq.cluster.brokerlist、imq.cluster.transport (使用安全叢集連接服務時) 和 (如有必要) imq.cluster.masterbroker 特性。

> #### 重新啟動叢集中的代理程式

> 如果叢集中的代理程式已毀損或因某種原因而關閉，那麼您必須將它重新啟動為叢集的一員。

> ##### 若要重新啟動已為現有叢集一員的代理程式

> - 如果未使用叢集配置檔案定義叢集，那麼啟動新代理程式時，請使用 -D 選項在指令行上指定 imq.cluster.brokerlist 特性 (如有必要，請指定 imq.cluster.masterbroker 特性)。如果叢集不包括主代理程式，那麼重新啟動代理程式時，您可以僅使用 -cluster 選項指定叢集中的代理程式清單。
> - 如果已使用叢集配置檔案定義叢集，則請使用 -D 選項，在用於啟動代理程式的指令行上指定 imq.cluster.url 特性。

> #### 從叢集中移除代理程式

> ##### 若要從現有叢集移除代理程式

> - 如果代理程式 A、B 和 C 均使用以下指令行啟動，則僅重新啟動 A 將不會從叢集中移除 A。

> imqbrokerd -cluster A,B,C

> 然而，您需要使用以下指令行重新啟動所有其他代理程式：

> imqbrokerd -cluster B,C

> 然後，您需要啟動代理程式 A 而不指定 -cluster 選項。

> - 如果已使用叢集配置檔案指定代理程式清單，則您將需要執行以下作業：
> 1. 從配置檔案中移除提及的代理程式。
> 2. 為要移除的代理程式變更或移除 imq.cluster.url 特性，以便它不再使用共用特性。
> 3. 使用 imqcmd reload cls 指令強制所有代理程式重新載入它們的叢集配置，從而重新配置此叢集。

> ### 管理主代理程式的配置變更記錄

> 每個叢集可以具有一個主代理程式，以記錄此叢集之永久性狀態的所有變更。狀態包括長期訂閱和管理員建立之實體目標的資訊。所有代理程式在啟動期間會參考主代理程式 (或參考其配置變更記錄)，以使有關這些永久性物件的資訊同步。因此，主代理程式發生故障可能會導致無法同步化。所以，如果主代理程式發生故障，您則法建立或刪除實體目標或長期訂閱。

> 因為它包含了重要資訊，所以定期備份主代理程式的配置變更記錄，以及在發生故障的情況下復原主代理程式是非常重要的。

> 以下各節說明如何備份和復原配置變更記錄。

> #### 備份配置變更記錄

> ##### 若要備份配置變更記錄

> 使用 imqbrokerd 指令的 -backup 選項。例如，

> imqbrokerd -backup mybackuplog

> 適時地進行備份很重要。復原很舊的備份可能會導致資訊遺失：任何從上次備份後實體目標或長期訂閱中的變更皆會遺失。

> #### 復原配置變更記錄

> ##### 在發生故障的情況下復原主代理程式

> 1. 關閉叢集中的所有代理程式。
> 2. 使用以下指令復原主代理程式的配置變更記錄：

> imqbrokerd -restore mybackuplog

> 3. 如果您為主代理程式指定了新的名稱或連接埠號，您必須更新叢集配置檔案，以指定此主代理程式是此叢集的一部分並指定其新的名稱 (使用特性 imq.cluster.masterbroker)。
> 4. 重新啟動所有代理程式。

> 復原代理程式必將導致某些舊資料重新載入代理程式的配置變更記錄；但是，經常定期備份 (如上節所述) 應可儘量避免此問題。

> 由於主代理程式記錄永久性物件變更的整個歷程，因此其資料庫可能會在一段時期內迅速增長。備份與復原作業可以有效地壓縮和最佳化此資料庫。

> ##

> 記錄

> 本節描述代理程式的預設記錄配置，並介紹如何變更此配置，以便將日誌資訊重新導向至替代輸出通道並變更日誌檔自動重建條件。如需記錄的介紹，請參閱「記錄程式」。如需使用記錄以記錄代理程式度量的資訊，請參閱「監視工具」。

> ### 預設記錄配置

> 啟動代理程式時，會自動配置為將日誌輸出儲存到一組自動重建的日誌檔中，這些日誌檔位於以代理程式實例名稱 (instanceName) 作為辨別的目錄中，且代理程式實例與日誌檔相互關聯 (請參閱附錄 A「Message Queue 資料的位置」)：

> .../instances/instanceName/log/

> 日誌檔為簡單的文字檔案。它們命名如下，從最舊的到最新的：

> log.txt
> log_1.txt
> log_2.txt
> ...
> log_9.txt

> 依預設，日誌檔每週自動重建一次；系統保留九個備份檔案。

> - 若要變更保留日誌檔的目錄，請將特性 imq.log.file.dirpath 配置為所需路徑。
> - 若要將日誌檔的根名稱從 log 變更為其他名稱，請配置 imq.log.file.filename 特性。

> 代理程式支援三種日誌種類：ERROR、WARNING 和 INFO (請參閱表 2-7)。配置記錄級別可收集此級別以上 (含此級別) 的訊息。預設日誌級別為 INFO。這表示依預設記錄了所有 ERROR、WARNING 和 INFO 的訊息。

> ### 日誌訊息格式

> 記錄的訊息包含時間標記 (若要變更時區時間標記，請參閱表 2-9)、訊息程式碼和訊息本身。資訊容量因您所配置的日誌級別而有所不同。以下為 INFO 訊息的範例。

> [13/Sep/2000:16:13:36 PDT] B1004 Starting the broker service using tcp [ 25374,100] with min threads 50 and max threads of 500

> ### 變更記錄程式配置

> 表 2-9 中描述了所有記錄程式特性。

> ##### 變更代理程式的記錄程式配置

> 1. 配置日誌級別。
> 2. 為一個或多個記錄種類配置輸出通道 (檔案、主控台或二者)。
> 3. 如果您將輸出記錄至檔案，請為此檔案配置自動重建條件。

> 您可以透過配置記錄程式特性完成這些步驟。您可以用以下兩種方法之一執行此作業：

> - 在啟動代理程式之前，為其變更或新增 config.properties 檔案中的記錄程式特性。
> - 在啟動代理程式的 imqbrokerd 指令中，指定記錄程式指令行選項。您還可以使用代理程式選項 -D 變更記錄程式特性 (或任何代理程式特性)。

> 在指令行上傳送的選項置換在代理程式實例配置檔案中指定的特性。表 5-4 列出了影響記錄的 imqbrokerd 選項。

> 表 5-4 imqbrokerd 記錄程式選項和對應的特性

> imqbrokerd 選項 | 說明
> --- | ---
> -metrics interval | 指定寫入記錄程式的度量資訊的間隔時間 (以秒為單位)。
> -loglevel level | 將日誌級別配置為以下之一：ERROR、WARNING 和 INFO。
> -silent | 關閉對主控台的記錄。
> -tty | 將所有訊息傳送至主控台。依預設，僅顯示 WARNING 和 ERROR 級別的訊息。

> 以下各節描述如何變更預設配置以便執行以下作業：

> - 變更輸出通道 (日誌訊息的目標)
> - 變更自動重建條件

> #### 變更輸出通道

> 依預設，錯誤和警告訊息既可在終端機上顯示，也可記錄至日誌檔。(在 Solaris 上，錯誤訊息還可寫入至系統的 syslog (系統日誌) 常駐程式。)

> 您可以用以下方法變更日誌訊息的輸出通道：

> - 若要使所有日誌種類 (對於給定的級別) 輸出顯示在畫面上，請使用 imqbrokerd 指令的 -tty 選項。
> - 若要避免日誌輸出顯示在畫面上，請使用 imqbrokerd 指令的 -silent 選項。
> - 使用 imq.log.file.output 特性指定應寫入至日誌檔的記錄資訊的種類。例如，

> imq.log.file.output=ERROR

> - 使用 imq.log.console.output 特性指定應寫入至主控台的記錄資訊的種類。例如，

> imq.log.console.output=INFO

> - 在 Solaris 上，使用 imq.log.syslog.output 特性指定應寫入至 Solaris syslog 的記錄資訊的種類。例如，

> imq.log.syslog.output=NONE

> 備註 | 變更記錄程式輸出通道前，您必須確定已將記錄配置為支援您要對映到輸出通道的資訊的級別。例如，如果您要將日誌級別配置為 ERROR，並將 imq.log.console.output 特性配置為 WARNING，則不會記錄任何訊息，因為您沒有啟用 WARNING 訊息的記錄。

> #### 變更記錄檔自動重建條件

> 有兩個條件用於自動重建日誌檔：時間和容量。預設為使用時間條件，每七天自動重建一次檔案。

> - 若要變更時間間隔，您需要變更特性 imq.log.file.rolloversecs。例如，以下特性定義將時間間隔變更為十天：

> imq.log.file.rolloversecs=864000

> - 若要將自動重建條件變更為取決於檔案容量，您需要配置 imq.log.file.rolloverbytes 特性。例如，以下定義使代理程式在檔案達到 500,000 位元組的限制時，自動重建檔案。

> imq.log.file.rolloverbytes=500000

> 如果您同時配置了與時間相關的和與容量相關的特性，則先達到的限制將啟動自動重建。如上所述，代理程式最多可保留九個自動重建檔案。

> 上一章 目錄 索引 下一章

> Copyright 2004 Sun Microsystems, Inc. All rights reserved.