私の ASP.Net サイトは、Windows EC2 Web サーバーのファームとして実行されます。最近のトラフィックの急増により、コストを抑えるためにスポット インスタンスに切り替えました。時間料金が設定料金を下回ると、AMI からスポット インスタンスが作成されます。Web サーバーはデータを保存しないため、オンザフライでの作成と終了は問題になりません。これまでのところ、ウェブサイトは正常に動作しています。
問題はアップデートの展開です。アプリケーションはほとんどの日に更新されます。
スポット フリートに切り替える前は、更新は次のように展開されていました (1) CI サーバーがサイトをビルドしてステージング サーバーに展開します (2) マッピングするファイルの単純な xcopy を使用して、Web ファームに段階的に展開しますドライブします。
スポット インスタンスに切り替えた後のプロセスは次のとおりです。(1) {変更なし} (2) スポット インスタンスの 1 つに更新をデプロイする (3) そのデプロイから新しい AMI を作成する (4) 新しい AMI を使用して新しいスポット フリートをリクエストするAMI (5) 古いスポット フリートを終了します。(Spot リクエストに使用される AMI は変更できません。)
(Microsoft Azure のように) ノードが自己構成するか共有ドライブを使用できるようにすることで、このプロセスを簡素化する方法はありますか? このサイトでは、物理的な場所から複数のインスタンスをサポートする Umbraco CMS を実行していますが、ネットワーク共有から .Net アプリケーションを実行しようとしてセキュリティ エラーが発生しました。
おまけの質問: 新しいスポット インスタンスをロード バランサーに自動追加するにはどうすればよいですか? おそらく、アプリケーションの最新バージョンを取得するスクリプトがあった場合、完了時にインスタンスをロード バランサーに追加できます。