ASP.NET
アプリケーションを としてデプロイする場合、どのような問題に注意する必要がありweb farm
ますか?
5 に答える
すべてのセッション状態情報は、サーバー間で複製する必要があります。最も簡単な方法は、前述のように MSSQL セッション状態プロバイダーを使用することです。
ユーザーが保存する動的ファイルなどのディスク アクセスは、すべてのサーバーが利用できる領域にある必要があります。何らかの形式のネットワーク接続ストレージを使用するなど。スクリプト ファイル、画像、html などは、各サーバーに複製されます。
アプリケーション オブジェクトに情報を保存しようとしたり、アプリケーションの起動時に情報を読み込もうとしたりする試みは、見直す必要があります。ユーザーがファーム内の新しいマシンにアクセスするたびに、イベントが発生します。
他の人が示唆しているように、各サーバーのマシン キーは非常に大きなものです。ドメインではなく IP アドレスに対して ssl を使用している場合にも、問題が発生する可能性があります。
これによりアプローチが変わる可能性があるため、どのような負荷分散戦略を実行するかを検討する必要があります。
セッションは大きな問題です。セッションの管理に SQL Server を使用し、すべてのサーバーが同じ SQL Server インスタンスを指していることを確認してください。
私が遭遇した大きなものの 1 つは、さまざまなサーバーにまたがるさまざまな machineKeys に関する問題です。ASP.NET は、ViewState や FormsAuthentication チケットなどのさまざまな暗号化操作に machineKey を使用します。異なる machineKeys を使用すると、サーバーが他のサーバーからのポストバックを理解できなくなる可能性があります。詳細については、こちらをご覧ください: http://msdn.microsoft.com/en-us/library/ms998288.aspx
- セッションを使用せず、代わりにプロファイルを使用してください。それらにサービスを提供するように SQL クラスターを構成できます。セッションはセッションデータベースに頻繁にクエリを実行しますが、プロファイルは自分自身をロードするだけです。
- データのキャッシュには memaced などの分散キャッシュ ストアを使用し、大量に必要なものには ASP.Net キャッシュを使用します。
- SAN または EMC を使用して静的コンテンツを提供する
- S3 または同様のものを使用して、3 にフォールバックします。
- サイトをシャットダウンする必要なく、サーバーごとに簡単に更新できるように、適切なロードバランサーを用意してください。
方法: マルチサーバー ASP.NET Web アプリケーションと Web サービスをセットアップする
ログの集約は見過ごされがちです。HTTP ログを処理する前に、それらを結合して、複数のサーバーに送信されたリクエストを含む単一のログを作成する必要がある場合があります。