我正在 Amazon AWS 上设置负载平衡系统。我将上传照片到我的服务器,然后从另一台设备读取服务器上的照片。
假设我的负载均衡器上有Server-A
和Server-B
正在运行。如果我上传了一张照片并点击Server-A
,那么我假设我将无法在上看到这张照片Server-B
。
处理这个问题的最佳方法是什么?我是否应该创建一个Server-C
来保存照片,并Server-C
从使用负载平衡器访问的任何服务器进行访问?那么就没有负载平衡了Server-C
,所以我必须设置一个备份服务器,每隔 X 分钟复制一次文件Server-C
?
非常感谢您的想法。
答案1
您将需要一个分布式文件系统,例如 GlusterFS 或 NFS,并在服务器 C 和 D(冗余)上运行 DRBD,以便将包含照片的数据目录共享到服务器 A 和 B。
相反,正如 jamieb 所建议的,如果你将其上传到 S3 并从那里检索,那么它会简单得多。这将比在 HA 模式下运行 2 个实例并实现 99.99999% 的可用性更便宜(~0.13 美元/GB)。
有多种语言的 SDK 可以与 S3 通信——http://aws.amazon.com/code/
您可以使用 s3cmd 等工具与 s3 通信以进行文件上传和下载
答案2
不,实例状态必须一致(需要相同)才能在负载均衡器后面正常工作。此问题的正确解决方案是将您的照片直接上传到 S3。