Sun Java System Message Queue 3 2005Q1 管理ガイド |
第 5 章
ブローカの管理この章では、ブローカとブローカのサービスの管理に関する基本的なタスクを実行する方法について説明します。この章では、次の節について説明します。
この章ではブローカの管理に関連したすべてのトピックは扱いません。主なトピックは、次の章で個別に扱っています。
- ブローカでの物理的送信先の管理。物理的送信先の作成、表示、更新、破棄の方法、およびデッドメッセージキューの使い方といったトピックの詳細は、第 6 章「物理的送信先の管理」を参照してください。
- ブローカのセキュリティ設定。ユーザー認証、アクセス制御、暗号化、パスワードファイル、監査ロギングなどのトピックの詳細は、第 7 章「セキュリティの管理」を参照してください。
前提条件ブローカの管理には、imqcmd コマンドと imqusermgr コマンドを使用します。ブローカを管理する前に、次の作業が必要です。
- imqbrokerd コマンドを使用して、ブローカを起動する。ブローカを実行するまで、ほかのコマンドは使用できません。
- Message Queue 管理ユーザーを設定するか、デフォルトアカウントを使用するかを決定する。管理コマンドを使用する場合、ユーザー名とパスワードを指定する必要があります。
Message Queue をインストールすると、デフォルトの単層ファイルのユーザーリポジトリがインストールされます。リポジトリは 2 つのデフォルトエントリである、管理ユーザーとゲストユーザーと一緒に出荷されます。Message Queue をテストする場合、デフォルトのユーザー名とパスワード (admin/admin) を使用して、imqcmd ユーティリティを実行できます。
運用システムをセットアップする場合は、管理ユーザーの認証および認可を設定する必要があります。ファイルベースのユーザーリポジトリの設定、または LDAP ディレクトリサーバーを使用する設定の詳細は、第 7 章「セキュリティの管理」を参照してください。本稼働環境では、セキュリティ上の理由によりデフォルト以外のユーザー名とパスワードを使用することをお勧めします。
- ブローカとの安全なコネクションを使用する場合、ターゲットブローカインスタンスで ssladmin サービスを設定し有効化します。詳細は、「SSL ベースのサービスの操作」を参照してください。
imqcmd コマンドユーティリティの使用imqcmd コマンドユーティリティを使用すると、ブローカとブローカのサービスを管理できます。
imqcmd コマンドの構文、サブコマンド、オプションの詳細は、第 13 章「コマンドのリファレンス」を参照してください。物理的送信先の管理の詳細は、第 15 章「物理的送信先のプロパティのリファレンス」で個別に扱っています。
ユーザー名とパスワードを指定する
それぞれの imqcmd コマンドはユーザーリポジトリに対して認証されるため、ユーザー名とパスワードが必要になります。次のような例外があります。
ユーザー名を指定する
管理ユーザー名を指定する場合は、-u オプションを使用します。ユーザー名を省略すると、コマンドから入力が要求されます。
この章の例を読みやすくするために、デフォルトのユーザー名 admin は -u オプションの引数として示しています。本稼動環境では、カスタムユーザー名を使用します。
パスワードを指定する
パスワードは次のいずれかの方法で指定します。
これまでのバージョンの Message Queue では、-p オプションを使用してコマンド行にパスワードを指定できました。このオプションは推奨されないため、今後のバージョンでは削除される予定です。
ブローカ名とポートを指定する
imqcmd のデフォルトブローカは、ローカルホストで実行中のブローカであり、デフォルトポートは 7676 です。
リモートホストで実行中のブローカ、またはデフォルト以外のポート、あるいはその両方にコマンドを発行する場合、-b オプションを使用してブローカのホストとポートを指定する必要があります。
例
この節の例は、imqcmd の使い方を表しています。
最初の例では、localhost のポート 7676 で実行中のブローカのプロパティを一覧表示しているため、-b オプションは不要です。このコマンドはデフォルトの管理ユーザー名 (admin) を使用してパスワードを省略しています。したがってコマンドで入力が要求されています。
次の例では、myserver のポート 1564 で実行中のブローカのプロパティを一覧表示しています。ユーザー名は aladdin です。このコマンドは、ユーザー名 aladdin が admin グループに割り当てられるようにユーザーリポジトリの更新を要求します。
次の例では、localhost のポート 7676 で実行中のブローカのプロパティを一覧表示しています。このコマンドの最初のタイムアウトは 20 秒に設定され、タイムアウト後の再試行回数が 7 回に設定されています。ユーザーのパスワードは、コマンドを呼び出したときに現在のディレクトリにある myPassfile と呼ばれるパスワードファイル内に格納されています。
ブローカとの安全なコネクションを確立するために、次の例では -secure オプションを指定しています。ssladmin サービスが設定および起動されていれば、imqcmd は -secure オプションを指定したときに ssladmin サービスを使用します。
ヘルプの表示imqcmd コマンドユーティリティでヘルプを表示するには、 -h オプションまたは -H オプションを使用し、サブコマンドは使用しません。特定のサブコマンドのヘルプは表示されません。
たとえば、次のコマンドは imqcmd に関するヘルプを表示します。
サブコマンドまたはその他のオプションに加えて、-h オプションまたは -H オプションを指定してコマンド行を入力した場合、コマンドユーティリティは -h オプションまたは -H オプションのみを処理します。コマンド行のほかのすべての項目は無視されます。
製品のバージョンの表示Message Queue の製品のバージョンを表示するには、-v オプションを使用します。たとえば、次のように指定します。
サブコマンドまたはその他のオプションに加えて、-v オプションを指定してコマンド行を入力した場合、コマンドユーティリティは -v オプションのみを処理します。コマンド行のほかのすべての項目は無視されます。
ブローカ情報の表示シングルブローカに関する情報のクエリーと表示を行うには、query bkr サブコマンドを使用します。
次に示すのは、query bkr サブコマンドの構文です。
このサブコマンドは、デフォルトのブローカ、または指定したホストとポートのブローカの現在のプロパティの設定を一覧表示します。また、特定のブローカに接続している実行中のブローカ (マルチブローカクラスタ内のブローカ) のリストも表示されます。
たとえば、次のように指定します。
パスワードの入力を要求した後、コマンドは次のような出力を生成します。
ブローカのプロパティの更新次のブローカのプロパティを更新する場合は、update bkr サブコマンドを使用します。
- imq.autocreate.queue
- imq.autocreate.topic
- imq.autocreate.queue.maxNumActiveConsumers
- imq.autocreate.queue.maxNumBackupConsumers
- imq.cluster.url
- imq.destination.DMQ.truncateBody
- imq.destination.logDeadMsgs
- imq.log.level
- imq.log.file.rolloversecs
- imq.log.file.rolloverbytes
- imq.system.max_count
- imq.system.max_size
- imq.message.max_size
- imq.portmapper.port
次に示すのは、update bkr サブコマンドの構文です。
このサブコマンドは、デフォルトのブローカ、または指定したホストとポートのブローカに対して、指定した属性を変更します。
プロパティは、第 14 章「ブローカのプロパティのリファレンス」で説明しています。
たとえば、次のコマンドはキュー送信先の自動作成を無効にします。
imqcmd update bkr -o "imq.autocreate.queue=false" -u admin
ブローカの停止および再開ブローカの起動後に、imqcmd のサブコマンドを使用して、ブローカの状態を制御できます。
ブローカを停止する
ブローカを停止すると、ブローカのコネクションサービススレッドが中断されるため、ブローカはコネクションポートでの待機をやめます。その結果、ブローカはそれ以上、新しいコネクションの受け入れ、メッセージの受信、メッセージのディスパッチは行いません。
ただし、ブローカを停止しても管理コネクションサービスは中断されないため、ブローカへのメッセージを制限するために必要な管理タスクは実行できます。たとえば、特定の物理的送信先にメッセージが集中した場合には、ブローカを停止し、問題の修復に役立つ次のいずれかを実行できます。
ブローカを停止しても、cluster コネクションサービスは継続されます。ただし、クラスタ内のメッセージ配信は、クラスタ内のブローカによって実行される配信機能によって異なります。
次に示すのは、pause bkr サブコマンドの構文です。
このコマンドは、デフォルトのブローカ、または指定したホストとポートのブローカを停止します。
次のコマンドでは、myhost のポート 1588 で実行しているブローカが停止されます。
個々のコネクションサービス、および個々の物理的送信先も停止できます。詳細は、「コネクションサービスの停止および再開」と「物理的送信先の停止と再開」を参照してください。
ブローカを再開する
ブローカを再開すると、ブローカのサービススレッドが再び有効になり、ブローカはポートでの待機を再開します。
次に示すのは、resume bkr サブコマンドの構文です。
このサブコマンドは、デフォルトのブローカ、または指定したホストとポートのブローカを再開します。
次のコマンドでは、localhost のポート 7676 で実行していたブローカが再開されます。
ブローカのシャットダウンと再起動ブローカをシャットダウンすると、正常にブローカプロセスを終了することができます。ブローカは新しいコネクションやメッセージを受け入れるのをやめて、既存のメッセージの配信を完了し、ブローカプロセスを終了します。
次に示すのは、shutdown bkr サブコマンドの構文です。
このサブコマンドは、デフォルトのブローカ、または指定したホストとポートのブローカをシャットダウンします。
次のコマンドでは、ctrlsrv のポート 1572 で実行していたブローカがシャットダウンされます。
ブローカをシャットダウンし再起動できます。次に示すのは、restart bkr サブコマンドの構文です。
このサブコマンドは、最初にブローカを起動したときに指定されたオプションを使用して、デフォルトのブローカ、または指定されたホストとポートのブローカをシャットダウンし、再起動します。別のオプションを選択する場合は、必要なオプションを指定して、ブローカをシャットダウンしてから再起動します。
次のコマンドでは、localhost のポート 7676 で実行していたブローカが再起動されます。
ブローカのメトリックスの表示ブローカに関するメトリックス情報を表示するには、metrics bkr サブコマンドを使用します。
次に示すのは、metrics bkr サブコマンドの構文です。
このサブコマンドは、デフォルトのブローカ、または指定したホストとポートのブローカに対して、ブローカのメトリックスを表示します。
表示するメトリックスのタイプを次の中から指定するには、-m オプションを使用します。
メトリックスを表示する間隔を秒単位で指定するには、-int オプションを使用します。デフォルトは 5 秒です。
出力で表示するサンプル数を指定するには、-msp オプションを使用します。デフォルトは無制限 (無限) です。
たとえば、ブローカに入力するメッセージフローとブローカから出力されるメッセージのフローレートを10 秒間隔で取得するには、次のコマンドを使用します。
このコマンドでは、次のような情報が出力されます。
--------------------------------------------------------
Msgs/sec Msg Bytes/sec Pkts/sec Pkt Bytes/sec
In Out In Out In Out In Out
--------------------------------------------------------
0 0 27 56 0 0 38 66
10 0 7365 56 10 10 7457 1132
0 0 27 56 0 0 38 73
0 10 27 7402 10 20 1400 8459
0 0 27 56 0 0 38 73
imqcmd を使用してブローカのメトリックスをレポートする方法の詳細は、「ブローカ全体のメトリックス」を参照してください。
コネクションサービスの管理コマンドユーティリティには、次のコネクションサービス管理タスクを実行するために使用できるサブコマンドが含まれています。
ブローカは、アプリケーションクライアントと管理クライアントの両方からの通信をサポートしています。Message Queue のブローカで現在使用できるコネクションサービスを、表 5-1 に示します。「サービス名」列の値は、-n オプションでサービス名を指定するのに使用する値になります。表が示すように、各サービスは使用するサービスタイプ (アプリケーションクライアントの場合は NORMAL、管理クライアントの場合は ADMIN) と基礎となるトランスポートプロトコルに関連付けられます。
表 5-1 ブローカがサポートするコネクションサービス
サービス名
サービスタイプ
プロトコルタイプ
jms
NORMAL
tcp
ssljms (Enterprise Edition)
NORMAL
tls (SSL ベースセキュリティ)
httpjms (Enterprise Edition)
NORMAL
http
httpsjms (Enterprise Edition)
NORMAL
https (SSL ベースセキュリティ)
admin
ADMIN
tcp
ssladmin (Enterprise Edition)
ADMIN
tls (SSL ベースセキュリティ)
コネクションサービスの一覧表示
ブローカで使用できるコネクションサービスを一覧表示するには、list svc サブコマンドを使用します。
次に示すのは、list svc サブコマンドの構文です。
このサブコマンドは、デフォルトのブローカ、または指定したホストとポートのブローカのすべてのコネクションサービスを一覧表示します。
サブコマンドは、コマンド行で次のように使用します。
たとえば、次のコマンドでは、myServer ホストのポート 6565 で実行しているブローカで使用可能なサービスが一覧表示されます。
次のコマンドでは、localhost のポート 7676 で実行しているブローカのすべてのサービスが一覧表示されます。
このコマンドでは、次のような情報が出力されます。
------------------------------------------------
Service Name Port Number Service State
------------------------------------------------
admin 41844 (dynamic) RUNNING
httpjms - UNKNOWN
httpsjms - UNKNOWN
jms 41843 (dynamic) RUNNING
ssladmin dynamic UNKNOWN
ssljms dynamic UNKNOWN
コネクションサービス情報の表示
シングルサービスに関する情報のクエリーと表示を行うには、query サブコマンドを使用します。
次に示すのは、query svc サブコマンドの構文です。
このサブコマンドは、デフォルトのブローカ、または指定したホストとポートのブローカで実行している特定のサービスに関する情報を一覧表示します。
たとえば、次のように指定します。
パスワードの入力を要求した後、コマンドは次のような出力を生成します。
Service Name jms
Service State RUNNING
Port Number 60920 (dynamic)
Current Number of Allocated Threads 0
Current Number of Connections 0
Min Number of Threads 10
Max Number of Threads 1000
コネクションサービスのプロパティの更新
表 5-2 に示す 1 つ以上のサービスのプロパティの値を変更するには、update サブコマンドを使用します。
表 5-2 imqcmd によって更新されるコネクションサービスプロパティ
プロパティ
説明
port
更新するサービスに割り当てられるポートです (httpjms または httpsjms には適用しない)。値 0 は、ポートマッパーによって動的に割り当てられるポートを示しています。
minThreads
サービスに割り当てられるスレッドの最小数
maxThreads
サービスに割り当てられるスレッドの最大数
次に示すのは、update サブコマンドの構文です。
このサブコマンドは、デフォルトのブローカ、または指定したホストとポートのブローカで実行している特定のサービスの特定の属性を更新します。サービスの属性については、「コネクションサービスのプロパティ」を参照してください。
次のコマンドでは、jms サービスに割り当てられたスレッドの最小数が 20 に変更されます。
コネクションサービスのメトリックスの表示
シングルサービスに関するメトリックス情報を表示するには、metrics サブコマンドを使用します。
次に示すのは、metrics サブコマンドの構文です。
このサブコマンドは、デフォルトのブローカ、または指定したホストとポートのブローカで実行している特定のサービスのメトリックスを表示します。
表示するメトリックスのタイプを次の中から指定するには、-m オプションを使用します。
メトリックスを表示する間隔を秒単位で指定するには、-int オプションを使用します。デフォルトは 5 秒です。
出力で表示するサンプル数を指定するには、-msp オプションを使用します。デフォルトは無制限です (無限)。
たとえば、jms コネクションサービスによって処理されたメッセージとパケットの累計数を取得するには、次のコマンドを使用します。
パスワードの入力を要求した後、コマンドは次のような出力を生成します。
-------------------------------------------------
Msgs Msg Bytes Pkts Pkt Bytes
In Out In Out In Out In Out
-------------------------------------------------
164 100 120704 73600 282 383 135967 102127
657 100 483552 73600 775 876 498815 149948
imqcmd を使用してコネクションサービスのメトリックスをレポートする方法の詳細は、「コネクションサービスのメトリックス」を参照してください。
コネクションサービスの停止および再開
管理サービス (停止することが禁止されているサービス) 以外のサービスを停止するには、pause svc サブコマンドと resume svc サブコマンドを使用します。
次に示すのは、pause svc サブコマンドの構文です。
このサブコマンドは、デフォルトのブローカ、または指定したホストとポートのブローカで実行している特定のサービスを停止します。admin サービスは停止できません。
次のようなコマンド行を使用します。
サービスを停止すると、次のような結果になります。
- ブローカは、停止したサービスでの新たなクライアントコネクションの受け入れをやめる。Message Queue クライアントが新しいコネクションを開こうとすると、例外が発生する。
- 停止したサービスの既存のコネクションはすべて維持されるが、ブローカはサービスが再開されるまでこれらのコネクションのすべてのメッセージ処理を中断する。たとえば、クライアントがメッセージを送信しようとしても、サービスが再開されるまでは、send() メソッドがそれを阻止する。
- すでにブローカが受信済みのメッセージのメッセージ配信状態は維持される。たとえば、トランザクションは中断されず、サービスが再開された時点でメッセージ配信も再開される。
サービスを再開するには、resume svc サブコマンドを使用します。
次に示すのは、resume svc サブコマンドの構文です。
このサブコマンドは、デフォルトのブローカ、または指定したホストとポートのブローカで実行している特定のサービスを再開します。
次のようなコマンド行を使用します。
コネクション情報の入手コマンドユーティリティには、コネクションに関する情報を一覧表示し取得するために使用できるサブコマンドが含まれています。
list cxn サブコマンドは、指定されたサービス名のすべてのコネクションを一覧表示します。次に示すのは、list cxn サブコマンドの構文です。
このサブコマンドは、デフォルトのブローカ、または指定したホストとポートのブローカの指定したサービス名のコネクションをすべて一覧表示します。サービス名を指定しない場合は、すべてのコネクションが一覧表示されます。
たとえば、次のように指定します。
パスワードの入力を要求した後、コマンドは次のような出力を生成します。
Listing all the connections on the broker specified by:
-----------------------------------
Host Primary Port
------------------------------------
localhost 7676
---------------------------------------------------------------------------
Connection ID User Service Producers Consumers Host
---------------------------------------------------------------------------
1964412264455443200 guest jms 0 1 127.0.0.1
1964412264493829311 admin admin 1 1 127.0.0.1
Successfully listed connections.
シングルコネクションサービスに関する情報のクエリーと表示を行うには、query サブコマンドを使用します。
このサブコマンドは、デフォルトのブローカ、または指定したホストとポートのブローカの指定したコネクションに関する情報を表示します。
たとえば、次のように指定します。
パスワードの入力を要求した後、コマンドは次のような出力を生成します。
Connection ID 421085509902214374
User guest
Service jms
Producers 0
Consumers 1
Host 111.22.333.444
Port 60953
Client ID
Client Platform
永続サブスクリプションの管理ブローカの永続サブスクリプションを管理するには、imqcmd のサブコマンドを使用する必要があります。永続サブスクリプションとは、クライアントによって、永続的であると登録されたトピックのサブスクリプションのことです。このサブスクリプションには固有の識別情報があり、コンシューマがアクティブになっていないときでも、サブスクリプションのメッセージを保持するブローカが必要となります。通常、ブローカはメッセージの有効期限が切れたときだけ、保持していた永続サブスクライバのメッセージを削除します。
指定された物理的送信先の永続サブスクリプションを一覧表示するには、list dur サブコマンドを使用します。次に示すのは、list dur サブコマンドの構文です。
たとえば、次のコマンドはローカルホストのデフォルトポートのブローカを使用する、トピック SPQuotes のすべての永続サブスクリプションを一覧表示します。
list dur サブコマンドでは、トピックの永続サブスクリプションごとに、永続サブスクリプションの名前、ユーザーのクライアント ID、このトピックのキューに入っているメッセージの数、および永続サブスクリプションの状態 (アクティブまたは非アクティブ) を返します。たとえば、次のように指定します。
Name Client ID Number of Durable Sub
Messages State
----------------------------------------------------------------
myDurable myClientID 1 INACTIVE
list dur サブコマンドから返される情報を使用して、破棄する必要がある永続サブスクリプションやメッセージをパージする必要がある永続サブスクリプションを識別することができます。
destroy dur サブコマンドは、指定されたクライアント識別子を持つ特定の永続サブスクリプションを破棄します。次に示すのは、destroy dur サブコマンドの構文です。
サブスクリプションを識別するには、サブスクリプションの名前とクライアント ID を使用します。たとえば、次のように指定します。
purge dur サブコマンドは、指定されたクライアント識別子を持つ特定の永続サブスクリプションのすべてのメッセージをパージします。次に示すのは、purge dur サブコマンドの構文です。
トランザクションの管理クライアントアプリケーションによって開始されたトランザクションはすべてブローカによって記録されます。これらは、分散トランザクション (XA リソース) マネージャによって管理される Message Queue の単純なトランザクション、または分散トランザクションです。
各トランザクションには、Message Queue トランザクション ID が付けられています。これは、ブローカのトランザクションを一意に識別するための 64 ビットの数字です。また、分散トランザクションには、分散トランザクションマネージャによって割り当てられる最大 128 バイトの分散トランザクション ID (XID) が付けられます。Message Queue は、Message Queue トランザクション ID と XID の関連付けを保持します。
分散トランザクションの場合、障害が発生すると、トランザクションがコミットされずに PREPARED 状態のままになる可能性があります。このため、管理者は監視を行い、PREPARED 状態のトランザクションをロールバックするか、またはコミットする必要があります。
ブローカが追跡するすべてのトランザクションを一覧表示するには、list txn コマンドを使用します。次に示すのは、list tx サブコマンドの構文です。
たとえば、次のコマンドでは、ブローカのすべてのトランザクションが一覧表示されます。
トランザクションごとに、list サブコマンドは、トランザクション ID、状態、ユーザー名、メッセージまたは通知の数、および作成時間を返します。たとえば、次のように指定します。
---------------------------------------------------------------
Transaction ID State User name # Msgs/ Creation time
# Acks
---------------------------------------------------------------
64248349708800 PREPARED guest 4/0 1/30/02 10:08:31 AM
64248371287808 PREPARED guest 0/4 1/30/02 10:09:55 AM
このコマンドを使用すると、ブローカ内のローカルと分散の両方のトランザクションがすべて表示されます。PREPARED 状態のトランザクションだけをコミット、またはロールバックすることができます。これを実行するのは、障害の発生でトランザクションが PREPARED 状態になり、分散トランザクションマネージャによってコミットされるプロセスになっていないことがわかっている場合だけです。
たとえば、ブローカの自動ロールバックプロパティを false に設定した場合 (表 14-3 を参照)、ブローカの起動時に、PREPARED 状態のトランザクションを手動でコミット、またはロールバックする必要があります。
list サブコマンドは、トランザクションで生成されたメッセージの数とトランザクションで通知されたメッセージの数 (#Msgs/#Acks) も表示します。トランザクションがコミットされるまで、これらのメッセージは配信されず、通知は処理されません。
query サブコマンドを使用すると、同じ情報のほかに、クライアント ID、コネクション識別子、分散トランザクション ID (XID) などの多数の追加された値を確認できます。次に示すのは、query txn サブコマンドの構文です。
たとえば、次の例では以下のような出力が生成されます。
これはコマンドにより生成された出力です。
Client ID
Connection guest@192.18.116.219:62209->jms:62195
Creation time 1/30/02 10:08:31 AM
Number of acknowledgments 0
Number of messages 4
State PREPARED
Transaction ID 64248349708800
User name guest
XID
6469706F6C7369646577696E6465723130313234313431313030373230
分散トランザクションをコミット、またはロールバックするには、commit サブコマンドと rollback サブコマンドを使用します。前述したように、PREPARED 状態のトランザクションだけをコミット、またはロールバックできます。
次に示すのは、commit サブコマンドの構文です。
たとえば、次のように指定します。
ブローカの起動時に、PREPARED 状態のトランザクションが自動的にロールバックされるように、ブローカを設定することも可能です。
次に示すのは、rollback サブコマンドの構文です。
詳細は、表 14-3 の imq.transaction.autorollback プロパティを参照してください。