如何自我部署在AWS EC2 Spot Windows实例中运行的Web应用程序?

时间:2016-08-08 21:42:48

标签: asp.net amazon-web-services amazon-ec2 ec2-ami elastic-load-balancer

我的ASP.Net站点作为Windows EC2 Web服务器的场运行。由于最近的流量激增,我切换到Spot实例来控制成本。当小时费率低于设定费率时,从AMI创建竞价型实例。 Web服务器不存储任何数据,因此动态创建和终止它们不是问题。到目前为止,网站运行良好。

问题是部署更新。该应用程序大多数时间都会更新。

在切换到竞价型队列之前,部署的更新如下(1)CI服务器将构建站点并将其部署到登台服务器(2)我将使用简单的xcopy对Web站点进行交错部署文件到映射的驱动器。

切换到竞价型实例后,流程为:(1){无更改}(2)将更新部署到其中一个现场实例(3)从该部署创建新的AMI(4)请求新的竞价型队列使用新的AMI(5)终止旧的现货车队。 (无法更改用于竞价请求的AMI。)

有没有办法通过启用节点自配置或使用共享驱动器来简化此过程(如Microsoft Azure所做的那样)?该站点正在运行Umbraco CMS,它支持物理位置的多个实例,但是我遇到了尝试从网络共享运行.Net应用程序的安全错误。

奖金问题:如何自动将新的竞价型实例添加到负载均衡器?假设有一个脚本提取了最新版本的应用程序,它可以在完成后将实例添加到负载均衡器。

1 个答案:

答案 0 :(得分:0)

我有一些类似的设置(除了我不使用现场实例,我有linux机器),这是一般的想法:

  1. CI创建latest.package.zip并将其上传到指定的s3存储桶
  2. CI在当前实时实例上依次触发更新脚本,从S3下载最新包并安装/重新启动服务
  3. 新实例在Autoscaling group中启动,附加到Load balancer,具有IAM角色,允许访问将在初始启动时触发更新脚本的S3存储桶和User data脚本。
  4. 对于我认为的windows spot实例,这应该都是可行的。