在 EC2 实例之间共享源代码的最佳方式是什么?

Mic*_*caj 5 nfs amazon-ec2

目前我在负载均衡器后面的亚马逊云中有 4 个 EC2 实例,这个数字将增长到 20-30。我正在寻找在所有这些实例上管理源代码的最佳方式。所有实例上都运行着一个 http 服务器 + php。

我需要的是一种同时更新所有实例上的源代码的方法。经过一番研究,我想我找到了一个解决方案 - 创建一个 NFS 服务器并将包含源代码的目录导出到所有实例。每个实例都会挂载这个导出的目录,并将其用作 apache http 服务器的文档根目录。

这种方法是正确的还是您有其他建议?NFS 是否能够同时向所有 EC2 节点共享源代码?

EEA*_*EAA 7

NFS 当然可以用于此目的,但是通过这种方式,您将设置一个非常严重的单点故障。如果 NFS 服务器出现故障,您就完蛋了。此外,使用 NFS 时磁盘 IO 性能会受到影响,因为 NFS 需要额外的网络跃点。

相反,我建议研究像FabricCapistrano这样的部署工具。这些中的任何一个都可以非常快速地将代码推送到您的服务器。如果您担心某些服务器在部署期间暂时“失步”,那么您应该让 LB 在部署新代码之前将该服务器拉出轮换,然后在成功部署后重新添加到轮换中。

附录:“同时部署”是一个白日梦。只是忘记这一点。有几台服务器就够困难了,更不用说几十或几百台了。