2.8.11 キューマネジャクラスタの準備

TP1/Message Queueでクラスタを使用する場合に必要な環境設定について説明します。

<この項の構成>
(1) リポジトリ管理の構成
(2) リポジトリ管理サーバの動作
(3) リポジトリ管理サーバの作成
(4) リポジトリ管理サーバの環境変数
(5) リポジトリ管理サーバの開始方法
(6) クラスタ環境のシステムキュー

(1) リポジトリ管理の構成

リポジトリの管理をする部分をリポジトリ管理サーバMQR)といいます。リポジトリ管理サーバは,クラスタに参加するためのリポジトリ情報を管理します。

(2) リポジトリ管理サーバの動作

パーシャルリポジトリを持つTP1/Message Queueのリポジトリ管理サーバは,クラスタキューマネジャおよびクラスタキューの場所についてのリポジトリ情報を,フルリポジトリキューマネジャの持つフルリポジトリとMQTサーバを介して交換します。

リポジトリ情報の交換について,次の図に示します。

図2-58 リポジトリ情報の交換

[図データ]

(3) リポジトリ管理サーバの作成

リポジトリ管理サーバは,OpenTP1システムのユーザサーバです。

mqrmakeコマンドを実行して,実行形式プログラム(mqrsupおよびmqrspp)とリポジトリ管理サーバユーザサービス定義ファイル(mqrsupおよびmqrspp)を作成してください。ただし,同一名称のユーザサービス定義ファイルがある場合,mqrmakeコマンドはリポジトリ管理サーバユーザサービス定義ファイルを作成しません。

mqrmakeコマンド実行時には,次に示す定義ファイルが必要です。詳細については,マニュアル「OpenTP1 システム定義」を参照してください。

作成したmqrsupおよびmqrsppは,次に示すディレクトリに配置されます。

また,MQAサービス定義のmqa_mqr_confオペランドにYを指定してください。

注意
mqrsup,mqrsppで設定できる値を次に示します。
  1. mqrmakeコマンドで出力された定義ファイルのオペランド
    この値は変更しないでください。
  2. このマニュアルに記載されたオペランド
    このマニュアルに従った値で設定してください。
  3. 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) オペランド
(c) mqrsppのサービス定義に関する注意事項
(d) mqrsppにparallel_countオペランドを指定する場合の注意事項

parallel_countオペランドで指定する値,およびこのオペランドについての注意事項を次に示します。

(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 11キューファイルグループの1キューファイルが1キューを含む場合
-m 1024以上次に示すどちらか大きい方の値を-mに設定してください。
  1. 同時に相手に送信するメッセージ総数
  2. リフレッシュ実行時のメッセージ総数=
    (1+自システムのクラスタレシーバ総数)×2
    +自システムのクラスタキュー総数×4
    +自システムを除くクラスタ全体のクラスタキュー総数×2
    +自システムを除くクラスタ全体のキューマネジャ数×2
-s 4088以上ユーザメッセージの平均メッセージ長に合わせてください。
1レコードに入らない場合を考慮してMQAサービス定義のmqa_max_msg_recnumオペランドに1メッセージの最大レコード数を指定してください。
SYSTEM.CLUSTER.COMMAND.QUEUE-q 11キューファイルグループの1キューファイルが1キューを含む場合
-m 500クラスタ内のキューマネジャ数,クラスタチャネル数,およびクラスタキューの数に比例して増やしてください。
-s 4088以上
SYSTEM.CLUSTER.REPOSITORY.QUEUE-q 11キューファイルグループの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)を算出し,そのうちの最大値

システムキューの運用時の注意事項について,次に示します。