2

QMGR A には、AgentA と呼ばれる MFT エージェントがあります。QMGR B には、AgentB という MFT エージェントがあります。QMGR C には、AgentC と呼ばれる MFT エージェントがあります。これらはすべて「クライアント」ではなく、MFT サーバーのデプロイメントです。

QMGR A と B は、FTECluster と呼ばれる MQ クラスターのメンバーです。

QMGR C は、単純な送信側/受信側のペア (クラスター外) を介して QMGR B に接続します。

QMGR A が実行されているサーバー上の MFT ユーザーは、そのサーバーから QMGR C が実行されているサーバーにファイルを送信したいと考えています。

QMGR B は指定された調整 Qmgr であるため、エクスプローラー経由でそこに接続されている場合、次を使用して転送を作成します。

QMGRA をソースとして、QMGRC を宛先として、エージェントが 2087 エラー (私が取得しているもの) に遭遇し、ターゲットのリモート キューが不明であることを常に期待できますか? それとも、QMGRB を介して QMGRA を QMGRC に慣れさせるために実行する必要がある「余分な」セットアップがありますか?

アプリケーションは次のとおりです。DMZ (ゲートウェイ、QMGR B) の背後にあるエンクレーブ ベースのキュー マネージャー (QMGRA) があり、外部パートナーのファイルを MFT 経由でエンクレーブの内部/外部に移動したいと考えています。キューを使用して、重複するクラスターから、またはクラスター内外のキュー マネージャーから、隣接するクラスター内外のキュー マネージャーにメッセージを移動します。または、エンクレーブ内の MFT ユーザー間のファイル転送を許可して、内部転送のためにトラフィックが DMZ にパレードされないようにします。

これが不可能な場合は、DMZ ベースの MFT サーバーを介して、内部エンクレーブ サーバー上のクライアント間で作成された MFT 転送が必要です。内部でファイルを交換するためのキュー マネージャー。

4

1 に答える 1

2

FTE エージェントは、標準の QMgr ルーティングとエイリアシングを使用できます。これを行う教科書的な方法は、送信先の QMgr にちなんで送信キューに名前を付け、エイリアスを追加することです。たとえば、QMGRA では次のように定義します。

* On QMGRA
DEFINE QL(QMGRB) USAGE(XMITQ)
DEFINE QR(QMGRC) XMITQ(QMGRB) RQMNAME('') RNAME('')

これで、QMGRC に宛てられたメッセージはすべて、通常の名前解決を通過します。QMgr は、QRemote により、QMGRB を介して QMGRC へのルートを見つけます。このため、RNAME が空白の QRemote 定義は QMgr エイリアスと呼ばれます。

次に、QMGRB には、QMGRC につながる送信キューがあり、偶然にも QMGRC という名前が付けられます。メッセージを戻すには逆のことが適用されます。B を指す C に QMgr エイリアスが必要です。

XMit キューがリモート QMgr の名前を使用しない場合は、追加の QMgr エイリアスが必要になります。たとえば、多くの人が文字列 XMITQ を XMit キュー名に追加します (私の意見では、これは解決するよりも多くの問題を引き起こします)。そのようなシステムでは、次のものが必要になります。

* On QMGRA
DEFINE QL(QMGRB.XMITQ) USAGE(XMITQ)
DEFINE QR(QMGRC) XMITQ(QMGRB.XMITQ) RQMNAME('') RNAME('')


* On QMGRB
DEFINE QL(QMGRC.XMITQ) USAGE(XMITQ)
DEFINE QR(QMGRC) XMITQ(QMGRC.XMITQ) RQMNAME('') RNAME('')

この最初の部分は、以前と同じように機能します。WMQ は QMGRC を探し、QRemote を見つけて、指定された XMitQ にメッセージを書き込みます。しかし、メッセージが QMGRB に到着すると、名前がリモート QMgr と一致しないため、送信キューに直接解決できません。そのため、名前 QMGRC を QMGRC につながる XMitQ に解決する新しい QRemote を定義します。

QMGRA と QMGRB の間でクラスター解決を使用することもできます。その場合、RQMNAME を設定し、A の QMgr エイリアスで XMitQ を空白のままにしておくことでおそらく回避できます。または、両方を設定します。もう 1 つのオプションは、B で QMGRC という名前の QMgr エイリアスを作成し、それをクラスターにアドバタイズすることです。

専用チャネルを使用すると、ファイル転送トラフィックがクラスタ XMitQ およびクラスタ チャネルから切り離されるため、通常のトラフィックからサービス クラスを分離できます。ただし、ファイル転送トラフィックはすべて非永続的であり、一度に XMitQ に置かれるのはファイルごとのフレームだけなので、そのレベルの分離は必要ないかもしれません。(WMQ V7.5 では、オーバーラップ クラスターとスプリット クラスター XMitQ で同じことができます!)

これをテストするために FTE エージェントは必要ありません。SupportPac MA01の Q プログラムを使用し、接続時にローカル QMgr とリモート QMgr の両方の名前を指定するだけです。

メール スレッドからの更新:
では、クラスタ シナリオを使用してこれをモックアップするために使用した定義を次に示します。3 つの QMgr を定義し、QMGRA をリポジトリとして、QMGRB をメンバーとして、SDR/RCVR チャネルを使用して QMGRB と C 間のゲートウェイとしてクラスターを作成しました。C 宛ての A から B に到着するすべてのメッセージは、XMitQ に解決されます。A は、QMGRC.XMITQ を指している QMGRC という名前の QMgr エイリアスにより、C について知っています。(QMGRC と呼ばれる XMitQ をクラスターにアドバタイズしようとしましたが、クラスターはそれをローカル キューとして認識し、QMgr の名前解決を実行しないようです。それを QMGRC.XMITQ として定義し、その上に QMGRC QMgr エイリアスを作成すると、QMGRC が解決できるようになります。ローカルおよびクラスターから)。

これらを実行した後、RNAME を指定する QREMOTE 定義の恩恵を受けずに、Q プログラムを使用して接続し、C から A および A から C にメッセージを TEST.NAME.RESOLUTION という名前のキューに次のように送信することができました。

C:\Users\T.Rob>q -m QMGRA -oQMGRC/TEST.NAME.RESOLUTION
MQSeries Q Program by Paul Clarke [ V6.0.0 Build:May  1 2012 ]
Connecting ...connected to 'QMGRA'.
>Testing A to C
>^C
C:\Users\T.Rob>q -m QMGRC -oQMGRA/TEST.NAME.RESOLUTION
MQSeries Q Program by Paul Clarke [ V6.0.0 Build:May  1 2012 ]
Connecting ...connected to 'QMGRC'.
>Testing C to A
>^C

はい、クラスタ名は 'EDELMANN' です。この使用法では、Jerry Seinfeld が "Newman" と発音していたのと同じように発音されます。;-)

* On QMGRA:
ALTER QMGR +
   REPOS(EDELMANN)

DEFINE QLOCAL('TEST.NAME.RESOLUTION') +
   DEFPSIST(YES) +
   REPLACE

DEFINE CHANNEL('EDELMANN.QMGRA') +
   CHLTYPE(CLUSRCVR) +
   CLUSTER('EDELMANN') +
   CONNAME('localhost(3414)') +
   TRPTYPE(TCP) +
   REPLACE


* On QMGRB:
DEFINE QREMOTE('QMGRC') +
   CLUSTER('EDELMANN') +
   RQMNAME('QMGRC') +
   XMITQ('QMGRC.XMITQ') +
   REPLACE

DEFINE QLOCAL('QMGRC.XMITQ') +
   INITQ('SYSTEM.CHANNEL.INITQ') +
   TRIGGER +
   TRIGDATA('QMGRB.QMGRC') +
   USAGE(XMITQ) +
   REPLACE

DEFINE CHANNEL('EDELMANN.QMGRA') +
   CHLTYPE(CLUSSDR) +
   CLUSTER('EDELMANN') +
   CONNAME('localhost(3414)') +
   TRPTYPE(TCP) +
   REPLACE

DEFINE CHANNEL('EDELMANN.QMGRB') +
   CHLTYPE(CLUSRCVR) +
   CLUSTER('EDELMANN') +
   CONNAME('localhost(3415)') +
   TRPTYPE(TCP) +
   REPLACE

DEFINE CHANNEL('QMGRB.QMGRC') +
   CHLTYPE(SDR) +
   CONNAME('localhost(3416)') +
   TRPTYPE(TCP) +
   XMITQ('QMGRC.XMITQ') +
   REPLACE

DEFINE CHANNEL('QMGRC.QMGRB') +
   CHLTYPE(RCVR) +
   TRPTYPE(TCP) +
   REPLACE

* On QMGRC:
DEFINE QREMOTE('QMGRA') +
   RQMNAME('QMGRA') +
   XMITQ('QMGRB') +
   REPLACE

DEFINE QLOCAL('QMGRB') +
   INITQ('SYSTEM.CHANNEL.INITQ') +
   TRIGGER +
   TRIGDATA('QMGRC.QMGRB') +
   USAGE(XMITQ) +
   REPLACE

DEFINE QLOCAL('TEST.NAME.RESOLUTION') +
   REPLACE

   DEFINE CHANNEL('QMGRB.QMGRC') +
   CHLTYPE(RCVR) +
   TRPTYPE(TCP) +
   REPLACE

DEFINE CHANNEL('QMGRC.QMGRB') +
   CHLTYPE(SDR) +
   CONNAME('localhost(3415)') +
   TRPTYPE(TCP) +
   XMITQ('QMGRB') +
   REPLACE
于 2012-09-26T22:13:08.470 に答える