MQ Enterprise Edition は、ブローカクラスタと呼ばれる、相互に接続した複数のブローカインスタンスをサポートします。ブローカクラスタによって、クライアント接続はクラスタ内のすべてのブローカに分散されます。クラスタ化することで、水平方向のスケーラビリティーが提供され、可用性が向上します。
この節では、高可用性を備えた Sun Java System Message Queue クラスタを使用するために Application Server を設定する方法を説明します。また、Message Queue クラスタを開始および設定する方法も解説します。
Application Server および MQ 配備のトポロジの詳細については、『Sun Java System Application Server 9.1 配備計画ガイド』の「Message Queue ブローカの配備の計画」を参照してください。
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 クラスタ) を管理者が個別に設定する必要がありました。このリリースでは、(REMOTE タイプの) 手動でのプロセスによる MQ クラスタの設定に加えて、Application Server は「自動クラスタ化」を提供します。これは、ユーザーが Application Server クラスタを作成するときに、(LOCAL タイプの) 共存する非 HA クラスタが自動的に作成されることを意味します。これは MQ クラスタの作成のデフォルトモードになります。たとえば、3 つの Application Server インスタンスを持つ Application Server クラスタを管理者が作成すると、各 Application Server インスタンスは共存するブローカと連動するように設定され、結果的に MQ クラスタが透過的に 3 つの MQ ブローカインスタンスを形成します。最初の Application Server インスタンスの MQ ブローカがマスターブローカに設定されます。ただし、自動クラスタ化には短所もあります。管理者がクラスタにインスタンスを追加する場合、自動的に作成される MQ ブローカインスタンスはクラスタに参加できません。この動作は、インスタンスがクラスタから削除される場合にも適用されます。
クラスタが REMOTE タイプの場合、次の手順を実行します。クラスタが LOCAL タイプの場合、手順 1 〜 4 は該当しません。
Application Server クラスタを作成します (まだクラスタがない場合)。
クラスタの作成については、「クラスタを作成する」を参照してください。
MQ ブローカクラスタを作成します。
まず、ドメイン管理サーバーによって起動されるブローカを参照するデフォルト JMS ホストを削除してから、MQ ブローカクラスタに 3 つの外部ブローカ (JMS ホスト) を作成します。
JMS ホストの作成は、管理コンソールまたは asadmin コマンド行ユーティリティーのいずれかを使用して行います。
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 ホストマシン上で起動する 3 つの外部ブローカに加えて、任意のマシン上で 1 つのマスターブローカを起動します。このマスターブローカは、ブローカクラスタの一部である必要はありません。次に例を示します。
/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 |
管理コンソールを使用して、これに相当する操作を実行することもできます。
問題が起きた場合は、次の点を考慮してください。
Application Server ログファイルを表示します。このファイルの場所は、as-install-dir/nodeagents/node-agent-name/instance-name/logs/server.log です。MQ ブローカがメッセージに応答しないとログファイルに記録されている場合は、ブローカを停止してから再起動します。
ブローカログを表示します。このログの場所は、as-install-dir/nodeagents/node-agent-name/instance-name/imq/imq-instance-name/log/log.txt です。
リモートの JMS タイプについては、必ず、MQ ブローカを最初に起動してから Application Server インスタンスを起動するようにしてください。
すべての MQ ブローカが停止した場合、Java Message Service のデフォルト値では、Application Server の停止または起動までに 30 分かかります。Java Message Service の値を調整して、このタイムアウトを許容できる値にしてください。次に例を示します。
asadmin set --user admin --password administrator cluster1.jms-service.reconnect-interval-in-seconds=5