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

时间:2011-06-20 11:57:44

标签: apache amazon-ec2 amazon-web-services load-balancing lamp

我正在考虑实施EC2的Elastic Load Balancing功能,但是我正在运行一个频繁更改的Web应用程序(在LAMP堆栈上),并想知道最常见的策略是保持应用程序在服务器之间同步是负载平衡的。数据库将存在于其他地方,因此我只担心(此时)关于在进行更改时保持实际脚本同步。

3 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:4)

解决此问题的一种方法是使用continuous integration,它可以使用rsync传输您的文件并在服务器上构建项目,这还不仅限于此。

有很多可用的插件(PHPUnit,代码覆盖率,代码分析等):

Jenkins

如何:

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

    1. 配置:
      1. configuring - ex.1
      2. Initial configuration
        1. Configuring the jobs
    2. http://agile.dzone.com/news/continuous-integration-php

答案 2 :(得分:0)

您可以在AWS Infra上运行Chef / Puppet。将它集成到Git / SVN中。 SVN的Chef将自动获取新的更改,并定期将其移至您的Amazon EC2 Web服务器。