[UNIX、Linux、Windows、IBM i]

amqsfhac を実行してメッセージの整合性を検査する

IBM® MQ MQI client サンプル・プログラム amqsfhacamqmfsck と並行して実行して、キュー・マネージャーが障害時にメッセージ保全性を維持することを示します。

始める前に

この検査には、4 台のサーバーが必要です。 複数インスタンス・キュー・マネージャー用に 2 つのサーバー、ファイル・システム用に 1 つのサーバー、および amqsfhacIBM MQ MQI client アプリケーションとして実行するために 1 つのサーバー。

手順に従ってください1マルチプラットフォームでの共有ファイルシステムの動作の検証マルチインスタンス キュー マネージャーのファイル システムを設定します。

本タスクについて

IBM MQ MQI client サンプル・プログラム amqsfhac は、ネットワーク・ストレージを使用するキュー・マネージャーが障害後もデータ保全性を維持していることを検査します。 走るamqsfhacと並行してamqmfsckキュー マネージャーが障害発生時にメッセージの整合性を維持することを実証します。

手順

  1. 別のサーバーにマルチインスタンスキューマネージャーを作成し、QM1手順で作成したファイルシステムを使用して、 1手順
  2. 両方のサーバー上でキュー・マネージャーを開始し、可用性を高くします。
    サーバー 1:
    strmqm -x QM1
    
    サーバー 2:
    strmqm -x QM1
    
  3. amqsfhacを実行するようにクライアント接続をセットアップします。
    1. 社内でクライアント接続をセットアップするために使用しているプラットフォーム用の「 IBM MQ インストール済み環境の検査 」の手順、または 再接続可能クライアントのサンプルにあるサンプル・スクリプトを使用してください。
    2. QM1を実行している 2 つのサーバーに対応する 2 つの IP アドレスを持つようにクライアント・チャネルを変更します。
      サンプル・スクリプトで、以下を変更します。
      DEFINE CHANNEL(CHANNEL1) CHLTYPE(CLNTCONN) TRPTYPE(TCP) +
      CONNAME('LOCALHOST(2345)') QMNAME(QM1) REPLACE
      
      変換後:
      DEFINE CHANNEL(CHANNEL1) CHLTYPE(CLNTCONN) TRPTYPE(TCP) +
      CONNAME('server1(2345),server2(2345)') QMNAME(QM1) REPLACE
      
      ここで、server1 および server2 は 2 台のサーバーのホスト名、2345 はチャネル・リスナーが listen しているポートです。 通常、このデフォルトは 1414 です。 デフォルトのリスナー構成では、1414 を使用できます。
  4. テスト用に QM1 上に 2 つのローカル・キューを作成します。
    以下の MQSC スクリプトを実行します。
    DEFINE QLOCAL(TARGETQ) REPLACE
    DEFINE QLOCAL(SIDEQ) REPLACE
    
  5. amqsfhac を使用した構成のテスト
    amqsfhac QM1 TARGETQ SIDEQ 2 2 2
    
  6. ファイル・システムの整合性を検査するのと同時に、メッセージの整合性を検査します。
    amqsfhac QM1 TARGETQ SIDEQ 10 20 0
    

    アクティブなキュー・マネージャーのインスタンスを停止すると、amqsfhac は、もう 1 つのキュー・マネージャーのインスタンスがアクティブになったときにそのインスタンスに再接続します。 次の検査で障害をリバースできるようにするため、停止したキュー・マネージャーのインスタンスを再始動します。 フェイルオーバーが発生するのに十分な時間、検査プログラムが実行を続けるようにするため、ご使用の環境での試行に基づいて、反復の数を増やす必要があるかもしれません。

結果

ステップ 6amqsfhac を実行する例を以下に示します。 この例では、テストは成功します。
Sample AMQSFHAC start
qmname = QM1
qname = TARGETQ
sidename = SIDEQ
transize = 10
iterations = 20
verbose = 0
Iteration 0
Iteration 1
Iteration 2
Iteration 3
Iteration 4
Iteration 5
Iteration 6
Resolving MQRC_CALL_INTERRUPTED
MQGET browse side tranid=14 pSideinfo->tranid=14
Resolving to committed
Iteration 7
Iteration 8
Iteration 9
Iteration 10
Iteration 11
Iteration 12
Iteration 13
Iteration 14
Iteration 15
Iteration 16
Iteration 17
Iteration 18
Iteration 19
Sample AMQSFHAC end

検査で問題が検出されると、出力で障害が報告されます。 検査を実行したときに、MQRC_CALL_INTERRUPTED によって Resolving to backed out が報告される場合があります。 これが結果に影響することはありません。 これが報告されるかどうかは、ディスクへの書き込みがネットワーク・ファイル・ストレージによって、障害発生の前にコミットされたか、後にコミットされたかに応じて異なります。