web-dev-qa-db-ja.com

負荷分散IIS 7.5 WebサーバーASP.NETセッション状態の問題

ユーザーのセッションが奇妙に動作しているASP.NET Webサイトに問題があります-セッションデータが表示、非表示、再表示されます。

私は問題が何であるかを知っていると思います:

  1. 私たちの設定は、2 x負荷分散Webサーバー+シングルセッション状態データベースです。
  2. ASP.NET SQLセッション状態のストレージは、着信セッションCookie IDを一意に識別し、値を取得/保存するために、IIS WebサイトインスタンスID(メタベースID))に依存しているようです。
  3. IIS WebサイトのWebサイトインスタンスIDは、各ライブサーバーで異なります(ID/ W3SVC/1/RootWebサーバーAで、ID/ W3SVC/2/RootWebサーバーBで)。
  4. 負荷分散はクライアントアフィニティを使用していないため、各ユーザーのHTTP要求はどちらのサーバーにも送信できます。

したがって、ユーザーがサイトにログオンして移動すると、各HTTP呼び出しはいずれかのWebサーバーに送信されるため、サーバーに応じて異なるIDを持つセッション状態レコードを使用できます。実際には、ユーザーは同時に2つの個別のセッションインスタンスを持つことになります。私はこれをデータベースASPStateTempSessionsテーブルで確認したと思います。各セッションCookie IDは2にほぼ一致しているようですnamedレコード(それらのIDは最後の数文字のみが異なり、これはAppIDに基づく修飾子であると信じていますAspStateTempApplicationsテーブル)が数秒以内に作成されました。

したがって、1つのセッションレコードに加えられた変更はそのWebサーバーに対してのみ持続するため、セッション状態は正しく動作しないように見えます。ユーザーが他の負荷分散サーバーに移動すると、セッション値が消えるか、元に戻るように見えます。

解決策は、IISサイトのインスタンスIDを同期することです(たとえば、両方を作成する/ W3SVC/1/Root)、しかし私はIISの詳細設定)でその値を編集しようとしました、そしてそれはOKを保存しましたが、それを変更するまで、サイトはそのサーバーで404を返すだけでした。

VBSスクリプトが見つかりました この問題のようですが、IIS 6の場合のみのようなので、試してみるのが心配です。他の誰かがこの状況に遭遇しました= IIS 7.5、そしてどのように修正しましたか?


編集/ソリューション

IISでサイトインスタンスIDを変更した後、IISを再起動するのを忘れたのが私の間違いでした。この後、IDが更新され、ASP.NETセッションが2つのWebサーバーで同期されました。

完全な手順:

  1. リモートデスクトップからサーバーLIVE1へ、IIS Mgrを開き、問題のあるサイトをクリックして、サイドバーの詳細設定)を選択します。
  2. IDを一意のものに変更します。 10. OKをクリックします。
  3. Webサービス(c:\windows\system32\iisreset /restart

LIVE2についても同じことを行います(サイトIDがLIVE1と同じであることを確認します)

サイトIDはサイトファイルの場所に影響することに注意してください。たとえば、ログファイルフォルダーはC:\inetpub\logs\LogFiles\W3SVC10 例えば。

また、各サーバーのIIS構成ファイルのサイトid属性を編集することで、これらの変更を手動で行うことができます。 :C:\Windows\System32\inetsrv\config\applicationHost.config。管理者特権が必要ですが、その後もリセットが必要です。

14
James McCormack

あなたの質問から判断すると、セッションデータを追跡する中央セッションステートサーバー(DB?)があるようです。

また、フォーム認証などが機能するために、暗号化に使用されるマシンキーを同期する必要があります。これはセッションの識別にも影響する可能性がありますが、よくわかりません。

IIS 7)でマシンキーを構成する

さらに、マシン間の共有構成を利用する必要があります。それ自体が異なるマシンキーの問題を修正する可能性があります。

WebサーバーファームのIIS構成の同期?

編集:サイトIDを変更したときに、IIS managerを再起動して、Webrootが変更されたかどうかを確認しましたか?構成がIDに接続されている可能性があります。つまり、IDの変更によっても変更されますドキュメントルートなど

11
jishi