我有一些在Amazon EC2上运行的Windows服务器实例,并希望通过运行带有负载平衡器的重复实例来使它们更具容错性。
问题是具体数据,例如,如果文档根目录(即C:/ htdocs /(Apache)或C:/ Repositories(VisualSvn服务器))的内容从一个Web服务器故障切换到另一个Web服务器,不完全相同。
有没有办法在两个或多个实例上共享一个卷?
我的想法是共享EC2之间的文件夹:

阅读它不可能将相同的EBS卷附加到多个实例。 我相信AWS也不是NFS友好的,以防万一我想跨NFS安装它们。
最后,我也检查了使用s3fs安装的S3存储桶,但是我发现这也不是一个好的select。
任何人都可以帮助我指出正确的方向吗?
在多个EC2实例之间共享一个EBS卷是不可能的。
您的图表将数据卸载到共享服务器。 但是,这个共享服务器只是另一个单点故障。 所以你不保存任何东西:如果该服务器的AZ失效,那么即使在另一个AZ中的Web服务器/ VisualSVN服务器仍在运行,你已经丢失了数据。
你应该把你的服务器分成两个独立的服务器/集群,这样它们可以独立处理:
对于Web服务器,您是否真的需要在多实例scheme中对卷进行镜像,或者可以随时保持实例的可终止性,而不会丢失数据? 理想情况下,您不会将任何数据本地保存到实例中。 相反,您可以将所有数据从服务器保存到数据库或Amazon S3。 这样,所有的实例都可以使用这些数据。 如果服务器丢失,则没有数据。 使您的“主”AMI,并从该主AMI创build一个自动缩放组中的所有实例。 当您的Web服务器代码发生更改时,请部署新的AMI,终止旧的实例并从新的AMI创build新的实例。
对于VisualSVN服务器,要问的问题是VisualSVN是否可以处理在其上运行的卷数据,而无需关心它。 例如,如果正在运行的进程在RAM中caching一些数据,如果某个硬盘驱动器的同步过程出现在硬盘驱动器的同步过程之后又会如何改变硬盘驱动器呢? 这可能是VisualSVN服务器根本无法处理多实例场景。 根据答案,您可能无法群集VisualSVN服务器。 VisualSVN服务器有可能拥有自己的群集function。 如果是这样,那么你应该调查。
这是一个在AWS中被使用了很长一段时间的用例。 正如在这个线程中所描述的,两种常见的方法是使用S3或NFS在实例之间共享数据访问。
2015年4月9日 ,亚马逊宣布了亚马逊弹性文件系统(Amazon EFS) ,它提供了您在图表中所要求的内容。
我相信标准的Windows Server方法可能会在您的体系结构问题中使用群集的Windows共享存储空间来实现图中的“共享文件系统”块,从而将节点分布到至less两个可用区域。
这理论上给你一些看起来像标准文件共享的应用程序,但没有单点故障。 这对你的情况可能是过度的,但是如果你想要容错,这将有助于防止额外的故障情况。
虽然不是特定于您的问题,但本文中有关Windows Server故障转移群集的文章可能有助于了解此项工作的范围: http : //aws.amazon.com/microsoft/whitepapers/microsoft-wsfc-sql-alwayson/