是否有可能在没有停机的情况下更新网站,而没有在AWS上使用Elastic Load Balancer?

我有一个独立的EC2实例托pipe的ASP.NET MVC应用程序。 我的Route53托pipe区域具有EC2实例的弹性IP的logging。

我没有Elastic Load Balancer,我没有一个要求。

是否有可能将我的网站的新版本部署到AWS中, 而不需要停机或不需要build立和支付Elastic Load Balancer?

执行切换到新应用程序部署(EC2实例)的最简单方法可以像这样工作:

  1. 启动/configuration另一个EC2实例并在其上部署新版本的应用程序
  2. testing新的部署
  3. 当您准备好将旧的EC2实例的EIP重新分配给新的实例时

在重新分配EIP地址期间,这个方法肯定会引入一些最小的停机时间。 这不是一个实时操作。

您也可以执行经典的DNS切换(蓝/绿部署),从旧应用部署切换到新应用部署。 您可以在指定的Route53 DNS区域中拥有两个加权(例如CNAME)资源logging,指向您的旧部署和新部署。 处理DNS查询时,Route53将使用基于这些权重计算的概率select一个答案。 要执行切换,您将初始为“旧”logging权重100,“新”logging权重为0。 最后,你只需交换这些权重。 这种方法的唯一缺点是传播DNS更改可能需要一些时间,所以您无法控制用户何时会感知到它。 这是因为许多客户端不遵守DNS TTL值,并且会将DNScaching数天,即使logging具有TTL(例如60秒)。

  1. “旧”重量= 100,“新”重量= 0 – 只使用“旧” 仅旧的部署
  2. “旧”重量= 75,“新”重量= 25 – 开始testing“新” 测试新的
  3. “旧”重量= 0,“新”重量= 100 – 切换到“新”重量 切换到新的

顺便说一下,关于“AWS上的蓝/绿部署”有一个很好的演示。