负载平衡web服务器+保持内容同步



我正在考虑实现EC2的弹性负载平衡功能,但我正在运行一个频繁更改的web应用程序(在LAMP堆栈上),并想知道在负载平衡的服务器之间保持应用程序同步的最常见策略是什么。数据库将位于其他地方,所以我只担心(在这一点上)在进行更改时保持实际脚本的同步。

这取决于您更新脚本的频率:

  • 最常见的解决方案是将共享组件存储在EBS卷中,创建一个快照,然后从实例装载该快照-要么作为根设备(允许您在所有实例中保持整个代码状态同步),要么作为辅助卷(仅包含您的代码,允许您使用其他用户构建的AMI,如Canonical)
  • 对于频繁的更新,像rsync这样的简单解决方案可能是赢家,或者,您可以将它们保留在S3上,并使用S3 fuse模块直接从S3装载脚本(使用此解决方案,您最终可能会在S3 GET请求的数量上花更多的钱,这取决于S3 fuse缓存的方式)

解决此问题的一种方法是使用连续集成,该集成可以通过rsync传输文件并在服务器上构建项目,这还不是刚刚开始。

有相当多的插件可用(PHPUnit、代码覆盖率、代码分析等):

詹金斯

如何:

  1. 安装Jenkins
  2. 使用Jenkins配置您的项目(可能您的代码应该在某个代码版本系统中)
    1. 配置服务器、项目路径、作业前、作业后等
  3. 安排工作/作业
  4. 就这样,完成了

参考:

  1. 配置:
    1. 配置-例如1
    2. 初始配置
      1. 配置作业
  2. http://agile.dzone.com/news/continuous-integration-php

您可以在AWS Infra上运行Chef/Puppet。将其集成到Git/SVN中。Chef将自动从SVN获取新的更改,并定期将其转移到您的亚马逊EC2网络服务器中。

最新更新