2.8.11 キューマネジャクラスタの準備
(1) リポジトリ管理の構成
リポジトリの管理をする部分をリポジトリ管理サーバ(MQR)といいます。リポジトリ管理サーバは,クラスタに参加するためのリポジトリ情報を管理します。
(2) リポジトリ管理サーバの動作
パーシャルリポジトリを持つTP1/Message Queueのリポジトリ管理サーバは,クラスタキューマネジャおよびクラスタキューの場所についてのリポジトリ情報を,フルリポジトリキューマネジャの持つフルリポジトリとMQTサーバを介して交換します。
リポジトリ情報の交換について,次の図に示します。
図2-58 リポジトリ情報の交換
![[図データ]](figure/zu021148.gif)
(3) リポジトリ管理サーバの作成
リポジトリ管理サーバは,OpenTP1システムのユーザサーバです。
mqrmakeコマンドを実行して,実行形式プログラム(mqrsupおよびmqrspp)とリポジトリ管理サーバユーザサービス定義ファイル(mqrsupおよびmqrspp)を作成してください。ただし,同一名称のユーザサービス定義ファイルがある場合,mqrmakeコマンドはリポジトリ管理サーバユーザサービス定義ファイルを作成しません。
mqrmakeコマンド実行時には,次に示す定義ファイルが必要です。詳細については,マニュアル「OpenTP1 システム定義」を参照してください。
作成したmqrsupおよびmqrsppは,次に示すディレクトリに配置されます。
- $DCDIR/aplib:実行形式プログラム
- $DCCONFPATH:リポジトリ管理サーバユーザサービス定義ファイル
また,MQAサービス定義のmqa_mqr_confオペランドにYを指定してください。
- 注意
- mqrsup,mqrsppで設定できる値を次に示します。
- mqrmakeコマンドで出力された定義ファイルのオペランド
この値は変更しないでください。
- このマニュアルに記載されたオペランド
このマニュアルに従った値で設定してください。
- 1.および2.以外のオペランド
OpenTP1のユーザサービスデフォルト定義のデフォルト値で動作するように設定してください。
- mqrsup,mqrsppのユーザサービス定義,またはユーザサービスデフォルト定義にtrnrmid定義コマンドを指定しないでください。指定した場合,mqrsup,mqrsppは起動時にKFCA00906-Eメッセージを出力して異常終了します。
(4) リポジトリ管理サーバの環境変数
リポジトリ管理機能が使用する環境変数は,リポジトリ管理サーバユーザサービス定義ファイル($DCCONFPATH/mqrsup)に定義してください。形式について,次に示します。
(a) 形式
〔putenv CLUSTSSTARTWAIT リポジトリ管理サーバ起動待ち合わせ時間〕
〔putenv CHAINFWAIT クラスタチャネル情報待ち時間〕
〔putenv DCMQA_TRACE_STATUS Y|N〕
〔putenv DCMQA_TRACE_PATH MQRトレースファイルのパス〕
〔putenv DCMQA_TRACE_FILE_NUM MQRトレースファイルの最大数〕
〔putenv DCMQA_TRACE_MAX_LEN MQRトレースファイルの最大長〕
〔putenv SPPGRPNAME mqrsppのサービスグループ名〕
(b) オペランド
- CLUSTSSTARTWAIT リポジトリ管理サーバ起動待ち合わせ時間
~<符号なし整数>((1~999999999))《180》(単位:秒)
mqrsup起動時にmqrspp起動待ち合わせをする時間を指定します。指定時間を過ぎてもmqrsppが起動されない場合,mqrsupはエラーになり起動できません。
KFCA31501-Eエラーメッセージが出力された場合はこの値を見直してください。
- CHAINFWAIT クラスタチャネル情報待ち時間
~<符号なし整数>((1~999999999))《180000》(単位:ミリ秒)
mqrsup起動時にチャネル情報を取得するまでの待ち時間を指定します。指定時間を過ぎてもチャネル情報が取得できない場合,mqrsupはエラーになり起動できません。
KFCA31501-Eエラーメッセージが出力された場合はこの値を見直してください。この値はチャネル定義の監視間隔よりも大きい値を指定してください。
- DCMQA_TRACE_STATUS Y|N
~《Y》
リポジトリ管理サーバのMQRトレース情報を出力するかどうかを指定します。
- DCMQA_TRACE_PATH MQRトレースファイルのパス
~<パス名>《$DCDIR/spool/》
MQRトレース情報を出力するMQRトレースファイルのパス名を指定します。
- DCMQA_TRACE_FILE_NUM MQRトレースファイルの最大数
~<符号なし整数>((1~99))《3》
MQRトレースファイルの最大数を指定します。
- DCMQA_TRACE_MAX_LEN MQRトレースファイルの最大長
~<符号なし整数>((10000~1000000))《1000000》(単位:バイト)
MQRトレースファイルの容量を指定します。
- SPPGRPNAME mqrsppのサービスグループ名
~<1~31文字の識別子>《mqrspp》
mqrsppのサービスグループ名を指定します。この値を変更した場合は,リポジトリ管理サーバユーザサービス定義($DCCONFPATH/mqrspp)のservice_groupオペランドに指定するサービスグループ名も同じ値に変更してください。
(c) mqrsppのサービス定義に関する注意事項
- message_buflenを次に示す計算式で算出し,ユーザサービスデフォルト定義($DCCONFPATH/usrrc)の指定値,または省略値(4096)と比較して,message_buflenの値の方が大きい場合は,mqrsppサービス定義にmessage_buflenの値を指定してください。
512+96+(クラスタセンダチャネル※の最大バッチ数×8) (単位:バイト)
- 注※
- 事前定義クラスタセンダチャネルおよび自動定義クラスタセンダチャネル。
- message_store_buflenを次に示す計算式で算出し,ユーザサービスデフォルト定義($DCCONFPATH/usrrc)での指定値,または省略値(4096)と比較して,message_store_buflenの値の方が大きい場合は,mqrsppサービス定義にmessage_store_buflenの値を指定してください。
512+96+(クラスタセンダチャネル※の最大バッチ数×8)×クラスタセンダチャネル※数 (単位:バイト)
- 注※
- 事前定義クラスタセンダチャネルおよび自動定義クラスタセンダチャネル。
(d) mqrsppにparallel_countオペランドを指定する場合の注意事項
parallel_countオペランドで指定する値,およびこのオペランドについての注意事項を次に示します。
- parallel_count 常駐プロセス数〔,最大プロセス数〕
~〈符号なし整数〉((0~128))
このサービスグループ内のサービスを並行処理するプロセス数を指定します。mqrsppサービス定義のparallel_countオペランドの常駐プロセス数に0を指定しないでください。0を指定した場合は,mqrsup起動時にKFCA31501-Eのメッセージを出力してmqrsupが異常終了します。
(5) リポジトリ管理サーバの開始方法
リポジトリ管理サーバは,OpenTP1システムのユーザサーバです。
ユーザサーバの開始方法については,マニュアル「OpenTP1 運用と操作」を参照してください。
(6) クラスタ環境のシステムキュー
クラスタ環境でシステムが使用するメッセージキューには,ユーザが定義するものがあります。また,システムキューにはユーザが登録したメッセージ以外にキューマネジャが登録するメッセージも格納される場合があります。
クラスタ環境のシステムキューについて,次の表に示します。
表2-16 クラスタ環境のシステムキュー
システムキュー名 | 用途 | キュータイプ | 定義の作成者 | キューの最大メッセージ長 | キューの最大メッセージ数 | キュー共用性 |
---|
SYSTEM.CLUSTER.TRANSMIT.QUEUE | メッセージの転送用 | ローカルキュー(クラスタ転送キュー) | ユーザ | 4088バイト※1 | 最大※2 | 共用 |
SYSTEM.CLUSTER.COMMAND.QUEUE | リポジトリ管理の受信用 | ローカルキュー | ユーザ | 4088バイト※3 | 最大※2 | 共用 |
SYSTEM.CLUSTER.REPOSITORY.QUEUE | リポジトリ管理情報格納用 | ローカルキュー | ユーザ | 4088バイト以上 | 最大※2 | 共用 |
SYSTEM.CLUSTER.REMOTE.QUEUE | クラスタ転送メッセージの登録用 | リモートキュー | キューマネジャ | - | - | - |
- (凡例)
- -:該当しません。
- 注※1
- ユーザの最大メッセージ長(転送メッセージなので転送ヘッダ長を考慮してください)と比較して,大きい方の値を指定してください。
- 注※2
- MQAサービス定義のmqaqueatl定義コマンドの-dオプションで指定する最大メッセージ登録数を最大にしても,リソース(メモリおよびディスク)が増加することはないため最大を指定してください。
- 注※3
- 次に示す計算式の値と比較して,大きい方の値を指定してください。
- 32ビット版の場合:(A×8)+44
- 64ビット版の場合:(A×16)+56
- A:事前定義クラスタセンダチャネルと自動定義クラスタセンダチャネル(リモートのクラスタレシーバチャネル)の最大バッチサイズ
システムキューで使用するリソースはメッセージを格納するキューファイルに依存するため,キューファイル作成時のmqainitコマンドのオプションには,次に示す値を指定することをお勧めします。
クラスタ環境のキューファイル作成時のオプションについて,次の表に示します。
表2-17 クラスタ環境のキューファイル作成時のオプション
キューファイル内のシステムキュー名 | mqainitコマンドのオプション -q キュー数 -m メッセージ数 -s メッセージ長 | 備考 |
---|
SYSTEM.CLUSTER.TRANSMIT.QUEUE | -q 1 | 1キューファイルグループの1キューファイルが1キューを含む場合 |
-m 1024以上 | 次に示すどちらか大きい方の値を-mに設定してください。
- 同時に相手に送信するメッセージ総数
- リフレッシュ実行時のメッセージ総数=
(1+自システムのクラスタレシーバ総数)×2 +自システムのクラスタキュー総数×4 +自システムを除くクラスタ全体のクラスタキュー総数×2 +自システムを除くクラスタ全体のキューマネジャ数×2
|
-s 4088以上 | ユーザメッセージの平均メッセージ長に合わせてください。 1レコードに入らない場合を考慮してMQAサービス定義のmqa_max_msg_recnumオペランドに1メッセージの最大レコード数を指定してください。 |
SYSTEM.CLUSTER.COMMAND.QUEUE | -q 1 | 1キューファイルグループの1キューファイルが1キューを含む場合 |
-m 500※ | クラスタ内のキューマネジャ数,クラスタチャネル数,およびクラスタキューの数に比例して増やしてください。 |
-s 4088以上 | - |
SYSTEM.CLUSTER.REPOSITORY.QUEUE | -q 1 | 1キューファイルグループの1キューファイルが1キューを含む場合 |
-m 500※ | クラスタ内のキューマネジャ数,クラスタチャネル数,およびクラスタキューの数に比例して増やしてください。 |
-s 4088以上 | - |
- (凡例)
- -:ありません。
- 注※
- 2+A+B+C+E+(G×2)+I+J+(3×I-2)×(D×2+K+F)+3×I×H+L
- A:ローカルのクラスタチャネル数(90日以内に削除されたチャネル数を含みます)
- B:ローカルのクラスタキュー数(90日以内に削除されたキュー数を含みます)
- C:リモートのクラスタレシーバチャネル数(90日以内に削除されたチャネル数を含みます)
- キューマネジャを再作成(リポジトリキューを再作成)した場合,再作成前のチャネル,キューマネジャ,およびキュー情報は再作成後の情報とは別に数えてください。
- D:リモートのキューマネジャ数
- E:リモートのクラスタキュー数(90日以内に削除されたキュー数を含みます)
- F:クラスタキュー名の数(ローカルおよびリモートの両方にあるキューのうち,重複する名前は数えません)
- G:参加するフルリポジトリ数(クラスタ内のフルリポジトリ数が1の場合は1,クラスタ内のフルリポジトリが2以上の場合は2)。複数のクラスタに参加する場合はクラスタごとに算出した総和。
- H:SYSTEM.CLUSTER.REPOSITORY.QUEUEに登録されるエラーメッセージの数。次に示す場合に登録されます。
- アプリケーションで,クラスタ内にないキューマネジャ名を指定して,MQOPEN命令を発行した場合
- アプリケーションで,クラスタ内にないキュー名を,キューマネジャ名を指定しないでMQOPEN命令で指定した場合
- 事前定義クラスタセンダチャネルの接続先でクラスタ名称が異なる場合
- I:参加するクラスタ数
- J:クラスタ内のフルリポジトリ数(複数のクラスタに参加する場合は,クラスタごとに算出した総和になります)
- K:90日以内に削除されたリモートキューマネジャの数
- キューマネジャを再作成(リポジトリキューを再作成)した場合,再作成前のチャネル,キューマネジャ,およびキュー情報は再作成後の情報とは別に数えてください。
- L:クラスタごとに計算式(A+B+1+J+D×2+K+F+3×H)を算出し,そのうちの最大値
システムキューの運用時の注意事項について,次に示します。
- システムキューはキューマネジャが使用して管理するキューであるため,ユーザまたはアプリケーションから障害回復以外の目的で使用しないでください。システムキューに対して運用コマンドやMQIで,オブジェクトの属性の設定,メッセージの登録,またはメッセージの取り出しなどを実行した場合,動作の保証はできません。
- システムキューに障害が発生した場合,デッドレターキューをユーザが定義および作成しているときに限り,メッセージがデッドレターキューに登録されることがあります。障害の原因に対策したあと,デッドレターキューに登録されたメッセージをあて先キューに再登録してください。