Amazon web services 防止网站在部署新代码时宕机

Amazon web services 防止网站在部署新代码时宕机,amazon-web-services,tomcat,nginx,amazon-ec2,webserver,Amazon Web Services,Tomcat,Nginx,Amazon Ec2,Webserver,我正在运行一个电子商务网站,这是获得体面的流量 我们的网站在以下堆栈上运行: WebApp是在apachetomcat上运行的Java中构建的 我们使用Nginx作为web服务器 我们正在AWS的EC2实例上运行我们的Web服务器,该实例使用Ubuntu作为操作系统 我们经常部署新的网站代码,包括新的功能和错误修复。我们遵循以下程序进行此操作: 关闭ApacheTomcat 从webapps目录中删除根webapp 在webapps目录中上载了新的ROOT.war 重新启动ApacheTomca

我正在运行一个电子商务网站,这是获得体面的流量

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

  • WebApp是在apachetomcat上运行的Java中构建的
  • 我们使用Nginx作为web服务器
  • 我们正在AWS的EC2实例上运行我们的Web服务器,该实例使用Ubuntu作为操作系统
  • 我们经常部署新的网站代码,包括新的功能和错误修复。我们遵循以下程序进行此操作:

  • 关闭ApacheTomcat
  • webapps
    目录中删除根webapp
  • webapps
    目录中上载了新的
    ROOT.war
  • 重新启动ApacheTomcat
  • 现在这个过程导致网站关闭大约20-30秒。这不仅会导致当时的新客户流失,因为他们无法访问该网站,而且还会导致当前正在结账下单的客户出现一些问题


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

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

    基本上,您需要摆脱单框设置,并创建(手动/通过/其他方式)2个或更多位于一个应用程序服务器后面的应用程序服务器。在部署新版本时,其中一个盒子的实时流量将被耗尽,因此现有用户将由另一个工作实例服务

    或者你可以用它来打包应用程序,让它为你完成所有繁重的工作,这是一个非常好的方法,特别是如果你的应用程序非常简单的话


    在internet上搜索蓝绿色部署。

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

    基本上,您需要摆脱单框设置,并创建(手动/通过/其他方式)2个或更多位于一个应用程序服务器后面的应用程序服务器。在部署新版本时,其中一个盒子的实时流量将被耗尽,因此现有用户将由另一个工作实例服务

    或者你可以用它来打包应用程序,让它为你完成所有繁重的工作,这是一个非常好的方法,特别是如果你的应用程序非常简单的话


    在internet上搜索蓝绿色部署。

    感谢您的投入,我已经考虑过弹性负载平衡器,但如果是这样,我将为另一个EC2付出额外成本。我正试图避免这种情况。我读过弹性豆茎,但还没有尝试过,因为我不确定它是否符合我的要求。难道不可能在EC2本身上创建负载平衡器吗?我将在单个EC2上运行2 tomcat的实例是的,您可以运行HA Proxy、nginx、apache或其他东西,但这是另一个问题。此外,您还可以通过使用2个较小的实例而不是1个较大的实例来解决成本问题:2 x t2。较小的成本与1 x t2相同。中等。感谢您的指导,我第一次听到了蓝绿色部署。我正在研究你提出的所有可能性。最后一个问题,在你看来,在我目前的情况下,你能建议的最佳解决方案是什么。鉴于信息有限,使用选项将删除你的一个框作为单个故障点,因此在ELB后面有两个较小的实例。然后,您可以研究Beanstalk或其他服务,因为它使部署或回滚非常容易。感谢您的投入,我考虑过弹性负载平衡器,但在这种情况下,我将为另一个EC2承担额外成本。我正试图避免这种情况。我读过弹性豆茎,但还没有尝试过,因为我不确定它是否符合我的要求。难道不可能在EC2本身上创建负载平衡器吗?我将在单个EC2上运行2 tomcat的实例是的,您可以运行HA Proxy、nginx、apache或其他东西,但这是另一个问题。此外,您还可以通过使用2个较小的实例而不是1个较大的实例来解决成本问题:2 x t2。较小的成本与1 x t2相同。中等。感谢您的指导,我第一次听到了蓝绿色部署。我正在研究你提出的所有可能性。最后一个问题,在你看来,在我目前的情况下,你能建议的最佳解决方案是什么。鉴于信息有限,使用选项将删除你的一个框作为单个故障点,因此在ELB后面有两个较小的实例。然后,您可以研究Beanstalk或其他服务,因为它使部署或回滚非常容易。