如何为多个AWS EC2实例设置共享持久存储?

时间:2015-05-21 08:53:40

标签: amazon-web-services amazon-ec2

我在亚马逊网络服务上托管了一项服务。我有多个EC2实例运行完全相同的设置和数据,由Elastic Load Balancer和扩展组管理。

这些实例是运行基于PHP的Web应用程序的Web服务器。因此,目前每个实例上都放置了相同的文件等。但是当ELB /扩展组根据加载规则等启动新实例时,文件可能不是最新的。 另外,我更喜欢使用共享文件系统进行PHP会话等而不是粘性会话。

所以,我的问题是,由于这些原因以及未来可能会出现更多,我希望有一个共享文件系统实体,我可以将其附加到我的EC2实例。 您建议以什么方式解决此问题?是否有AWS直接提供的解决方案,因此我可以依赖他们的服务而不是使用DRBD等来实现它?什么是最简单的方法? DRBD,NFS,......? S3对那些打算是否可行?

提前致谢。

7 个答案:

答案 0 :(得分:3)

正如评论中所述,AWS已宣布EFS(http://aws.amazon.com/efs/)为共享网络文件系统。它目前的预览非常有限,但基于之前的AWS服务,我希望在接下来的几个月内能够看到它。

与此同时,AWS还有一些第三方共享文件系统解决方案,例如SoftNAS https://aws.amazon.com/marketplace/pp/B00PJ9FGVU/ref=srh_res_product_title?ie=UTF8&sr=0-3&qid=1432203627313

S3是可能的,但并不总是理想的,主要阻止者本身不支持任何文件系统协议,而是所有交互都需要通过AWS API或http调用。另外,当将其用于会话商店时,最终会保持一致的'模型可能会引发问题。

话虽如此 - 如果你需要的只是更新的资源,你可以创建一个简单的脚本,作为cron运行或在启动时从s3下载文件。

最后,对于像css / images这样的静态资源,首先不要将它们存储在您的网络服务器上 - 有很多文章介绍了直接从s3存储和访问静态Web资源的好处,同时保留了您服务器上的动态内容。

答案 1 :(得分:1)

为了使您的网络服务器会话保持同步,您可以轻松切换到Redis或Memcached作为会话处理程序。这是PHP.ini中的一个简单设置,它们都可以访问相同的Redis或Memcached服务器来进行会话。您可以使用Amazon的Elasticache,它将为您管理Redis或Memcache实例。

http://phpave.com/redis-as-a-php-session-handler/< - 解释如何使用PHP轻松设置Redis

保持文件同步有点复杂。

  

如何将新代码更改推送到我的所有网络服务器?

你可以使用Git。部署时,您可以设置多个服务器,它会将您的分支(主服务器)推送到多个服务器。所以每个新版本都会出现在所有网络服务器上。

  

推出的新机器怎么样?

我会设置新机器来运行来自可信来源(主Web服务器)的rsync脚本。这样他们就可以在启动时将他们的web文件夹与主文件夹同步,即使AMI中有旧的Web文件,它们也是相同的。

  

如果文件发生变化并需要实时更新?

在S3中存储任何用户上传的文件。因此,如果用户在服务器1上上载文档,则该文件存储在s3中,并且位置存储在数据库中。然后,如果服务器2上有不同的用户,他可以看到相同的文件并将其访问,就像它在服务器2上一样。该文件将从s3中检索并提供给客户端。

答案 2 :(得分:1)

从目前我们可以看出,EFS有望在SSD支持的存储上提供基本的NFS文件共享。一旦可用,它将成为v1.0专有文件系统。没有加密和仅限AWS。数据完全受AWS控制。

SoftNAS是一款成熟的,经过验证的先进的基于ZFS的NAS Filer,功能齐全,包括加密的EBS和S3存储,用于数据保护的存储快照,用于DevOps和QA测试的可写克隆,用于最大IOPS的RAM和SSD缓存以及吞吐量,重复数据删除和压缩,跨区域HA和100​​%正常运行时间SLA。它支持使用LDAP和Active Directory身份验证的NFS,支持AD用户/组的CIFS / SMB,iSCSI多路径,FTP和(很快)AFP。 SoftNAS实例和所有存储完全由您控制,您可以完全控制EBS和S3加密和密钥(您可以使用EBS加密或任何Linux兼容的加密和您喜欢或需要的密钥管理方法)。

ZFS文件系统是经过验证的文件系统,受到全球数千家企业的信赖。如今,客户在SoftNAS上运行的文件已超过6亿个--ZFS能够扩展到数十亿个。

SoftNAS是跨平台的,可在AWS以外的云平台上运行,包括Azure,CenturyLink Cloud,Faction云,VMware vSPhere / ESXi,VMware vCloud Air和Hyper-V,因此您的数据不受限制或锁定到AWS 。计划更多平台。它提供跨平台复制,可以在任何受支持的公共云,私有云或基于场所的数据中心之间轻松迁移数据。

SoftNAS得到云存储专家(我们所做的一切)的行业领先技术支持的支持,这是您可能需要或想要的东西。

这些是EFS和SoftNAS之间值得注意的一些差异。有关更详细的比较图表:

https://www.softnas.com/wp/nas-storage/softnas-cloud-aws-nfs-cifs/how-does-it-compare/

如果您愿意推出自己的HA NFS群集,并负责其关心,提供和支持,那么您可以使用Linux和DRBD / corosync或任何其他Linux群集方法。你必须自己支持并对发生的事情负责。

还有GlusterFS。它可以处理多达250,000个文件(在我们的测试中),并且在接近100万个文件时被观察到IOPS停电,并且IOPS停电超过100万个文件(根据使用它的客户而言)。据报道,对于规模较小的部署,它的运行情况相当不错。

希望有所帮助。

首席技术官 - SoftNAS

答案 3 :(得分:0)

Amazon EFS投入生产之前,我认为最好的方法是构建从EC2实例导出NFS的存储后端,可能使用Pacemaker/Corosync来实现HA。

您可以创建一个存储文件的EBS卷,并指示Pacemaker卸载/拆卸,然后将EBS卷连接/挂载到健康的NFS群集节点。

答案 4 :(得分:0)

您好我们目前在AWS环境中使用名为SoftNAS的产品。它允许我们在EBS和S3支持的存储之间进行选择。它内置了复制功能和高可用性选项。可能是你可以看看的东西。我相信他们提供了一个可以在AWS上试用的免费试用版

答案 5 :(得分:0)

我们正在使用ObjectiveFS,它对我们来说效果很好。它使用S3进行存储,并且可以直接设置。

他们还撰写了一篇关于如何在EC2实例之间共享文件的文档。 http://objectivefs.com/howto/how-to-share-files-between-ec2-instances

答案 6 :(得分:0)

GlusterFS也是一个开源分布式文件系统,许多人用它来创建跨EC2实例的共享存储