シナリオは次のとおりです。
- 3 つの Web サーバー A、B、C があります。
- アプリケーションを停止せずに、アプリケーションの新しいバージョンをリリースしたい
(たとえば、「メンテナンスのため停止」ページを使用しない)。 - サーバー A は最新のコードで稼働します。
- サーバー B はオフラインになります。サーバー B のユーザーは、A と C にルーティングされます。
- Page1.aspx が新しいコントロールで更新されました。このページでサーバー B からサーバー A に移動
したユーザーは、このページでアクションを実行するとビューステート エラーが発生します。これは私たちが防ぎたいことです。
この問題をどのように解決しますか?
ここにいくつかの考えがあります (ロードバランサーを使用できるかどうかはわかりません... ロードバランサーの構成に慣れていません [それは F5 です]):
より素朴なアプローチ:
サーバー A と B を停止し、更新します。C は古いコードを保持します。すべてのトラフィックは C に転送されますが、これは古いコードなので問題ありません。A と B が更新されたときに、可能であればロード バランサーに、アクティブなセッションを持つユーザーのみを C に保持し、すべての新しいセッションが A と B で開始されるように指示します。ユーザーがアプリケーションを使い続けると、長期間使用できなくなります。
あまり単純でないアプローチ:
変更されていないページである「安全な」ページについて (可能であれば) ロード バランサーに通知することを除いて、単純なアプローチと同様です。ユーザーが最終的に「安全な」ページにたどり着くと、そのユーザーはサーバー A または B にルーティングされます。理論的には、ユーザーはこれらのページのいずれにもアクセスしない可能性がありますが、このアプローチはリスクが少し低くなります (ただし、より多くの作業が必要になります)。 )。