0

NLB クラスターに 3 台のサーバーがあり、ステートレスで負荷の高い WCF サービスを展開してクラスターに負荷をかけています。

構成: ポート 80、マルチキャスト、アフィニティ: なし

次に、ワークステーションからクラスターに 32 個の要求を並列的に送信します。32 個の要求を完了するまでの合計時間は約 35 秒です。

2台のサーバーをオフにして、サービスを再度実行しようとしましたが、最終結果も約... 35秒です!!!?!?!?

これら 3 台のサーバーのタスク マネージャーを同時に見ると、1 台のサーバーが要求を処理している場合、他の 2 台はアイドル状態になり、要求が順次処理されていることがわかりました。リクエストは3つのサーバーすべてで並行して処理する必要があると思いました。

何が起こったのか理解できません。それらを間違って設定しましたか?誰でもこれについて説明がありますか?

4

2 に答える 2

1

NLBのドキュメントによると:

アフィニティがシングルまたはクラス C に設定されている場合、単一の IP からのリクエストはクラスター内の単一のホストにルーティングされる必要があります。ただし、Affinity を None に設定している場合は、リクエストをすべてのホストにルーティングする必要があります。

実際には、あなたが見ているのと同じ問題が見られます。クラスター内に複数のサーバーがあり、アフィニティーが [なし] に設定されていますが、単一の IP からのすべての要求は引き続きホストを保存するようにルーティングされます。私はまだ答えを探しています。

于 2014-07-10T18:35:27.330 に答える
0

最後に、私は自分で答えを見つけました。

NLB クラスターは、クライアントの IP に基づいて要求を処理するホストを決定します。一度に 1 つのクライアント IP からのすべての要求を処理するために割り当てられるサーバーは 1 つだけです。

すべてのリクエストは並行して送信されましたが、IP は 1 つしかありませんでした。したがって、これらすべての要求を処理するために 1 つのサーバーのみが割り当てられます。

2 つまたは 3 つのクライアントからリクエストを送信しようとすると、他のサーバーが並行して動作し始めます。

それがNLBの仕組みです。

于 2013-10-04T02:13:39.370 に答える