web-dev-qa-db-ja.com

StateServerを使用した.NetWebアプリの負荷分散に関する問題

Netscalerロードバランサーの背後に複数のWebサーバーがあります。 (Win2008)サーバーはそれぞれ、セッション状態管理に.Net StateServerサービスを実行する中央サーバーを使用するように構成されたASP.Netアプリケーション(iis 6.1を使用)をホストします。

「ラウンドロビン」または「最小ビジー」ルーティングを使用するようにロードバランサーを構成すると、Webアプリケーションが定期的にクラッシュし、セッション状態にあると予想されるものが欠落していることを示すエラーが発生します。ただし、常に実行されるわけではありません。特定のステップでのみ実行され、その後、試行の約75%で実行されます。

ロードバランサーをサーバーの永続性に構成する場合(つまり、ユーザーが1つのサーバーに「固執」する場合)、問題は発生しません。 (しかし、これは私たちが望む実行モードではありません)

すでに確認/実行したこと:

  • 再起動すべてのもの
  • マシンキーはすべてのサーバーで同じです
  • Webサーバーと状態サーバーの間に接続の問題はありません
  • IISはサイト名であり、パスとIDはすべてのWebサーバーで同じです
  • アプリケーションログにエラーは記録されません

誰かがチェックする他のこと/考えられる原因について何か提案がありますか?

注意。別の環境でもまったく同じセットアップがあります-同じタイプのロードバランサー、同じWebアプリ、同じ構成、同じサーバーセットアップ...そしてそれは正常に動作します。唯一の違いはVMWareツールのバージョンが異なることですが、これが原因であることがわかりませんか?

1
Stelloy

数か月後、原因を発見しました。一部の(すべてではない)サーバーは、新しいバージョンの.NetFrameworkにアップグレードされていました。

Microsoftは、同じStateServerを使用する異なるサーバーをサポートしていません フレームワークのバージョンが異なる したがって、顧客が4.5.1のサーバーと以前のバージョンのサーバーの間を行き来すると、基本的にセッションが失われ、アプリケーションがクラッシュしました。

この問題が発生した場合は、 どのフレームワークがインストールされているかを確認してください 各サーバーで-同じStateServerで動作するには、すべて同じである必要があります。

0
Stelloy