MSMQ をクラスターで実行するように構成しました。クラスターは 2 つの Hyper-V 仮想マシンで構成され、3 番目の仮想マシンで共通の記憶域を使用します (すべての仮想マシンは Windows ドメインを共有し、ネットワークを介して相互に認識します)。フェールオーバー クラスター マネージャー スナップインは、MSMQ サービスが実行中であることを示します。クラスターのメンバーであるマシン上のクラスター化されていない MSMQ サービスは、サービス スナップインで実行されていることが示されています。ここで、リモート コンピューター (3 番目の仮想マシン) からクラスター化された MSMQ サービスとクラスター化されていない MSMQ サービスにメッセージを送信しようとしています。次のキュー名を使用します。
- FormatName:Direct=OS:{clustered-msmq-netbios-name}\private$\{queueName}
- FormatName:Direct=TCP:{clustered-msmq-ip-address}\private$\{queueName}
- FormatName:Direct=TCP:{non-clustered-msmq-ip-address}\private$\{queueName}
クラスタ化されていない msmq の IP アドレスが指定されている場合、メッセージはクラスタ化されていない msmq インスタンスに配信されます。しかし、クラスター化された msmq インスタンスにアクセスしようとすると、送信されたメッセージが発信メッセージ キューに残り、「接続を待機しています」(Winsock ソケットの接続に失敗しました) と表示されます。また、クラスター化された msmq インスタンスのキューは空です。
クラスター化された msmq サービスに telnet で接続しようとしました。接続には、クラスター化された msmq の IP アドレスとポート 1801 を指定しました。「ポート 1801 でホストへの接続を開けませんでした: 接続に失敗しました」と表示されます。
何か案が?
追加情報。両方のクラスタ サーバーがオンラインのときに [メッセージ キューの管理] メニュー項目をクリックすると、スナップインのツリーにメッセージ キュー項目がありません。1 台のサーバー (2 台目) を一時停止すると、ツリーにメッセージ キューの項目が表示されます。ツリーにメッセージ キュー アイテムがあると、メッセージの処理が開始されます (送信サーバーの送信メッセージ キューからメッセージが消えるのが見えますが、受信サーバーには表示されません)。