2

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

问题在于部署更新。该应用程序大部分时间都会更新。

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

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

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

额外问题:如何将新的 Spot 实例自动添加到负载均衡器?假设如果有一个脚本可以获取应用程序的最新版本,它可以在完成后将实例添加到负载均衡器。

4

1 回答 1

0

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

  1. CI 创建 latest.package.zip 并将其上传到指定的 s3 存储桶
  2. CI 顺序触发当前实时实例上的更新脚本,该脚本从 S3 下载最新包并安装/重新启动服务
  3. 新实例在Autoscaling 组中启动,附加到负载均衡器,具有 IAM 角色以允许访问 S3 存储桶和用户数据脚本,该脚本将在初始启动时触发更新脚本。

我认为这对于 Windows 现场实例都应该是可行的。

于 2016-08-08T22:25:35.253 回答