Sun Java System Message Queue 3 2005Q4 管理ガイド |
第 5 章
ブローカの管理この章では、imqcmd ユーティリティーを使用して、ブローカおよびそのサービスを管理する方法について説明します。この章では、次の節について説明します。
この章ではブローカの管理に関連したすべてのトピックは扱いません。その他のトピックは、次の章で個別に扱っています。
- ブローカでの物理的送信先の管理。物理的送信先の作成、表示、更新、破棄の方法、およびデッドメッセージキューの使い方といったトピックの詳細は、第 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 ユーティリティーでヘルプを表示するには、-h オプションまたは -H オプションを使用し、サブコマンドは使用しません。特定のサブコマンドのヘルプは表示されません。
たとえば、次のコマンドは imqcmd に関するヘルプを表示します。
サブコマンドまたはその他のオプションに加えて、-h オプションまたは -H オプションを指定してコマンド行を入力した場合、imqcmd ユーティリティーは -h オプションまたは -H オプションのみを処理します。コマンド行のほかのすべての項目は無視されます。
製品のバージョンの表示
Message Queue の製品のバージョンを表示するには、-v オプションを使用します。たとえば、次のように指定します。
サブコマンドまたはその他のオプションに加えて、-v オプションを指定してコマンド行を入力した場合、imqcmd ユーティリティーは -v オプションのみを処理します。コマンド行のほかのすべての項目は無視されます。
ユーザー名とパスワードを指定する
それぞれの imqcmd サブコマンドはユーザーリポジトリに対して認証されるため、ユーザー名とパスワードが必要になります。ただし、ヘルプを表示するための -h または -H オプションを使用するコマンド、および製品のバージョンを表示するための -v オプションを使用するコマンドには必要ありません。
ユーザー名を指定する
管理ユーザー名を指定する場合は、-u オプションを使用します。ユーザー名を省略すると、コマンドから入力が要求されます。たとえば、次のコマンドはデフォルトのブローカに関する情報を表示します。
この章の例を読みやすくするために、デフォルトのユーザー名 admin は -u オプションの引数として示しています。本稼動環境では、カスタムユーザー名を使用します。
パスワードを指定する
パスワードは次のいずれかの方法で指定します。
これまでのバージョンの Message Queue では、-p オプションを使用して imqcmd コマンド行にパスワードを指定できました。このオプションは異論が多く、今後のバージョンでは削除される予定です。
ブローカ名とポートを指定する
imqcmd のデフォルトブローカは、ローカルホストで実行中のブローカであり、デフォルトポートは 7676 です。
リモートホストで実行中のブローカまたはデフォルト以外のポートで待機中のブローカ、あるいはその両方にコマンドを発行する場合、-b オプションを使用してブローカのホストとポートを指定する必要があります。
例
この節の例は、imqcmd の使い方を表しています。
最初の例では、localhost のポート 7676 で実行中のブローカのプロパティーを一覧表示しているため、-b オプションは不要です。このコマンドはデフォルトの管理ユーザー名 (admin) を使用してパスワードを省略しています。したがってコマンドで入力が要求されています。
次の例では、ホスト myserver のポート 1564 で実行中のブローカのプロパティーを一覧表示しています。ユーザー名は aladdin です。このコマンドが機能するためには、ユーザーリポジトリを更新して、aladdin を admin グループに追加する必要がある場合があります。
次の例では、localhost のポート 7676 で実行中のブローカのプロパティーを一覧表示しています。このコマンドの最初のタイムアウトは 20 秒に設定され、タイムアウト後の再試行回数が 7 回に設定されています。ユーザーのパスワードは、コマンドを呼び出したときに現在のディレクトリにある myPassfile と呼ばれるパスワードファイル内に格納されています。
ブローカとの安全な接続を確立するために、次の例では -secure オプションを指定しています。ssladmin サービスが設定および起動されていれば、imqcmd は -secure オプションを指定したときに ssladmin サービスを使用します。
ブローカ情報の表示シングルブローカに関する情報のクエリーと表示を行うには、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 のサブコマンドを使用して、ブローカの状態を制御できます。
ブローカを停止する
ブローカを停止すると、ブローカの接続サービススレッドが中断されるため、ブローカは接続ポートでの待機をやめます。その結果、ブローカはそれ以上、新しい接続の受け入れ、メッセージの受信、メッセージのディスパッチは行いません。
ただし、ブローカを停止しても admin 接続サービスは中断されないため、ブローカへのメッセージを制限するために必要な管理タスクは実行できます。ブローカを停止しても、cluster 接続サービスは継続されます。ただし、クラスタ内のメッセージ配信は、クラスタ内のブローカによって実行される配信機能によって異なります。そのため、クラスタ内のブローカを停止すると、一部のメッセージトラフィックが遅くなる可能性があります。
次に示すのは、pause bkr サブコマンドの構文です。
このコマンドは、デフォルトのブローカ、または指定したホストとポートのブローカを停止します。
次のコマンドでは、myhost のポート 1588 で実行しているブローカが停止されます。
個々の接続サービス、および個々の物理的送信先も停止できます。詳細は、「接続サービスの停止および再開」と「物理的送信先の停止と再開」を参照してください。
ブローカを再開する
ブローカを再開すると、ブローカのサービススレッドが再び有効になり、ブローカはポートでの待機を再開します。
次に示すのは、resume bkr サブコマンドの構文です。
このサブコマンドは、デフォルトのブローカ、または指定したホストとポートのブローカを再開します。
次のコマンドでは、localhost のポート 7676 で実行していたブローカが再開されます。
ブローカのシャットダウンと再起動ブローカをシャットダウンすると、正常にブローカプロセスを終了することができます。ブローカは新しい接続やメッセージを受け入れるのをやめて、既存のメッセージの配信を完了し、ブローカプロセスを終了します。
次に示すのは、shutdown bkr サブコマンドの構文です。
このサブコマンドは、デフォルトのブローカ、または指定したホストとポートのブローカをシャットダウンします。
次のコマンドでは、ctrlsrv のポート 1572 で実行していたブローカがシャットダウンされます。
restart bkr サブコマンドを使用して、ブローカをシャットダウンし、再起動します。次に示すのは、restart bkr サブコマンドの構文です。
このサブコマンドは、最初にブローカを起動したときに指定されたオプションを使用して、デフォルトのブローカ、または指定されたホストとポートのブローカをシャットダウンし、再起動します。別のオプションを選択する場合は、必要なオプションを指定して、ブローカをシャットダウンしてから再起動します。
ブローカのメトリックスの表示ブローカに関するメトリックス情報を表示するには、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 に示します。表が示すように、各サービスは使用するサービスタイプ (アプリケーションクライアントの場合は 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 ベースセキュリティー)
imqcmd サブコマンドを使用して、接続サービス全体を管理するか、または特定の接続サービスを管理することができます。サブコマンドの対象が特定のサービスの場合は、-n オプションを使用して、表 5-1 の「サービス名」列に示されたいずれかの名前を指定します。
接続サービスの一覧表示
ブローカで使用できる接続サービスを一覧表示するには、list svc サブコマンドを使用します。
次に示すのは、list svc サブコマンドの構文です。
このサブコマンドは、デフォルトのブローカ、または指定したホストとポートのブローカのすべての接続サービスを一覧表示します。
次のコマンドでは、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 サブコマンドの構文です。
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 サブコマンドの構文です。
このサブコマンドは、デフォルトのブローカ、または指定したホストとポートのブローカで実行している特定のサービスを停止します。たとえば、次のコマンドは、デフォルトのブローカで実行している httpjms サービスを停止します。
サービスを停止すると、次のような結果になります。
サービスを再開するには、resume svc サブコマンドを使用します。
次に示すのは、resume svc サブコマンドの構文です。
このサブコマンドは、デフォルトのブローカ、または指定したホストとポートのブローカで実行している特定のサービスを再開します。
接続情報の入手imqcmd ユーティリティーには、接続に関する情報を一覧表示し取得するために使用できるサブコマンドが含まれています。
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 サブコマンドから返される情報を使用して、破棄する必要がある永続サブスクリプションやメッセージを消去する必要がある永続サブスクリプションを識別することができます。
purge dur サブコマンドは、指定されたクライアント識別子を持つ特定の永続サブスクリプションのすべてのメッセージを消去します。次に示すのは、purge dur サブコマンドの構文です。
destroy dur サブコマンドは、指定されたクライアント識別子を持つ特定の永続サブスクリプションを破棄します。次に示すのは、destroy dur サブコマンドの構文です。
たとえば、次のコマンドは、永続サブスクリプション myDurable と clientID myClientID を破棄します。
トランザクションの管理クライアントアプリケーションによって開始されたトランザクションはすべてブローカによって記録されます。これらは、分散トランザクション (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-2 を参照)、ブローカの起動時に、PREPARED 状態のトランザクションを手動でコミット、またはロールバックする必要があります。
list サブコマンドは、トランザクションで生成されたメッセージの数とトランザクションで通知されたメッセージの数 (#Msgs/#Acks) も表示します。トランザクションがコミットされるまで、これらのメッセージは配信されず、通知は処理されません。
query サブコマンドを使用すると、同じ情報のほかに、クライアント ID、接続識別子、分散トランザクション ID (XID) などの多数の追加された値を確認できます。次に示すのは、query txn サブコマンドの構文です。
たとえば、次の例では以下のような出力が生成されます。
分散トランザクションをコミット、またはロールバックするには、commit サブコマンドと rollback サブコマンドを使用します。前述したように、PREPARED 状態のトランザクションだけをコミット、またはロールバックできます。
次に示すのは、commit サブコマンドの構文です。
たとえば、次のように指定します。
次に示すのは、rollback サブコマンドの構文です。
詳細は、表 14-2 の imq.transaction.autorollback プロパティーを参照してください。
ブローカの起動時に、PREPARED 状態のトランザクションが自動的にロールバックされるように、ブローカを設定することも可能です。