我有一项托管在 Amazon Web Services 上的服务。我有多个 EC2 实例运行着完全相同的设置和数据,由弹性负载均衡器和扩展组管理。
这些实例是运行基于 PHP 的 Web 应用程序的 Web 服务器。因此,目前每个实例上都放置了完全相同的文件等。但是,当 ELB/扩展组根据负载规则等启动新实例时,文件可能不是最新的。
此外,我宁愿使用共享文件系统进行 PHP 会话等,而不是粘性会话。
因此,我的问题是,出于这些原因以及将来可能会出现的更多原因,我希望有一个可以附加到我的 EC2 实例的共享文件系统实体。
您建议用什么方法来解决这个问题? AWS 是否直接提供任何解决方案,以便我可以依赖他们的服务,而不是通过 DRBD 等自行完成?最简单的方法是什么? DRBD、NFS,...? S3 也能实现这些目的吗?
提前致谢。
正如评论中提到的,AWS 已经宣布了 EFS (http://aws.amazon.com/efs/ http://aws.amazon.com/efs/)共享网络文件系统。目前它的预览版非常有限,但基于之前的 AWS 服务,我希望在接下来的几个月内看到它普遍可用。
与此同时,AWS 有一些第三方共享文件系统解决方案,例如 SoftNAS
S3 是可能的,但并不总是理想的,主要障碍是它本身不支持任何文件系统协议,相反,所有交互都需要通过 AWS API 或通过 http 调用。此外,当考虑将其用于会话存储时,“最终一致”模型可能会导致问题。
话虽这么说,如果您需要的只是更新资源,您可以创建一个简单的脚本作为 cron 运行或在启动时从 s3 下载文件。
最后,对于像 css/images 这样的静态资源,首先不要将它们存储在您的 Web 服务器上 - 有很多文章介绍了直接从 s3 存储和访问静态 Web 资源同时将动态内容保留在您的服务器上的好处。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)