これがこの質問をする正しい方法であるかどうかはわかりませんが、基本的に私がやりたいことは次のとおりです。
1.)IISのサイトにチェンジセットをプッシュします。
2。)ユーザーの邪魔をしないでください。
3。)楽にロールバックできる。
ですから、私が知っていることがいくつかあります。
1.)Procセッション外-処理済み
2。)Procキャッシュが不足しています-処理済み
したがって、残っている質問は次のとおりです。
1。)ユーザーの邪魔にならないようにするにはどうすればよいですか?ファイルをビンにアップロードするだけの場合、アプリはリサイクルされ、オンラインに戻るのに10秒以上かかります
2。)簡単にロールバックするにはどうすればよいですか?
考えられる解決策は、IISにパブリックとプライベートの2つのサイトを設定することだと考えていました。アップロードはプライベートに送られ、ウォームアップされます。ウォームアップ後、サイトは交換されます。ロールバックでは、アップロードせずにプライベートにスワップするだけです。
これは理論的には正しいように思われますが、メカニズムについてはよくわかりません。何か案は?
これが私がこの問題に取り組む方法です-私がこれまでにこれを行ったことがないことを覚えておいてください、それは私が私の開発環境で少しテストした概念にすぎません。これと選択した言語のスクリプトを使用して、かなり堅牢なフレームワークをセットアップできるはずです。基本的に、ゲットーの負荷分散環境をセットアップし、それを使用して新しいサイトと古いサイトを切り替えます。
セットアップするには、次のものが必要です。
まず、ARRをインストールします。
IISで3つのWebサイトをセットアップします。
http://192.168.1.1/
_など)。これはARRサイトでもあります。これが指す空のディレクトリを設定し、それを独自のアプリプールに配置するだけです。 これらの手順 に従ってタイムアウトしないようにアプリプールを設定します。http://192.168.1.2:8080
_および_http://192.168.1.3:8080
_であるとします。また、独自のアプリプール内にあり、ファイルシステム上の異なるディレクトリを指している必要があります(ただし、通常、両方のディレクトリのコンテンツは同じです)ARRをインストールすると、IIS Manager "Server Farms"という新しいカテゴリが作成されます。それを右クリックして、新しいファームを作成します。
{SERVER_PORT}
_が8080と一致しないための新しい条件を追加しますこの時点で、あなたは私たちがあなたの要求を達成するために必要なものの基本を持っています。 _http://192.168.1.1/
_にアクセスすると、Webサイト1またはWebサイト2からWebサイトを取得できますが、他のサイトがあることは完全にシームレスです。
アプリケーションの新しいバージョンをデプロイしたいときにできることは次のとおりです。
これらすべてをスクリプト化することについて話すとき、Webデプロイメントツールが役立ちます。アプリケーションのパッケージを作成し、コマンドラインからデプロイするのが非常に簡単になります。問題がある場合は、そのパッケージを簡単にロールバックすることもできます。 ARRもスクリプト可能です _Microsoft.Web.Administration
_ dllを使用します。
もう1つ、実際にWindows 2008 R2(IIS 7.5)を使用している場合は、 アプリケーションウォームアップ モジュールを参照してください-ウォーミングアップ部分を作成する必要がありますこれはあなたにとっても簡単です。
MattBはそれを水から叩き出しました。 +1詳細を返信しますが、彼の主張を理解するつもりはありません。彼の言ったことに付け加えます。
私は彼が説明したのと同様の設定をしていて、それはうまくいきます。 ARRは、単一のサーバー上でも実行する方法です。
ただし、いくつか追加します。
マットが推奨したように、2つのサイトを作成します。 yoursite.com01やyoursite.com02のような名前を付けます。
2つのURL書き換えルールを作成します。 1つはwww.yourdomain.com用で、もう1つはstaging.yourdomain.com用です。本番環境では、値が(^ www.yourdomain.com $)|(yourIP)の{HTTP_Host}を使用します。 (または任意のバインディング)ステージングの場合、{HTTP_Host}に値(^ staging.yourdomain.com $)を使用します。ルールyoursite.comおよびstaging.yoursite.comを呼び出します。
Rule = yoursite.comをsite = yoursite.com01にバインドし、rule = staging.yoursite.comをsite = yoursite.com02にバインドします。
Staging.yoursite.comにFTPを設定します。
本番トラフィックはRule = staging.yoursite.comおよびSite = yoursite.com01に送られます。反対に停滞。
いつでもステージングにデプロイしたり、テストしたり、スピンアップしたり、他の人にテストしてもらうことができます。日中に行うことは問題ではありません。毎回同じFTPアカウントにデプロイします。ビルドサーバーでうまく機能します。
次に、稼働する準備ができたら、3つの変更を行います。-FTPバインディングをyoursite.com02からyoursite.com01に移動します-URL書き換えルールyoursite.comを変更してyoursite.com02を指すようにします-URL書き換えルールのステージングを変更します。 yoursite.com01を指すyoursite.com
これで、ダウンタイムがゼロになり、すぐに切り替えられ、すぐにロールバック機能が利用できるようになりました。
考慮すべき唯一の落とし穴は、プロセス外のセッション状態です。スワップ中にセッション状態が失われないように、状態サーバーが両方のサイトIDを受け入れることを確認してください。
また、これはWebのみであり、データベースではないことに注意してください。
スクリプトについては、構成エディターを使用してください。必要な変更を加えてから、[スクリプトの生成]をクリックします。それはあなたにC#、appcmdまたはAHAdminコードを与えるでしょう。
私はこれを数か月間、インスタンスを交換するためのWebページフロントエンドで使用してきましたが、振り返ることはありません。従来のデプロイメントと比較して、デプロイメントが非常に更新されます。