我有一个提供二进制文件(图像等)的 Web 应用程序。我们的应用程序运行在亚马逊 EC2。我们原本打算使用亚马逊 S3存储和提供这些文件,这不再是一个选择。
我们需要传输这些文件HTTPS用一个别名记录。这显然是不可能的亚马逊 S3由于许多技术原因。亚马逊提供弹性块存储 (EBS)允许您安装最大 1TB 的块到一实例。我们将有多个实例并行访问此数据。
我在想的是使用像移动文件系统/格鲁瑟夫/[在此处插入更多]和弹性块存储 (EBS)。
我的问题是:其他人目前正在做什么来创建一个可扩展(几百 TB)的文件存储系统?亚马逊 EC2无需使用亚马逊 S3那是多余的吗?数据仍将备份在亚马逊 S3但所有读取都将脱离文件系统。
提前致谢。如果有人需要澄清任何事情,请随时询问。
答案1
在Azouk(以前链接域处于休眠/停放状态)中,我们不使用 Amazon EC2,而是使用 GlusterFS(1.4.0qa92)来提供所有内容,如 PDF、用户文件、缩略图,以及离线数据分析。恕我直言,在 Amazon 的云上部署相同的架构应该没有问题——我们已经大量使用虚拟化(尤其是 OpenVZ)。唯一的潜在限制是通过 fuse 安装 GFS(虚拟化可能会禁止这样做),但据我所知,在 Amazon 上是可能的。
因此,我推荐 Gluster,很抱歉我无法特别帮助亚马逊 :)
答案2
一个非常古老的问题突然再次出现在头版上...:-)
所以我的问题是:其他人目前正在做什么来在 Amazon EC2 上创建可扩展(几百 TB)的文件存储系统,而不使用冗余的 Amazon S3?
没什么,在 AWS 上您可以使用 S3 作为 100 TB 的 BLOB 存储,其他任何事情都是毫无意义的。
我们需要使用 CNAME 通过 HTTPS 传输这些文件。由于许多技术原因,这显然无法通过 Amazon S3 实现。
没错,但是通过其他方式也是可以的。
由于您需要在自己的域名上进行 HTTPS 访问,因此您需要在 EC2 节点上设置几个 HTTPS 服务器(或代理),作为 Internet 和 S3 之间的 SSL 加密/解密网关。
我从未与Apache 流量服务器(以前称为 Inktomi),但它看起来非常适合。否则,可以使用 nginx 或 Apache 进行 SSL 处理,如果需要缓存,可以使用 Squid 或 Varnish。
从高层次来看,请求-响应看起来像这样:
Internet request via https -->
(optional) Elastic Load Balancing -->
EC2 instance with SSL capable HTTP proxy (fx nginx) -->
plain unencrypted http to S3
此外,您需要一种确定的方式来处理 URL 重写。Fx.https://secure.yourdomain.com/<id>
被重写为http://<bucket>.s3.amazonaws.com/<id>
答案3
我知道Acquia 在 EBS 上运行 Gluster使用 EC2。因此从技术上来说,它似乎可以工作。
答案4
我目前正在构建一个基于 Gluster 3.1 和 EBS 的复制集群文件系统,并通过 FUSE 客户端进行访问。
如果您对包含大量文件调用的 Web 应用程序进行了大量投资,并且想要升级到从多个负载平衡应用服务器进行访问 - 并创建可扩展的复制存储而无需重写所有文件访问代码,这似乎是您唯一简单的选择。
我还没有完成这个项目,所以我对最终结果没有太多的反馈。有一个简单的教程这里