2

私の 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 アプリケーションを実行しようとしてセキュリティ エラーが発生しました。

おまけの質問: 新しいスポット インスタンスをロード バランサーに自動追加するにはどうすればよいですか? おそらく、アプリケーションの最新バージョンを取得するスクリプトがあった場合、完了時にインスタンスをロード バランサーに追加できます。

4

1 に答える 1

0

私は多少似たようなセットアップをしています (スポット インスタンスを使用せず、Linux マシンを使用していることを除いて)。一般的な考え方は次のとおりです。

  1. CI は latest.package.zip を作成し、指定された s3 バケットにアップロードします
  2. CI は、S3 から最新のパッケージをダウンロードし、サービスをインストール/再起動する現在のライブ インスタンスで更新スクリプトを順次トリガーします
  3. 新しいインスタンスは、S3 バケットへのアクセスを許可する IAM ロールと、初回起動時に更新スクリプトをトリガーするユーザー データスクリプトを使用して、ロード バランサーにアタッチされたAutoscaling グループで起動されます。

これはすべて、Windowsスポットインスタンスで実行できるはずです。

于 2016-08-08T22:25:35.253 に答える