为了使用像 OCFS 这样的集群文件系统或在机器之间共享只读数据,需要同时将同一个 SAN 卷/LUN 附加到多个服务器。
如何使用 Amazon EC2 上的 EBS 卷做到这一点?
console.aws.amazon.com 似乎不允许附加已附加的卷,并且亚马逊文档不包含“multiattach”。也许我需要另一个关键字来搜索?
为了使用像 OCFS 这样的集群文件系统或在机器之间共享只读数据,需要同时将同一个 SAN 卷/LUN 附加到多个服务器。
如何使用 Amazon EC2 上的 EBS 卷做到这一点?
console.aws.amazon.com 似乎不允许附加已附加的卷,并且亚马逊文档不包含“multiattach”。也许我需要另一个关键字来搜索?
你不能做这个。EC2 API 不允许这样做。
现在,您可以使用预置 IOPS io1 卷来完成此操作。
AWS 公告:
请注意,有必要使用为多写入或复制设计的文件系统,如 GFS2 或 OCFS2。
如果您想这样做,请使用弹性文件系统 (EFS) 而不是弹性块存储 (EBS)。
https://aws.amazon.com/efs/
笔记:
EBS 仅适用于单个实例。共享一个 EBS 实例就像将同一个物理磁盘放在两台机器上。
如果您想要两个磁盘实例,您可以创建一个 EBS 快照或基于该 EBS 磁盘的 AMI。例如,这将允许您运行 Web 服务器的多个实例。
如果您真的想要数据共享存储,请查看Amazon EFS,或者您可以使用 S3。
正如 EEAA 所述,您不能这样做。
但是,存在一种解决方法:将 EBS 卷附加到单个 Linux 实例,然后通过 iSCSI 导出设备。现在在“客户端”实例上,您只需将卷附加为普通 iSCSI 驱动器。
为了完整起见:请记住,传统文件系统不支持集群。如果您同时从两个 iSCSI 客户端安装磁盘,您将(或多或少)立即损坏您的文件系统(至少是 ext4;xfs 有一些安全保护措施可以防止双重安装)。您必须使用集群感知文件系统,如 OCFS(如您所建议的)或 GFS2。
您可以独立于 AWS 使用 NFS。我记得早在 1990 年代初就使用 NFS 作为在 DNS 轮询上跨多个 SAMBA 服务器共享主目录卷的绝佳方式。在我最近的案例中,我使用多个 Web 服务器来提供媒体和静态数据。
AWS 根本不提供跨多个服务器的卷共享,这没有什么意义,因为如果您在负载均衡器后面有两台服务器,则一次只能由一台服务器访问一个文件。Rackspace 和 Digital Ocean 允许您这样做,但令人沮丧的是,AWS 不允许,除非您在特定区域中。
我创建了一个 ELB 卷,将其附加到一台服务器,然后使用 NFS 将其附加到另一台服务器。在 Ubuntu 上执行此操作的良好说明如下: https ://www.digitalocean.com/community/tutorials/how-to-set-up-an-nfs-mount-on-ubuntu-20-04
更新 正如@Juergen 所指出的,如果要在写入同一区域的客户端访问的服务器上循环共享数据,则 NFS 共享不是一个好主意,因为存在竞争条件的可能性。对于循环到网络服务器的媒体的示例,它运行良好。如果您的 AWS 服务器位于特定区域中,AWS 确实提供了多附加卷。大多数 AWS 区域不提供此服务,如果您的服务器必须位于其中一个区域中,则无法提供。