【问题标题】: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 熔断缓存的方式)。
【解决方案3】:
您可以在 AWS Infra 上运行 Chef/Puppet。将此集成到 Git/SVN。 Chef 将自动从 SVN 获取新的更改,并定期将其移动到您的 Amazon EC2 Web 服务器中。