跨服务器同步源的最佳实践(Amazon EC2)

我正在从单一的应用服务器转移到负载平衡的configuration。

在单个服务器configuration中,我每隔几分钟就通过S3 cmd sync s3同步源,并在hostup(Scalr事件)上同步从S3返回的源。 这确保服务器将运行更新的来源。

当应用程序服务器的数量是dynamic的时候,最佳实践是什么?

假设我有2个服务器,服务器A获取更新的源代码。 如果同步脚本先在B上运行,则服务器A将从B中获取旧文件而不是反过来。

这种情况下的最佳做法是什么?

以下是用于集中存储的主要协议:

  • SSHFS – 通过SSH传输一切,因此它是安全的,可以在互联网上使用,不用担心。 如果需要,SSH支持透明压缩。 但是,SSHFS可能难以工作。

  • NFS – 本质上不安全,并使用IP地址来区分权限,但通常很容易工作。

就个人而言,我会尝试SSHFS,如果不起作用,则会退回到NFS。

我不确定您的来源是什么意思,但我假设您的意思是您的服务器正在服务的Web应用程序代码。

最好的解决scheme是使用共享networking文件系统来dynamic更新源文件。 其中两个最受欢迎的是NFS和GlusterFS 。

您可以使用inotifyinotifywait )和/或rsync 。 取决于你有多less文件,更新的频率以及它们的大小。

把你的主源在S3中。 让所有服务器只在启动时同步(从S3拉)。

当你想更新你的服务器时:

  1. 更新S3
  2. 开始新的实例(从S3开始)
  3. 停止和/或终止运行旧版本的旧实例