您可以将Amazon EBS附加到多个实例吗?
我们目前使用多个Web服务器访问一个MySQL服务器和文件服务器。 看着转移到云,我可以使用这个相同的设置,并将EBS附加到多个机器实例或另一种解决scheme?
UPDATE(2015年4月) :对于这种用例,您应该开始查看新的Amazon弹性文件系统(EFS) ,该弹性文件系统旨在以您想要的方式进行多次连接。 EFS和EBS之间的主要区别在于它们提供了不同的抽象:EFS公开NFSv4协议,而EBS提供原始块IO访问。
下面你会发现我原来的解释,为什么不能在多台机器上安装一个原始块设备。
ORIGINAL POST(2011):
即使您能够将EBS卷连接到多个实例,也会是_REALLY_BAD_IDEA_。 引用Kekoa的话,“这就像是一次在两台电脑上使用硬盘”
为什么这是一个坏主意? …不能将卷附加到多个实例的原因是EBS提供了一个“块存储”抽象,客户运行ext2 / ext3 / etc等文件系统。 大多数这些文件系统(例如,ext2 / 3,FAT,NTFS等)是假定它们具有对块设备的独占访问权限来编写的。 两个访问相同文件系统的实例几乎肯定会以stream泪和数据损坏而告终。
换句话说,如果您正在运行一个旨在在多台机器之间共享一个块设备的群集文件系统,双重安装一个EBS卷将仅起作用。 而且,即使这样也是不够的。 EBS将需要针对此场景进行testing,并确保它提供与其他共享块设备解决scheme相同的一致性保证…即,块不会caching在中间非共享级别,如Dom0内核,Xen层,和DomU内核。 然后在多个客户端之间同步块的性能考虑因素 – 大多数集群文件系统被devise为在高速专用SAN上工作,而不是一个尽力而为的商品以太网。 这听起来很简单,但你要求的是一件非常平凡的事情。
或者,查看您的数据共享scheme是否可以是NFS,SMB / CIFS,SimpleDB或S3。 这些解决scheme都使用高层协议,旨在共享文件,而无需共享块设备子系统。 很多时候,这样的解决scheme实际上更有效率。
在你的情况下,你仍然可以有一个单一的MySql实例/文件服务器,可以访问多个Web前端。 该文件服务器可以将其数据存储在EBS卷上,让您可以进行夜间快照备份。 如果运行文件服务器的实例丢失,您可以分离EBS卷并将其重新附加到新的文件服务器实例,并在几分钟内备份并运行。
“有没有像S3一样的文件系统? – 是和不是。 是的,有像s3fs这样的第三方解决scheme可以“正常”工作,但是在这种情况下,他们仍然需要为每个读写操作进行相对昂贵的Web服务调用。 对于共享工具目录,工作很好。 对于您在HPC世界看到的那种FS集群使用情况,不是一个机会。 为了做得更好,你需要一个新的服务来提供一个面向二进制连接的协议,比如NFS。 提供这样一个具有合理性能和行为的多装载文件系统将是EC2的一个很棒的function附件。 我一直以来都是亚马逊的倡导者。
不,这就像在两台电脑上使用硬盘一样。
如果你想共享数据,你可以设置一个服务器,你的所有实例都可以访问。 如果您想为所有实例设置简单的存储区域,则可以使用Amazon的S3存储服务来存储分布式和可扩展的数据。
移到云端,您可以拥有完全相同的设置,但可以用S3replace文件服务器,或者将所有实例连接到文件服务器。
您有很多select,但在实例之间共享硬盘可能不是最佳select。
不,根据EBS文档:“卷一次只能附加到一个实例”。
你目前如何使用共享存储? 如果仅仅是从文件服务器提供文件,你有没有考虑build立一个系统,以便你可以代理某些请求到文件服务器上的进程,而不是让networking服务器提供这些文件?
我相当肯定你不能,但你可以克隆一个EBS并将它附加到另一个实例。
这对于固定数据集或对“真实”数据进行testing是有用的,但不允许在单个块存储上操作多于一个的实例
访问MySQL服务器和文件服务器的多个Web服务器在AWS中是正常的。 上述架构的一些最佳实践是:
要点1)EC2上的MySQL可以在AWS中以asynchronous/半同步模式设置为主从。 高性能数据库build议使用RAID 0中的EBS-OPT + PIOPS
第2点)或者,您可以使用Amazon RDS +多可用区模式。 对于读取扩展多个RDS只读副本可以连接到MySQL RDS。
点3)EBS卷不能同时连接到多个EC2。 您可以使用EBS在Amazon EC2上基于GlusterFS创build文件服务器。 多个Web服务器可以在AWS下同时与单个GlusterFS交谈。
要点4)如果您的应用程序可以作为文件存储与S3集成,那么由于它为架构带来的稳定性,它是首选。 您也可以使用S3fuse等工具从您的应用程序访问S3。
在IT世界中有一些被称为Clustered Filesystem,Redhat GFS,Oracle OCFS2,Veritas CFS的东西…
你为什么不创build一个实例与卷和sshfs在其他情况下的卷?
您可以在AWS中的多个服务器上完全使用一个驱动器。 我使用sshfs来安装一个外部驱动器,并与EC2中的多个服务器共享。
我需要将单个驱动器连接到多个服务器的原因是,在将所有备份放在本地之前,只需一个地方就可以放置所有备份。