我们办公室对从我们自己的 Amazon S3 目录访问大型文件的需求日益增加。能够快速访问这些文件对我们的业务来说非常重要,因此我们认为是时候开始在现场保留这些文件的副本了。这不是我的专业领域,所以我希望得到一些建议。
仅靠“普通”缓存对我们来说是不够的,因为我们想要加快对任何给定文件的第一次请求。AWS CLI 能够使本地目录与 S3 保持同步,因此一个想法是在流量较少时按计划运行它,然后配置代理以将该目录视为其缓存(如果可能)。
另一个想法是按照类似的时间表从脚本向缓存代理发出获取请求,以保持缓存温暖。
需要注意的是,S3 资产是私有的,因此我们在每次发出请求之前都会对其 URL 进行签名。这意味着代理需要能够根据 URL 提供本地副本排除任何查询参数。例如,这两个 URL 都应解析为同一个缓存/镜像文件:
https://example.com/asset1.txt?signature=1
https://example.com/asset1.txt?signature=2
缓存的大小将达到数兆兆字节,并处理大约 300 个活跃用户的流量。
最后,我的问题是:
- 这两种方法听起来合理吗?
- 有人可以推荐可以按照我们需要的方式配置的代理软件吗?
- 是否有我可以查阅的资源来确定此负载的硬件要求?
- 还有其他想法或建议吗?
答案1
如果您只需要将本地存储库与基于云的对象存储同步,我会考虑 Rclone 或 CloudBerry。Rclone 有一个命令行界面,用于在云之间同步目录和文件。它适用于大多数流行的云存储,如 Azure、AWS(S3 和 Glacier)等。https://rclone.org/
此外,如果您想将所有数据备份到云中,则有机会进行虚拟磁带库备份,并将额外的负载卸载到云中。因此,如果您需要备份现有基础设施,则可以进行防勒索软件备份,并自动将负载卸载到云中。它具有重复数据删除和压缩功能,但据我所知,Starwind 目前免费提供此功能。https://www.starwindsoftware.com/starwind-virtual-tape-library
两种解决方案都成熟可靠,您只需选择所需的选项即可。希望对您有所帮助。
答案2
取决于你的要求AWS 存储网关可以满足您的需求。Storage Gateway 是一款 AWS 产品,可作为虚拟机部署到您的本地环境中。
我立即想到了两种可能适合的 Storage Gateway:
文件网关将 S3 存储桶作为 NFS 挂载,并包含透明的本地缓存。
卷网关 - 缓存卷作为 iSCSI 目标呈现,并且还包括经常访问的数据的本地缓存。
Storage Gateway 也存在一些缺点:
它不是为了支持多主场景而设计的,因此锁定机制的范围仅限于存储网关(而不是底层 S3 存储桶)。在这两种情况下,多主方案更适合文件网关,因为它支持刷新缓存API调用该调用将使用自网关上次列出存储桶内容以来添加/删除/替换的对象来更新本地虚拟机中的元数据。
卷网关不提供对底层 S3 存储桶的访问。因此,虽然文件网关由客户控制的 S3 存储桶支持,但卷网关由 AWS 控制的 S3 存储桶支持。这意味着对于卷网关,您在帐户中看不到 S3 存储桶,并且您无法将其中的数据作为普通 S3 对象访问。(我找不到支持这一观点的文档,但我 95% 确定这是正确的)
还有其他类型的存储网关,您可以阅读AWS Storage Gateway 的工作原理。
如果你还没有使用直接联系那么您可能需要考虑使用它来高带宽、低延迟地访问 AWS 服务。(考虑到您提到的数据量,我猜您已经在使用它了)
编辑2018-05-21: 存储网关定价 使用 Storage Gateway,您需要为底层存储(数据大小 + 请求)和数据传输付费。就是这样。任何其他使用 S3 进行存储的解决方案都将收取相同的费用。