无需停机即可更新 AWS EC2
Posted
技术标签:
【中文标题】无需停机即可更新 AWS EC2【英文标题】:AWS EC2 update without downtime 【发布时间】:2016-01-11 18:51:10 【问题描述】:我是否可以在不停机的情况下在 EC2 中更新我的应用程序?或者像暂停但不重启之类的东西
【问题讨论】:
问题太宽泛了。您应该详细说明您的应用外观以及您尝试部署的方式 【参考方案1】:AWS Elastic Beanstalk 可以用来实现这一点。
正如here 所述,这个想法是用您的应用程序的最新版本创建一个新环境,并在部署后交换当前生产环境和新部署的生产环境的 CNAME,从而实现零停机时间。
【讨论】:
【参考方案2】:如果您只有一个 EC2 实例并且您的应用程序是 Web 应用程序,您可以将您的应用程序 dockerize 并使用任何 Web 代理在 docker 容器之间进行切换,并且停机时间为零。
假设您的应用位于 docker 容器 A 中:
Internet --> nginx Proxy --> Container A
更新应用时,需要将其部署在新的容器 B 上:
Internet --> Nginx Proxy --> Container A
Container B
重新配置你的代理切换到容器B,在Nginx中,你可以service nginx reload
而不杀死Nginx:
Internet --> Nginx Proxy Container A
`--> Container B
移除旧容器 A:
Internet --> Nginx Proxy --> Container B
而且,您的部署时间为零。
看看我在https://***.com/a/33085105/3427434 中的回答。那里的脚本和我在这里所说的一样。
【讨论】:
以上是关于无需停机即可更新 AWS EC2的主要内容,如果未能解决你的问题,请参考以下文章
为啥AWS弹性beantalk滚动版本更新仍然有503s的2分钟停机时间?
sh 使用iptables规则进行IP转发以更新DNS而无需停机时间\o /
AWS - ECS - 如何在现有 ECS(带有 1 个 EC2)实例上重新部署更新的 Docker 映像?