Sun Java System Message Queue 3.7 UR1 管理指南

管理叢集

本節說明如何連線一組代理程式以形成一個叢集、將新的代理程式增加至現有叢集,以及從叢集中移除代理程式。

連線代理程式

有兩種通用方法可將代理程式連線至叢集:從指令行使用 -cluster 選項進行連線,或在 叢集配置檔案中設定 imq.cluster.brokerlist 特性。無論使用哪種方法,您啟動的每個代理程式每 5 秒鐘會嘗試連線至其他代理程式;在此叢集中的主代理程式 (如果已配置) 啟動後,連線即可成功。如果叢集中有代理程式比主代理程式先啟動,則此代理程式將保持暫停狀態,從而拒絕用戶端連線,直到主代理程式啟動時;然後暫停的代理程式的全部功能將自動可用。

若要從指令行配置代理程式叢集,請在啟動每個代理程式時,使用 imqbrokerd 指令的 -cluster 選項,指定叢集的完整代理程式清單。例如,以下指令啟動新的代理程式,並將其連線至在 host1 的預設連接埠 (7676) 上執行的代理程式、在 host2 的連接埠 5000 上執行的代理程式,以及在預設主機 (localhost) 的連接埠 9876 上執行的代理程式:

imqbrokerd -cluster host1,host2:5000,:9876

另一種更適合用於生產系統的替代方法,就是建立一個使用 imq.cluster.brokerlist 特性的叢集配置檔案,以指定要連線之代理程式的清單。叢集中的每個代理程式均必須將自己的 imq.cluster.url 特性設定為指向此叢集配置檔案。

無論您使用哪種方法,都必須確定叢集中沒有代理程式位址解譯為網路迴路 IP 位址 (127.0.0.1)。任何配置為這個位址的代理程式將無法連線至叢集中的其他代理程式。


備註 –

一些 Linux 安裝程式會自動將 localhost 項目設定為網路迴路位址。在這類系統上,您必須修改系統 IP 位址,這樣才能為叢集中的所有代理程式設定正確的位址。

在設定叢集時,請在參與叢集的所有 Linux 系統中檢查 /etc/hosts 檔案。如果系統使用的是靜態 IP 位址,請編輯 /etc/hosts 檔案,為 localhost 指定正確的位址。如果位址已註冊網域命名服務 (DNS),請編輯 /etc/nsswitch.conf 檔案以變更項目的順序,讓系統可以在參考本機 hosts 檔案之前執行 DNS 查找。/etc/nsswitch.conf 中的行應如下所示:

hosts:dns files

如果您想要在叢集中的代理程式之間以安全加密的方式進行訊息傳送,請配置 cluster 連線服務以使用 SSL 型傳輸協定。針對叢集中的每個代理程式,設定 SSL 型連線服務,如訊息加密中所述。然後再使用叢集配置檔案,或透過為每個代理程式個別設定的方式,將 imq.cluster.transport 特性設定為 ssl

將代理程式新增至叢集

將新代理程式增加至叢集的程序取決於叢集是否使用叢集配置檔案。

Procedure使用叢集配置檔案將新的代理程式新增至叢集

  1. 將新代理程式增加至叢集配置檔案中的 imq.cluster.brokerlist 特性。

  2. 向叢集中的每個代理程式發出以下指令:


    imqcmd reload cls

    此指令強制所有代理程式重新載入叢集配置,確保此叢集中代理程式的所有永久性資訊均為最新的。請注意,您不需要為叢集中的每個代理程式發出此指令;只要對任何一個代理程式執行此指令,就會使得所有代理程式都重新載入叢集配置。

  3. (選擇性) 在代理程式的 config.properties 檔案中設定 imq.cluster.url 特性的值,讓其指向叢集配置檔案。

  4. 啟動新的代理程式。

    如果您並未執行將代理程式新增至叢集,請使用 imqbrokerd 指令行上的 -D 選項以設定 imq.cluster.url 的值。

不使用叢集配置檔案將新的代理程式新增至叢集

您可以編輯 config.properties 檔案或使用 imqbrokerd 指令行上的 -D 選項來設定以下特性的值:

從叢集中移除代理程式

您用來從叢集中移除代理程式的方法,取決於原先是透過指令行建立叢集,還是使用集中叢集配置檔案所建立。

使用指令行移除代理程式

如果您是使用指令行的 imqbrokerd 指令將代理程式連線至叢集,則必須停止各代理程式,然後在指令行上指定一組新的叢集成員並重新啟動。程序如下:

Procedure使用指令行從叢集中移除代理程式

  1. 使用 imqcmd 指令停止叢集中的各代理程式。

  2. 重新啟動將保留在叢集中的代理程式 (使用 imqbrokerd 指令的 -cluster 選項,指定要保留的代理程式)。

    例如,假設您原本使用以下的指令來啟動 A、BC 代理程式來建立包含這三者的叢集:


    imqbrokerd -cluster A,B,
    C
    

    若要從叢集中移除代理程式 A,請使用以下指令重新啟動代理程式 BC


    imqbrokerd -cluster B,C
    

使用叢集配置檔案移除代理程式

如果您原本是集中使用叢集配置檔案中的 imq.cluster.brokerlist 特性來指定叢集的成員代理程式以建立叢集,就不需要為了移除其中一個代理程式而停止所有的代理程式。反之,您只要編輯配置檔案來排除要移除的代理程式,以強制剩餘的叢集成員重新載入叢集配置,並重新配置已排除的代理程式,這樣它就不再指向相同的叢集配置檔案。程序如下:

Procedure使用叢集配置檔案從叢集中移除代理程式

  1. 編輯叢集配置檔案,從以 imq.cluster.brokerlist 特性指定的清單中移除要排除的代理程式。

  2. 向叢集中每個保留的代理程式發出以下指令:


    imqcmd reload cls

    這會強制代理程式重新載入叢集配置。

  3. 停止要從叢集中移除的代理程式。

  4. 編輯此代理程式的 config.properties 檔案,移除 imq.cluster.url 特性或指定一個不同的值。