ページの先頭行へ戻る
Interstage Application Server/Interstage Web Server Express Java EE運用ガイド
FUJITSU Software

4.17.2 メッセージブローカの運用

ここでは、以下について説明します。

メッセージブローカの起動

JMSクライアントアプリケーションが物理格納先にメッセージを送受信する場合、物理格納先を管理しているメッセージブローカを事前に起動する必要があります。

メッセージブローカは、以下の方法で起動します。

コマンドによる起動

imqbrokerdコマンドを使用して、メッセージブローカを起動します。詳細については、「リファレンスマニュアル(コマンド編)」の「Java EE運用コマンド」-「imqbrokerd」を参照してください。

imqbrokerd -name メッセージブローカ名 -port ポート番号

ポイント

imqbrokerdコマンド実行後、コマンドプロンプトは復帰しません。


サービス化による起動

メッセージブローカは、通常コマンドで起動する必要がありますが、オペレーティングシステム起動時に自動起動する運用を行う場合、以下の手順でサービス化することができます。


登録

imqsvcadmin installサブコマンドを実行して、サービスに登録します。メッセージブローカがサービス名「Interstage Message Queue Broker」としてサービスに登録されます。コマンドの詳細については、「リファレンスマニュアル(コマンド編)」の「Java EE運用コマンド」-「imqsvcadmin」-「installサブコマンド」を参照してください。

imqsvcadmin install -args メッセージブローカの起動引数

メッセージブローカのインスタンス名を「test」、ポート番号を「37676」に設定してサービス化する場合は、以下のようにimqsvcadminコマンドを実行します。

imqsvcadmin install -args "-name test -port 37676"
解除

imqsvcadmin removeサブコマンドを実行して、サービス登録を解除します。サービスの削除実行時にメッセージブローカが起動中だった場合、メッセージブローカの停止後にサービスから削除されます。コマンドの詳細については、「リファレンスマニュアル(コマンド編)」の「Java EE運用コマンド」-「imqsvcadmin」-「removeサブコマンド」を参照してください。

imqsvcadmin remove

注意

  • サービス化できるメッセージブローカは、1つです。

  • サービス登録時に指定した情報は、変更できません。変更する場合は、いったんサービスを削除してから、新しい情報を使用して登録してください。

  • サービスのログオンアカウントを設定する場合は、管理者権限を持つアカウントを設定してください。

(RHEL5/RHEL6)

登録

本作業は、rootユーザで実施してください。

  1. RCプロシジャの編集

    サービス化のため、RCプロシジャ("ijmq")が、以下のディレクトリに提供されています。

    格納先

    /opt/FJSVisjee/imq/etc/init.d

    ijmqファイルを、任意の場所(以下の例では/workディレクトリ)に複写します。

    cp /opt/FJSVisjee/imq/etc/init.d/ijmq /work

    複写後、ijmqファイルの以下の項目を編集します。設定値は、ダブルクォーテーション("")で囲んで設定してください。

    BROKER_PORT

    サービス化するメッセージブローカプロセスが使用するポート番号です。
    ここで設定した値は、メッセージブローカのインスタンス名としても採用されます。

    BROKER_OPT

    メッセージブローカプロセスに設定するメッセージブローカオプションのリストです。
    複数指定する場合は、オプションを半角の空白で区切ってください。

    VM_ARGS

    メッセージブローカプロセス起動時にJVMに渡すVMオプションのリストです。
    複数指定する場合は、オプションを半角の空白で区切ってください。

    注意

    RCプロシジャの編集について

    上記以外の項目は、編集しないでください。RCプロシジャが正しく動作しない可能性があります。

    ポート番号の設定について

    ポート番号には、システム上のアプリケーションを含むすべてのサービスにおいて、それぞれ異なるポート番号を設定する必要があります。以下の値を設定しないでください。

    ・システム内の他のサービス、システム上のアプリケーションが使用するポート番号
    ・システムが動的に割り当てる領域のポート番号(エフェメラルポート)

    ポート番号の設定については、「システム設計ガイド」の「ポート番号」を参照してください。

    以下のように設定します。

    #!/bin/sh
    #
    # ijmq:         Interstage Application Server
    #
    # Version:      @(#) /etc/rc.d/init.d/ijmq 1.0
    #
    # Author:       FUJITSU LIMITED
    #
    # chkconfig: 2345 97 3
    # description: Interstage Application Server
    # processname: imqbrokerd
    
    # set broker port
    BROKER_PORT="27676"
    BROKER_OPT="-Dimq.system.max_count=1 -Dimq.system.max_size=1k"
    VM_ARGS="-Xmx256m"
  2. RCプロシジャの格納

    1.で作成したファイルのパーミッションを「0500」に変更し、/etc/init.dに格納します。複数のRCプロシジャの作成/登録を行う場合は、RCプロシジャのファイル名を変更して登録してください。

    chmod 0500 /work/ijmq
    mv /work/ijmq /etc/init.d/ijmq01
  3. サービスの登録


    /etc/rc0.d、/etc/rc2.dに、シンボリックリンクを作成します。

    ln -s /etc/init.d/ijmq01 /etc/rc0.d/K03ijmq01
    ln -s /etc/init.d/ijmq01 /etc/rc2.d/S97ijmq01


    chkconfigコマンドを使用してサービスを登録します。

    /sbin/chkconfig --add ijmq01
解除

本作業は、rootユーザで実施してください。

  1. サービスの停止

    サービスが起動している場合は、停止します。

    /etc/init.d/ijmq01 stop
  2. サービスの登録解除


    /etc/rc0.d、/etc/rc2.dに、作成したシンボリックリンクを削除します。

    rm /etc/rc0.d/K03ijmq01
    rm /etc/rc2.d/S97ijmq01


    chkconfigコマンドを使用してサービスの登録を解除します。

    /sbin/chkconfig --del ijmq01
  3. RCプロシジャの削除

    /etc/init.dに格納したRCプロシジャを、別ディレクトリに退避/削除します。

注意

  • 登録したサービスは、Interstageのアンインストール時に削除されません。アンインストール後に不要となったサービスは、必ず削除してください。

  • RCプロシジャは、IJServerクラスタのバックアップ・リストアの対象になりません。バックアップ時には、別途、登録したRCプロシジャファイルのバックアップを行ってください。また、リストア時には、バックアップしたRCプロシジャの登録作業から再度実行してください。

(RHEL7)

登録

本作業は、rootユーザで実施してください。

  1. unitファイルの編集

    サービス化のため、unitファイル("FJSVijmq.service")が、以下のディレクトリに提供されています。

    格納先

    /opt/FJSVisjee/imq/etc/systemd/system/FJSVijmq.service

    FJSVijmq.serviceファイルを、任意の場所(以下の例では/workディレクトリ)に複写します。

    cp /opt/FJSVisjee/imq/etc/systemd/system/FJSVijmq.service /work

    複写後、FJSVijmq.serviceファイルのEnvironmentオプションに設定されている以下の項目を編集します。Environmentオプションは、ダブルクォーテーション("")で囲んで設定してください。

    BROKER_PORT

    サービス化するメッセージブローカプロセスが使用するポート番号です。
    ここで設定した値は、メッセージブローカのインスタンス名としても採用されます。

    BROKER_OPT

    メッセージブローカプロセスに設定するメッセージブローカオプションのリストです。
    複数指定する場合は、オプションを半角の空白で区切ってください。

    VM_ARGS

    メッセージブローカプロセス起動時にJVMに渡すVMオプションのリストです。
    複数指定する場合は、オプションを半角の空白で区切ってください。

    注意

    unitファイルの編集について

    上記以外の項目は、編集しないでください。サービスの処理が正しく動作しない可能性があります。

    ポート番号の設定について

    ポート番号には、システム上のアプリケーションを含むすべてのサービスにおいて、それぞれ異なるポート番号を設定する必要があります。以下の値を設定しないでください。

    ・システム内の他のサービス、システム上のアプリケーションが使用するポート番号
    ・システムが動的に割り当てる領域のポート番号(エフェメラルポート)

    ポート番号の設定については、「システム設計ガイド」の「ポート番号」を参照してください。

    以下のように設定します。

    [Unit]
    Description=%p
    Wants=network-online.target
    After=network.target network-online.target rsyslog.service remote-fs.target nss-lookup.target
    Before=FJSVijdas_start.service FJSVijdas_stop.service FJSVtd_start.service FJSVtd_stop.service
    
    [Service]
    Environment="BROKER_PORT=27676"
    Environment="BROKER_OPT=-Dimq.system.max_count=1 -Dimq.system.max_size=1k"
    Environment="VM_ARGS=-Xmx256m"
    Type=forking
  2. unitファイルの格納

    1.で作成したファイルのパーミッションを「0400」に変更し、/etc/systemd/systemに格納します。

    注意

    unitファイルの作成/登録を行う場合は、unitファイルのファイル名を変更して登録してください。
    unitファイル名は、「FJSVijmq_識別子.service」とすることを推奨します。なお、識別子には、英数字だけを使用してください。

    また、複数のunitファイルを作成/登録する場合は、unitファイル名の識別子が同じにならないようにしてください。

    chmod 0400 /work/FJSVijmq.service
    mv /work/FJSVijmq.service /etc/systemd/system/FJSVijmq_sample.service
  3. サービスの登録

    systemctlコマンドを使用してサービスを登録します。

    systemctl enable FJSVijmq_sample.service
  4. サービスの起動

    systemctlコマンドを使用してサービスを起動します。

    systemctl start FJSVijmq_sample.service
再登録

一度サービス登録した後に、unitファイルを編集し再度登録する場合は、必ず以下のコマンドを実行してください。

systemctl daemon-reload
解除

本作業は、rootユーザで実施してください。

  1. サービスの停止

    サービスが起動している場合は、停止します。

    systemctl stop FJSVijmq_sample.service
  2. サービスの登録解除

    systemctlコマンドを使用してサービスの登録を解除します。

    systemctl disable FJSVijmq_sample.service
  3. unitファイルの削除

    /etc/systemd/systemに格納したunitファイルを、別ディレクトリに退避/削除します。

注意

  • 登録したサービスは、Interstageのアンインストール時に削除されません。アンインストール後に不要となったサービスは、必ず削除してください。

  • unitファイルは、IJServerクラスタのバックアップ・リストアの対象になりません。バックアップ時には、別途、登録したunitファイルのバックアップを行ってください。また、リストア時には、バックアップしたunitファイルの登録作業から再度実行してください。


メッセージブローカの起動状態の確認

imqcmd list svcサブコマンドを使用して、メッセージブローカの起動状態が確認できます。コマンドの詳細については、「リファレンスマニュアル(コマンド編)」の「Java EE運用コマンド」-「imqcmd」-「list svcサブコマンド」を参照してください。

メッセージブローカが起動している場合

「Successfully listed services.」が出力されます。

imqcmd list svc -b localhost:7676
Username: admin
Password:
Listing all the services on the broker specified by:

-------------------------
Host         Primary Port
-------------------------
localhost    7676

------------------------------------------------
Service Name    Port Number        Service State
------------------------------------------------
admin           49205 (dynamic)    RUNNING
httpjms         -                  UNKNOWN
httpsjms        -                  UNKNOWN
jms             49206 (dynamic)    RUNNING
ssladmin        dynamic            UNKNOWN
ssljms          dynamic            UNKNOWN

Successfully listed services.

メッセージブローカが停止している場合

IJMQ_C4003が出力されます。

imqcmd list svc -b localhost:7676
Username: admin
Password:
Listing all the services on the broker specified by:

-------------------------
Host         Primary Port
-------------------------
localhost    7676

2012/05/31 19:40:42 com.sun.messaging.jmq.jmsclient.ExceptionHandler throwConnectionException
警告: IJMQ_C4003: Error occurred on connection creation [localhost:7676]. - cause: java.net.ConnectException: Connection
 refused: connect
Error while connecting to the broker on host 'localhost' and port '7676'.
com.sun.messaging.jms.JMSException: IJMQ_C4003: Error occurred on connection creation [localhost:7676]. - cause: java.ne
t.ConnectException: Connection refused: connect
Please verify that there is a broker running on the specified host and port or
 use the '-b' option to specify the correct broker host and port.

Listing services failed.

メッセージブローカ起動時の注意事項

メッセージブローカの停止

imqcmd shutdown bkrサブコマンドを使用して、メッセージブローカを停止します。停止対象のメッセージブローカが動作するホスト名とポート番号を指定してください。コマンドの詳細については、「リファレンスマニュアル(コマンド編)」の「Java EE運用コマンド」-「imqcmd」-「shutdown bkrサブコマンド」を参照してください。

imqcmd shutdown bkr -b localhost:37676

メッセージブローカの一時停止

imqcmd pause bkrサブコマンドを使用して、メッセージブローカを一時停止します。メッセージブローカを一時停止すると、新しい接続の受け入れ、メッセージの受信、配信を停止できます。コマンドの詳細については、「リファレンスマニュアル(コマンド編)」の「Java EE運用コマンド」-「imqcmd」-「pause bkrサブコマンド」を参照してください。

imqcmd pause bkr -b localhost:37676

メッセージブローカの再開

imqcmd resume bkrサブコマンドを使用して、メッセージブローカを再開します。メッセージブローカを再開すると、メッセージブローカの新しい接続の受け入れ、メッセージの受信、配信が再開されます。コマンドの詳細については、「リファレンスマニュアル(コマンド編)」の「Java EE運用コマンド」-「imqcmd」-「resume bkrサブコマンド」を参照してください。

imqcmd resume bkr -b localhost:37676

管理ユーザパスワードの変更

imqcmdコマンドを使用する場合は、メッセージブローカの管理ユーザとパスワードが必要です。管理ユーザとパスワードについては、「5.7.1 ユーザとグループ」を参照してください。

メッセージブローカには、管理ユーザ「admin」が、デフォルトで作成されています。セキュリティの観点から、管理ユーザ「admin」のパスワードは必ず変更してください。
パスワードは、imqusermgr updateサブコマンドを使用して変更します。コマンドの詳細については、「リファレンスマニュアル(コマンド編)」の「Java EE運用コマンド」-「imqusermgr」-「updateサブコマンド」を参照してください。

変更手順
  1. メッセージブローカを起動します。

  2. imqusermgr updateサブコマンドを使用して管理ユーザ「admin」のパスワードを変更します。

  3. IJServerクラスタを停止します。

  4. Interstage Java EE DASサービスを停止します。

  5. メッセージブローカを停止します。

  6. メッセージブローカを起動します。

  7. Interstage Java EE DASサービスを起動します。

  8. IJServerクラスタを起動します。