S3 目录本地镜像的代理

Eri*_*ton 8 networking proxy amazon-s3

我们的办公室对从我们自己的 Amazon S3 目录访问大文件的需求不断增加。能够快速访问它们对我们的业务很重要,因此我们认为现在是开始在现场保留文件副本的时候了。这不是我的专业领域,所以我希望得到一些建议。

“普通”缓存本身对我们来说是不够的,因为我们甚至想加快对任何给定文件的第一个请求。AWS CLI 能够使本地目录与 S3 保持同步,因此一个想法是在低流量时间按计划运行该目录,然后配置代理以将该目录视为其缓存(如果可能)。

另一个想法是从脚本向缓存代理发出获取请求,以按照类似的时间表保持缓存温暖。

一个警告是 S3 资产是私有的,因此我们在发出每个请求之前对它们的 URL 进行签名。这意味着代理将需要能够根据 URL 提供本地副本,不包括任何查询参数。例如,这两个 url 都应该解析为同一个缓存/镜像文件:

  • https://example.com/asset1.txt?signature=1
  • https://example.com/asset1.txt?signature=2

缓存的大小将以个位数 TB 为单位,处理大约 300 个活跃用户的流量。

所以最后,我的问题:

  • 这些方法中的任何一种听起来合理吗?
  • 任何人都可以推荐可以按照我们需要的方式配置的代理软件吗?
  • 是否有我可以参考的资源来确定此负载的硬件要求?
  • 还有其他想法/建议吗?

Stu*_*uka 6

如果您只需要将本地存储库与基于云的对象存储同步,我会看看 Rclone 或 CloudBerry。Rclone 有一个命令行界面来同步云之间的目录和文件。它适用于最流行的云存储,如 Azure、AWS(S3 和 Glacier)等。https://rclone.org/

此外,如果您想将所有数据备份到云,则有机会进行虚拟磁带库备份并额外卸载到云。因此,如果您需要备份现有基础设施,您可以进行防勒索软件备份并自动卸载到云。它具有重复数据删除和压缩功能,但据我所知,现在 Starwind 是免费提供的。https://www.starwindsoftware.com/starwind-virtual-tape-library

两种解决方案都成熟可靠,您只需要选择所需的选项即可。希望它有帮助。


Ale*_*gue 1

根据您的要求,AWS Storage Gateway可能会满足您的需求。Storage Gateway 是一项 AWS 产品,作为虚拟机部署到您的本地环境中。

我立即想到两种可能适合的存储网关类型:

  • 文件网关将 S3 存储桶提供为 NFS 安装,并包括透明的本地缓存。

  • 卷网关 - 缓存卷呈现为 iSCSI 目标,还包括频繁访问的数据的本地缓存。

Storage Gateway 有一些缺点:

  • 它并非旨在支持多主场景,因此锁定机制的范围仅限于 Storage Gateway(而不是底层 S3 存储桶)。在这两种方案中,多主机方案更适合文件网关,因为它支持RefreshCache API调用,该调用将使用自上次列出网关以来添加/删除/替换的对象来更新本地 VM 中的元数据桶中的内容。

  • Volume Gateway 不提供对底层 S3 存储桶的访问。因此,虽然文件网关由客户控制的 S3 存储桶支持,但卷网关由 AWS 控制的 S3 存储桶支持。这意味着对于卷网关,您在帐户中看不到 S3 存储桶,并且无法将其中的数据作为普通 S3 对象访问。(我找不到支持这一点的文档,但我 95% 确定这是正确的)

还有其他类型的 Storage Gateway,您可以阅读有关AWS Storage Gateway 工作原理的信息

如果您尚未使用Direct Connect,那么您可能需要考虑使用它来实现对 AWS 服务的高带宽、低延迟访问。(我的猜测是,考虑到您提到的数据量,您已经在使用它了)

编辑 2018-05-21: Storage Gateway 定价 使用 Storage Gateway,您需要为底层存储(数据大小 + 请求)和数据传输付费。就是这样。使用 S3 进行存储的任何其他解决方案都会花费相同的费用。