我正在从单一应用服务器转移到负载平衡配置。
在单服务器配置中,我每隔几分钟通过 S3 cmd sync s3 同步源,并在 hostup(Scalr 事件)时从 S3 同步源。这确保服务器将运行更新的源。
当应用服务器数量动态时,最佳做法是什么?
假设我有 2 台服务器,服务器 A 获得更新的源。如果同步脚本首先在 B 上运行,则服务器 A 将从 B 获取旧文件,而不是相反。
在这种情况下最佳做法是什么?
答案1
以下是集中存储所使用的主要协议:
SSH文件系统- 通过 SSH 传输所有内容,因此非常安全,可以放心地通过互联网使用。如果您需要,SSH 支持透明压缩。但是,SSHFS 可能很难运行。
NFS- 本质上不安全,并使用 IP 地址来区分权限,但通常很容易发挥作用。
就我个人而言,我会尝试 SSHFS,如果它不起作用,则返回到 NFS。
答案2
答案3
您可以使用inotify
( inotifywait
) 和/或rsync
。取决于您有多少个文件、您更新它们的频率以及它们有多大。
答案4
将主源放入 S3。让所有服务器仅在启动时同步(从 S3 拉取)。
当您想要更新服务器时:
- 更新 S3
- 启动新实例(启动时将从 S3 中提取)
- 停止和/或终止运行旧版本的旧实例