【问题标题】:How to self-deploy web applications running in AWS EC2 Spot Windows instances?如何自行部署在 AWS EC2 Spot Windows 实例中运行的 Web 应用程序?
【发布时间】:2016-12-14 19:19:10
【问题描述】:

我的 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 实例自动添加到负载均衡器?假设有一个脚本可以获取应用程序的最新版本,它可以在完成后将实例添加到负载均衡器。

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      • 2020-06-20
      • 2014-05-21
      • 1970-01-01
      • 1970-01-01
      • 2020-05-08
      • 1970-01-01
      相关资源
      最近更新 更多