在部署新代码时防止网站出现故障

时间:2017-05-30 10:53:38

标签: amazon-web-services tomcat nginx amazon-ec2 webserver

我正在运营一个电子商务网站,它正在获得不错的流量。

我们的网站在以下堆栈上运行:

  1. WebApp使用在Apache Tomcat上运行的Java构建
  2. 我们正在使用Nginx作为网络服务器
  3. 我们在AWS的EC2实例上运行我们的网络服务器 - 它以Ubuntu作为操作系统。
  4. 我们经常部署新的网站代码以包含新功能和错误修正。我们按照以下程序执行此操作:

    1. 关闭apache tomcat
    2. webapps目录
    3. 中删除ROOT webapp
    4. ROOT.war目录
    5. 中上传了新的webapps
    6. 重启apache tomcat
    7. 现在这个过程导致网站关闭大约20-30秒。这不仅会导致新客户在当时无法访问网站而导致新客户流失,而且还会导致与正在结账的现有客户签订订单时出现多个问题。

      有没有办法解决这个问题?通过这种方式,我可以部署新版本的网站,而无需停机0次,也不会丢失现有客户的会话数据。

1 个答案:

答案 0 :(得分:3)

这是一个非常广泛的问题,有许多可能的答案。

基本上你需要摆脱单一框设置并创建 - 手动/通过Cloudformation /其他东西 - 位于Elastic Load Balancer后面的2个或更多应用服务器。部署新版本时,其中一个框会使其实时流量耗尽,因此现有用户将由另一个工作实例提供服务。

或者您可以使用elastic beanstalk打包应用程序并让它为您完成所有繁重的工作,如果您的应用程序非常直接,这是一种非常AWS的方式。

在互联网上搜索蓝绿色部署