我有一个简单的Web应用程序部署在EC2的大型实例。 我现在想把最新的代码部署到这个服务器上,但是我想这样做的方式是尽量减less停机时间,并尽可能平稳地为最终用户。 这是我的计划:
这似乎是一个好策略吗? 有没有可能涵盖这个主题的教程或书籍? 我已经阅读了George Reese的“Cloud Application Architectures”,这是一本很好的书,但没有涉及部署。 另外,我知道有些工具可以帮助像RightScale或者enStratus这样的工具,当我开始使用多个实例的时候我会使用它。
这看起来像一个很好的总体方法。 您可以削减第2步,从而降低启动时间,创build一个自定义AMI,其中包括您需要的所有软件层; 话虽如此,我仍然会在启动时更新所有的软件包,以确保您获得所有最新的安全更新。
您可能还想考虑使用EBS支持的实例 – 这样,您可以在EBS上安装启动卷,软件堆栈和应用程序,这样可以省略上述几个步骤。
好的,刚才有人问我这个问题,但是我还是会用我的2分钱报出来。 我想你错过了云计算的好处 。
首先,您应该将您的应用程序代码和您的持久数据分隔在2个不同的虚拟机上。 这会在虚拟机之间的通信延迟中花费一点,但是应该让你的pipe理更简单。 请记住,拥有2个小型虚拟机而不是1个大型虚拟机并不昂贵; 所以请select最符合您需求的主机数量。
如果可能的话,你希望你的应用程序服务器是“无状态的”,因为它们不应该有持久的数据,你应该能够用最less的手工工作产生一个新的实例。
其次,你应该考虑一下像SimpleDB或Relational Database Service(托pipeMySQL)这样的亚马逊托pipe服务是否适合您的持久性数据存储。
理想的stream程看起来像这样: