クラスター環境で MSMQ に問題があります。私は次の設定をしています:
Windows フェールオーバーで 2 つのノードをセットアップします。これらを「ノード A」と「ノード B」と呼びます。
次に、MSMQ のクラスター化されたインスタンスをセットアップしました。これを「MSMQ インスタンス」と呼びます。
DTC のクラスター化されたインスタンスもセットアップしました。これを「DTC インスタンス」と呼びましょう。
DTC インスタンス内では、ローカルとクラスター化されたインスタンスの両方からのアクセスを許可しました。基本的に、すべての認証をオフにしてテストしました。
社内アプリケーションのクラスター化されたインスタンスも作成しました。これを「アプリケーション インスタンス」と呼びましょう。この Application インスタンス内に、他のリソースを追加しました。これらは、アプリケーションが使用する他のサービスであり、Net.MSMQ アダプターでもあります。
問題.......
アプリケーション インスタンスをクラスター化すると、常に所有者が使用している反対側のノードに設定されているように見えるため、ノード A でクラスター化されたインスタンスを作成している場合、現在の所有者は常にノード B に設定されます。問題ではありません。
私が抱えている問題は、アプリケーション インスタンスがノード B で実行されている限り、MSMQ が機能しているように見えることです。
送信キューはローカルに作成され、メッセージを受信し、MSMQ クラスターを介して処理されます。
次にノード A にフェールオーバーすると、MSMQ は動作を拒否します。送信キューは作成されないため、メッセージは処理されません。
イベント ビューアに次のエラーが表示されます。
「バージョン チェックは次のエラーで失敗しました: '認識できないエラー -1072824309 (0xc00e000b)'。MSMQ のバージョンを検出できません。キューに入れられたチャネル上のすべての操作が失敗します。MSMQ がインストールされ、使用可能であることを確認してください」
その後、ノード B にフェールオーバーすると、機能します。
アプリケーションは MSMQ インスタンスを使用するようにセットアップされており、すべての権限が適切です。
DTC のクラスター化されたインスタンスが必要ですか、それとも MSMQ インスタンス内のリソースとして構成できますか?
私はこれでレンガの壁にいるので、誰かがこれに光を当てることができますか?