Sun Java ロゴ     前へ      目次      索引      次へ     

Sun ロゴ
Sun Java System Message Queue 3 2005Q4 管理ガイド 

第 9 章
ブローカクラスタを使用した作業

Message Queue Enterprise Edition ではブローカクラスタの使用がサポートされています。ブローカクラスタでは、ブローカのグループの連動により、メッセージ配信サービスがクライアントに提供されます。メッセージサーバーでは、クラスタにより、複数のブローカ間でクライアント接続を分散し、メッセージトラフィックのボリュームで処理を拡張できます。クラスタとその動作方法の概要については、『Message Queue 技術の概要』を参照してください。

この章では、ブローカクラスタを管理する方法、ブローカをブローカクラスタに接続する方法、ブローカクラスタを設定する方法について説明します。この章は、次の節から構成されています。


クラスタ設定プロパティー

クラスタを定義するには、メンバーブローカごとにクラスタ設定プロパティーを指定します。このプロパティーは、クラスタのブローカごとに個別に設定できますが、このプロパティーを中央のクラスタ設定ファイルに集めて、すべてのブローカに参照させる方が一般的に便利です。このようにすると、設定の不一致を防止し、クラスタのすべてのブローカで同一の一貫した設定情報を共有できます。

クラスタ設定プロパティーについては、表 14-9 で詳しく説明します。クラスタ設定プロパティーには次のものが含まれます。

hostname プロパティーと port プロパティーはブローカごとに個別に設定できますが、brokerlistmasterbrokerurltransport は、クラスタのすべてのブローカで同一の値にする必要があります。

次の節では、クラスタのブローカごとに個別に、またはクラスタ設定ファイルを使用して中央で、ブローカのクラスタ設定プロパティーを設定する方法について説明します。

ブローカごとのクラスタプロパティーの設定

ブローカのクラスタ設定プロパティーは、インスタンス設定ファイルで、またはブローカの起動時にコマンド行で設定できます。たとえば、host1 のポート 9876host2 のポート 5000ctrlhost のデフォルトポート 7676 のブローカから構成されるクラスタを作成するには、3 つすべてのブローカのインスタンス設定ファイルに次のプロパティーを含めます。

この手法では、クラスタ設定を変更する必要がある場合、クラスタのブローカごとにインスタンス設定ファイルを更新する必要があることに注意してください。

クラスタ設定ファイルの使用

一貫性を保って保守しやすくするため、ブローカごとに共有クラスタ設定プロパティーを設定する代わりに、すべての共有クラスタ設定プロパティーを 1 つのクラスタ設定ファイルに集めることをお勧めします。この手法では、それぞれのブローカのインスタンス設定ファイルで imq.cluster.url プロパティーを設定し、クラスタ設定ファイルの場所を指定する必要があります。たとえば次のように指定します。

クラスタ設定ファイルでは、接続するブローカのリスト (imq.cluster.brokerlist)、cluster 接続サービスに使用するトランスポートプロトコル (imq.cluster.transport)、任意でマスターブローカのアドレス (imq.cluster.masterbroker) など、クラスタに属しているすべてのブローカの共有設定プロパティーを定義します。次のコードでは、前の例と同じクラスタが定義され、ctrlhost で動作するブローカがマスターブローカになります。


クラスタ管理

この節では、ブローカのセットを接続してクラスタを形成する方法、既存クラスタに新しいブローカを追加する方法、クラスタからブローカを削除する方法について説明します。

ブローカの接続

一般的にブローカを接続してクラスタを形成する方法には、コマンド行から行う方法 (-cluster オプションを使用)、またはクラスタ設定ファイルで imq.cluster.brokerlist プロパティーを設定する方法の 2 つがあります。どちらの方法を使用しても、起動するそれぞれのブローカは、5 秒ごとにその他のブローカとの接続を試み、設定されている場合はマスターブローカが起動すると接続されます。マスターブローカの前にクラスタのブローカを起動すると、マスターブローカが起動するまで、そのブローカは保留状態になり、クライアント接続を拒否します。マスターブローカが起動すると、保留状態のブローカは自動的に完全に機能するようになります。

ブローカクラスタをコマンド行から設定するには、それぞれのブローカの起動時に、imqbrokerd コマンドの -cluster オプションを使用して、クラスタのブローカの完全なリストを指定します。たとえば次のコマンドでは、新しいブローカが起動し、host1 のデフォルトポート 7676host2 のポート 5000、デフォルトホスト localhost のポート 9876 で動作しているブローカに接続されます。

本稼動システムに適した別の方法として、クラスタ設定ファイルを作成し、imq.cluster.brokerlist プロパティーを使用して、接続するブローカのリストを指定する方法があります。クラスタのそれぞれのブローカでは、独自の imq.cluster.url プロパティーを設定し、このクラスタ設定ファイルの場所を指定する必要があります。

Linux の前提条件: IP アドレスの設定

Linux システムでブローカを接続してクラスタを形成する場合は、特別な前提条件があります。一部の Linux インストーラでは、localhost エントリが、ネットワークループバック IP アドレス 127.0.0.1 に自動的に設定されます。クラスタのすべてのブローカでアドレスを適切にするには、システムの IP アドレスを設定する必要があります。

クラスタに加わるすべての Linux システムでは、クラスタ設定の一環として /etc/hosts ファイルをチェックしてください。システムで固定 IP アドレスを使用している場合は、/etc/hosts ファイルを編集し、localhost の正しいアドレスを指定します。アドレスがドメインネームサービス (DNS) に登録されている場合は、/etc/nsswitch.conf ファイルを編集してエントリの順序を変更し、システムが DNS 検索を実行してから、ローカルの hosts ファイルを参照するように設定します。/etc/nsswitch.conf ファイルの行は次のようになります。

ブローカ間の安全な接続

安全で暗号化されたメッセージ配信がクラスタのブローカ間で必要である場合は、SSL ベースのトランスポートプロトコルを使用するように cluster 接続サービスを設定します。「SSL ベースのサービスの操作」で説明するように、クラスタのブローカごとに、SSL ベースの接続サービスを設定します。次にそれぞれのブローカの imq.cluster.transport プロパティーを、クラスタ設定ファイルでまとめて、またはブローカごとに個別に、ssl に設定します。

クラスタへのブローカの追加

新しいブローカをクラスタに追加する手順は、クラスタでクラスタ設定ファイルを使用しているかどうかによって決まります。

クラスタ設定ファイルを使用して新しいブローカをクラスタに追加する
  1. クラスタ設定ファイルにある imq.cluster.brokerlist プロパティーに、新しいブローカを追加します。
  2. クラスタ内の各ブローカに次のコマンドを実行します。
  3. imqcmd reload cls

    それぞれのブローカでクラスタ設定が再読み込みされ、クラスタに属しているブローカのすべての一貫した情報が最新になります。

  4. (任意指定) ブローカの config.properties ファイルで imq.cluster.url プロパティーの値をクラスタ設定ファイルの場所に設定します。
  5. 新しいブローカを起動します。
  6. 手順 3 を実行しなかった場合は、imqbrokerd コマンド行で -D オプションを使用し、imq.cluster.url の値を設定します。

クラスタ設定ファイルを使用せずに新しいブローカをクラスタに追加する

config.properties ファイルを編集するか、imqbrokerd コマンド行で -D オプションを使用し、次のプロパティー値を設定します。

クラスタからのブローカの削除

クラスタからブローカを削除する方法は、最初にコマンド行でクラスタを作成したか、中央のクラスタ設定ファイルによって作成したかによって決まります。

コマンド行を使用したブローカの削除

コマンド行から imqbrokerd コマンドを使用してブローカをクラスタに接続した場合は、それぞれのブローカを停止してから、コマンド行に新しいクラスタメンバーセットを指定してブローカを再起動する必要があります。その手順は次のとおりです。

コマンド行を使用してクラスタからブローカを削除する
  1. imqcmd コマンドを使用し、クラスタのそれぞれのブローカを停止します。
  2. imqbrokerd コマンドの -cluster オプションを使用し、クラスタに残すブローカのみを指定してそれらのブローカを再起動します。
  3. たとえば、次のコマンドを使用して、ABC というそれぞれのブローカを起動し、その 3 つのブローカから構成されるクラスタを最初に作成したとします。

    imqbrokerd -cluster A,B,C

    ブローカ A をクラスタから削除するには、次のコマンドを使用してブローカ BC を再起動します。

    imqbrokerd -cluster B,C

クラスタ設定ファイルを使用したブローカの削除

中央のクラスタ設定ファイルの imq.cluster.brokerlist プロパティーでメンバーブローカを指定してクラスタを最初に作成した場合、ブローカを停止してメンバーのうち 1 つのブローカを削除する必要はありません。単純に設定ファイルを編集して削除したいブローカを除外し、残りのクラスタメンバーにクラスタ設定を再読み込みさせます。除外するブローカは、同じクラスタ設定ファイルの場所を指定しないように再設定します。手順は次のとおりです。

クラスタ設定ファイルを使用してクラスタからブローカを削除する
  1. クラスタ設定ファイルを編集し、imq.cluster.brokerlist プロパティーに指定しているリストから除外対象ブローカを削除します。
  2. クラスタ内の残りのブローカに次のコマンドを実行します。
  3. imqcmd reload cls

    ブローカがクラスタ設定を再読み込みします。

  4. クラスタから削除するブローカを停止します。
  5. そのブローカの config.properties ファイルを編集し、imq.cluster.url プロパティーを削除するか、別の値を指定します。


マスターブローカ

クラスタには、1 つのマスターブローカを任意に含めることができます。マスターブローカでは設定変更レコードが維持され、クラスタの持続的な状態の変更が追跡されます。マスターブローカは、クラスタ設定ファイル、またはそれぞれのブローカのインスタンス設定ファイルで、imq.cluster.masterbroker 設定プロパティーによって識別されます。

設定変更レコードには、永続サブスクリプション、および管理者が作成した物理的送信先など、クラスタに関連する持続エンティティーの変更に関する情報が含まれます。クラスタのすべてのブローカは、起動中にマスターブローカを参照し、この持続エンティティーに関する情報を更新します。このような同期は、マスターブローカの障害によって不可能になります。詳細については、「マスターブローカを使用できない場合」を参照してください。

設定変更レコードの管理

設定変更レコードには重要な情報が含まれるので、定期的にバックアップして、障害が発生した場合に復元できるようにすることが重要です。バックアップから復元しても、バックアップ以降に発生したクラスタの持続的な状態の変更は失われますが、頻繁にバックアップすれば、情報喪失の可能性を最小限に抑えることができます。バックアップ操作と復元操作には、時間の経過とともに増大していく可能性がある設定変更レコード内の変更履歴を、圧縮して最適化するという肯定的な効果もあります。

設定変更レコードをバックアップする

imqbrokerd コマンドの -backup オプションを使用し、バックアップファイルの名前を指定します。たとえば、次のように指定します。

設定変更レコードを復元する
  1. クラスタにあるすべてのブローカをシャットダウンします。
  2. 次のコマンドを使用し、マスターブローカの設定変更レコードをバックアップファイルから復元します。
  3. imqbrokerd -restore mybackuplog

  4. 新しい名前やポート番号をマスターブローカに割り当てる場合は、クラスタ設定ファイルの imq.cluster.brokerlist プロパティーと imq.cluster.masterbroker プロパティーを相応に更新します。
  5. クラスタにあるすべてのブローカを再起動します。

マスターブローカを使用できない場合

クラスタのすべてのブローカでは、持続的な操作を実行するためにマスターブローカが必要になるので、マスターブローカを使用できない場合、クラスタのすべてのブローカでは次の imqcmd サブコマンドがエラーになります。

自動作成の物理的送信先および一時的送信先は影響されません。

マスターブローカがない場合、永続サブスクライバを作成したり、永続サブスクリプションから登録解除しようとするすべてのクライアントアプリケーションではエラーが発生します。ただしクライアントは、既存の永続サブスクリプションを指定したり、既存の永続サブスクリプションとやり取りしたりすることはできます。



前へ      目次      索引      次へ     


Part No: 819-3560.   Copyright 2005 Sun Microsystems, Inc. All rights reserved.