
Netscaler ロード バランサーの背後に複数の Web サーバーがあります。(Win2008) サーバーはそれぞれ、セッション状態管理のために .Net StateServer サービスを実行する中央サーバーを使用するように構成された ASP.Net アプリケーション (iis 6.1 を使用) をホストしています。
ロード バランサーを「ラウンド ロビン」または「最も混雑していない」ルーティングを使用するように構成すると、Web アプリケーションは定期的にクラッシュし、セッション状態にあるはずのものが見つからないことを示すエラーが表示されます。ただし、常にクラッシュするわけではなく、特定の手順でのみ、試行の約 75% で発生します。
ロード バランサをサーバ永続性に設定すると (つまり、ユーザーは 1 つのサーバに「固定」される)、問題は発生しません。 (ただし、これは望ましい実行モードではありません)
すでに確認/実行したこと:
- 再起動すべてのもの
- マシンキーはすべてのサーバーで同じです
- ウェブサーバーと状態サーバー間の接続に問題はありません
- IISはサイト名、パス、IDがすべてのWebサーバー上で同じです
- アプリケーションログにエラーは記録されません
他に確認すべきことや考えられる原因について何か提案はありますか?
注意: 別の環境ではまったく同じ設定 (同じタイプのロード バランサー、同じ Web アプリ、同じ構成、同じサーバー設定...) を行っており、問題なく動作しています。唯一の違いは VMWare Tools のバージョンが異なることですが、これが原因ではないでしょうか?
答え1
数か月後、原因が判明しました。サーバーの一部 (すべてではありません) が .Net Framework の新しいバージョンにアップグレードされていたのです。
Microsoft は同じ StateServer を使用する異なるサーバーをサポートしていませんフレームワークの異なるバージョンそのため、顧客が 4.5.1 のサーバーと以前のバージョンのサーバー間を移動すると、実質的にセッションが失われ、アプリケーションがクラッシュしました。
この問題に遭遇した場合は、インストールされているフレームワークを確認する各サーバーで - 同じ StateServer で動作するためにはすべて同じである必要があります。