【问题标题】:Load balancing web servers + keeping content synced负载平衡 Web 服务器 + 保持内容同步
【发布时间】:2011-09-18 15:20:53
【问题描述】:

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

【问题讨论】:

  • 我也有这个问题:(

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


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    Jenkins

    如何:

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

    参考:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2015-04-01
        • 2011-04-07
        • 2011-09-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-21
        • 2019-04-22
        相关资源
        最近更新 更多