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

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

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

这种方法是正确的,还是你build议什么? NFS能够同时将源代码共享到所有EC2节点吗?

NFS肯定可以用于这个,但通过这样做,你正在为自己设置一个非常重要的单点故障。 如果NFS服务器出现故障,您将被拧紧。 另外,使用NFS时,磁盘IO性能将受到影响,因为NFS需要通过networking进行额外的跳跃。

相反,我build议您查看像Fabric或Capistrano这样的部署工具。 其中任何一个都可以将代码快速地推送到您的服务器。 如果担心部分服务器在部署过程中暂时“失步”,那么在部署新代码之前,应该让您的LB将该服务器轮换出来,然后在成功部署后重新添加到轮换中。

附录:“同时部署”是一个梦想。 忘了那个 less数几台服务器就够难了,更不用说数十台了。