0

2 つの VM (win 2012) を 1 つのクラウド サービスにセットアップしています。各 VM は、接続を受け入れ、クライアントが望む限り接続を維持する単純な TCP サービスを実行します。

問題は、同じクライアント (もちろん別の TcpClient オブジェクト) からエンドポイントに 2 回接続できないことです。

これは、負荷分散を実行していない場合に可能です。

サーバーが自分自身に接続しようとするときにも問題があります (遅延コーディングが原因です)。初めてでも大丈夫です。2 回目の接続では、「サーバーが応答しませんでした」というメッセージが表示されて失敗します。

私の質問は簡単です: 同じホストから複数回接続することは可能ですか?

4

2 に答える 2

0

必要に応じて、個々の仮想マシン (基本的にはトラフィックを特定の vm に転送するエンドポイント) ごとに特定のポートを設定できます。マイケル・ウォシャムは、こちらの投稿でこれを説明しています。エンドポイントを作成しますが、負荷分散されたエンドポイントは作成しません。クライアント アプリケーションは、(ポート番号に基づいて) 接続するサーバーを選択する必要があります。もしかしてランダム抽選?

代わりに、クライアントが単一のポートに接続し、VM の 1 つに負荷分散され、その VM にとどまる「スティッキー サーバー」ソリューションを探している場合: haproxy のようなものを使用する必要があります。 、nginx などを独自の VM で実行し、設定したルールに基づいて個々の VM にトラフィックを転送します。

于 2012-12-21T12:05:56.143 に答える
0

あなたの質問は有効であり、それを見つけた他の人の利益のために:

Azure ソフトウェア ロード バランサーはラウンド ロビン アルゴリズムを使用するため、同じサーバーに接続することはできません。したがって、各リクエストがどのサーバーに接続されるかは保証されません。

http://www.windowsazure.com/en-us/manage/windows/common-tasks/how-to-load-balance-virtual-machines/

「Windows Azure は、クラウド サービスのパブリックに定義されたポートへのネットワーク トラフィックのラウンド ロビン負荷分散を提供します」

そのため、他の回答の個別のポート メソッドが、特定のサーバーとの通信を強制する唯一の方法です。

于 2013-06-30T17:28:31.470 に答える