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

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

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

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

当应用服务器数量动态时,最佳做法是什么?

假设我有 2 台服务器,服务器 A 获得更新的源。如果同步脚本首先在 B 上运行,则服务器 A 将从 B 获取旧文件,而不是相反。

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

答案1

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

  • SSH文件系统- 通过 SSH 传输所有内容,因此非常安全,可以放心地通过互联网使用。如果您需要,SSH 支持透明压缩。但是,SSHFS 可能很难运行。

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

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

答案2

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

最好的解决方案是使用共享网络文件系统来保持源的动态更新。最流行的两种方法是NFS集群文件系统

答案3

您可以使用inotify( inotifywait) 和/或rsync。取决于您有多少个文件、您更新它们的频率以及它们有多大。

答案4

将主源放入 S3。让所有服务器仅在启动时同步(从 S3 拉取)。

当您想要更新服务器时:

  1. 更新 S3
  2. 启动新实例(启动时将从 S3 中提取)
  3. 停止和/或终止运行旧版本的旧实例

相关内容