MQ Enterprise Edition 支援多個互連的代理程式實例 (稱為代理程式叢集)。對於代理程式叢集,用戶端連線會分散至叢集中的所有代理程式。叢集可提供水平可延伸性並可提高可用性。
本小節說明如何配置 Application Server 以使用具有高可用性的 Sun Java System Message Queue 叢集。其中說明了如何啟動與配置 Message Queue 叢集。
如需有關 Application Server 拓樸和 MQ 部署的更多資訊,請參閱「Sun Java System Application Server 9.1 部署規劃指南」中的「Planning Message Queue Broker Deployment」。
Sun Java System Message Queue 4.1 透過新的「高度可用」叢集類型,提供高度可用的訊息服務。在此類型的 MQ 叢集中,所有代理程式實例都會共享對等式關係,且其所有代理程式實例都使用相同的持續性資料存放區。各實例會自動偵測是否有故障的實例,並透過動態接管選擇的方式,接管故障代理程式的持續性訊息。因此 Application Server 中部署的應用程式元件可利用這些可用性功能。
此叢集類型可讓佇列或長期主題訂閱不會遺失任何處理的持續性訊息。當用戶端執行階段所連線的代理程式無法使用時,就可能會遺失傳送至非長期訂閱者的非持續性訊息或持續性訊息。
啟動 HADB。
建立並啟動 Application Server 網域。若要建立並啟動網域,請分別使用 asadmin 指令 create-domain 和 start-domain。如需這些指令的更多資訊,請參閱create-domain(1) 和 start-domain(1)。
建立並啟動節點代理程式。若要建立並啟動節點代理程式,請分別使用 asadmin 指令 create-node-agent 和 start-node-agent。如需這些指令的更多資訊,請參閱 create-node-agent(1) 和 start-node-agent(1)。
建立叢集。您可以使用 asadmin 指令 create-cluster 或管理主控台來建立叢集。如需有關 create-cluster 指令的更多資訊,請參閱 create-cluster(1)。如需如何使用管理主控台建立叢集的更多資訊,請參閱管理主控台線上說明。
在叢集中建立實例。建立實例時,請指定遠端代理程式所使用的 JMS 提供者連接埠號。如果未指定,則使用預設的 JMS 提供者連接埠號。您可以使用管理主控台或 asadmin 指令 create-instance 來建立實例。如需如何使用管理主控台建立實例的更多資訊,請參閱管理主控台線上說明。如需有關 create-instance 指令的資訊,請參閱 create-instance(1)。
啟動叢集。您可以從管理主控台或使用 asadmin 指令 start-cluster 執行此動作。如需有關如何使用管理主控台啟動叢集的更多資訊,請參閱管理主控台線上說明。如需有關 start-cluster 指令的資訊,請參閱 start-cluster(1)。
使用 asadmin 指令 configure-ha-cluster 配置 HA 叢集。如需有關此指令的資訊,請參閱 configure-ha-cluster(1)。
啟動 HADB。
建立資料庫表格。
若是建立高度可用的代理程式叢集,請複製 HA 驅動程式。
cp $AS_HOME/hadb/4.4.3-6/lib/hadbjdbc4.jar $S1AS_HOME/imq/lib/ext
建立並啟動網域。若要執行此動作,請使用指令 asadmin 指令 create-domain 和 start-domain。如需這些指令的更多資訊,請參閱 create-domain(1) 和 start-domain(1)。
建立並啟動節點代理程式。若要執行此動作,請使用 asadmin 指令 create-domain 和 start-node-agent。如需這些指令的更多資訊,請參閱 create-node-agent(1) 和 start-node-agent(1)。
建立叢集。您可以使用 asadmin 指令 (create-cluster) 或管理主控台來建立叢集。如需更多資訊,請參閱 create-cluster(1)。如需如何使用管理主控台建立叢集的更多資訊,請參閱管理主控台線上說明。
在叢集中建立實例。建立實例時,請指定遠端代理程式所使用的 JMS 提供者連接埠號。如果未指定,則使用預設的 JMS 提供者連接埠號。
刪除預設的 JMS 主機,並建立實例可連線的 JMS 主機。請確定將每一個代理程式新增為獨立的 JMS 主機。如需有關 JMS 主機的更多資訊,請參閱 JMS 主機清單。
將 JMS 類型設定為 Remote。您可以使用 asadmin 指令 set 或從管理主控台的 [JMS 服務] 頁面執行此動作。
若是配置高度可用的代理程式,請將 [JMS 可用性] 設定為 true。您可以使用 asadmin 指令 set 或從管理主控台的 [JMS 可用性] 頁面執行此動作。
啟動代理程式實例。
啟動叢集。如需更多資訊,請參閱 start-cluster(1)。
以前管理員必須依照本節的下列程序分別設定「非高度可用的」MQ 叢集 (具有主代理程式的 MQ 叢集)。在此發行版本中,除了 MQ 叢集的手動設定程序 (屬於類型 REMOTE) 外,Application Server 也提供了「自動叢集功能」,這意味著當使用者建立 Application Server 叢集時,將自動建立並置的非 HA 叢集 (屬於類型 LOCAL)。這將是建立 MQ 叢集的預設模式。例如,當管理員建立一個內含三個 Application Server 實例的 Application Server 叢集時,會將每個 Application Server 實例配置成使用一個並置的代理程式,因此不需設定即可使三個 MQ 代理程式實例形成一個 MQ 叢集。第一個 Application Server 實例的 MQ 代理程式會被設定為主代理程式。不過自動叢集功能也有一個缺點。如果管理員將實例新增到叢集,自動建立的 MQ 代理程式實例將無法加入到叢集中。此運作方式也適用於從叢集移除實例的情況。
如果叢集的類型是 REMOTE,請執行下列步驟。如果叢集的類型是 LOCAL,則步驟 1 到步驟 4 不適用。
如果其中之一尚不存在,則建立 Application Server 叢集。
如需有關建立叢集的資訊,請參閱建立叢集。
建立 MQ 代理程式叢集。
首先,刪除參照由網域管理伺服器啟動的代理程式的預設 JMS 主機,然後,建立三個要包含在 MQ 代理程式叢集中的外部代理程式 (JMS 主機)。
使用管理主控台或 asadmin 指令行公用程式建立 JMS 主機。
若要使用 asadmin,請參照以下的指令範例︰
asadmin delete-jms-host --target cluster1 default_JMS_host asadmin create-jms-host --target cluster1 --mqhost myhost1 --mqport 6769 --mquser admin --mqpassword admin broker1 asadmin create-jms-host --target cluster1 --mqhost myhost2 --mqport 6770 --mquser admin --mqpassword admin broker2 asadmin create-jms-host --target cluster1 --mqhost myhost3 --mqport 6771 --mquser admin --mqpassword admin broker3 |
若要使用管理主控台建立主機,請執行以下步驟︰
啟動主 MQ 代理程式和其他 MQ 代理程式。
除了在 JMS 主機電腦上啟動三個外部代理程式以外,在任一機器上啟動一個主代理程式。此主代理程式不必為代理程式叢集的一部分。例如︰
/usr/bin/imqbrokerd -tty -name brokerm -port 6772 -cluster myhost1:6769,myhost2:6770,myhost2:6772,myhost3:6771 -D"imq.cluster.masterbroker=myhost2:6772" |
啟動該叢集中的 Application Server 實例。
在叢集上建立 JMS 資源︰
建立 JMS 實體目標。
例如,使用 asadmin︰
asadmin create-jmsdest --desttype queue --target cluster1 MyQueue asadmin create-jmsdest --desttype queue --target cluster1 MyQueue1 |
若要使用管理主控台,請執行以下步驟︰
建立 JMS 連線工廠。
例如,使用 asadmin︰
asadmin create-jms-resource --target cluster1 --restype javax.jms.QueueConnectionFactory jms/MyQcf asadmin create-jms-resource --target cluster1 --restype javax.jms.QueueConnectionFactory jms/MyQcf1 |
若要使用管理主控台,請執行以下步驟︰
建立 JMS 目標資源。
例如,使用 asadmin︰
asadmin create-jms-resource --target cluster1 --restype javax.jms.Queue --property imqDestinationName=MyQueue jms/MyQueue asadmin create-jms-resource --target cluster1 --restype javax.jms.Queue --property imqDestinationName=MyQueue1 jms/MyQueue1 |
若要使用管理主控台,請執行以下步驟︰
使用 –retrieve 選項為應用程式用戶端部署應用程式。例如︰
asadmin deploy --target cluster1 --retrieve /opt/work/MQapp/mdb-simple3.ear |
存取應用程式並對其進行測試,以確保其正常運作。
若要將 Application Server 復原為其預設 JMS 配置,請刪除您建立的 JMS 主機,然後重新建立預設。例如︰
asadmin delete-jms-host --target cluster1 broker1 asadmin delete-jms-host --target cluster1 broker2 asadmin delete-jms-host --target cluster1 broker3 asadmin create-jms-host --target cluster1 --mqhost myhost1 --mqport 7676 --mquser admin --mqpassword admin default_JMS_host |
您也可使用管理主控台執行等效作業。
如果遇到問題,請考量以下作業︰
檢視 as-install-dir/nodeagents/node-agent-name/ instance-name/logs/server.log 上的 Application Server 記錄檔。如果您在記錄檔中看到 MQ 代理程式未回應訊息,請停止該代理程式,然後將其重新啟動。
檢視 as-install-dir /nodeagents/node-agent-name/ instance-name/imq/imq-instance-name/log/log.txt 中提供的代理程式記錄。
對於 Remote JMS 類型,請務必先啟動 MQ 代理程式,再啟動 Application Server 實例。
當所有 MQ 代理程式均中斷後,使用 Java 訊息服務中的預設值中斷或啟動 Application Server 需花費 30 分鐘。調校 Java 訊息服務值可取得此逾時可接受的值。例如︰
asadmin set --user admin --password administrator cluster1.jms-service.reconnect-interval-in-seconds=5