因此,我正在尝试了解有关 AWS EC2 Auto Scaling 的更多信息,并试图弄清楚存储在实例之间究竟是如何工作的。创建新实例时,它看起来像每个实例的新 EBS 卷。
如果我在 EC2 Auto Scaling 上运行 Web 服务器,如何将内容传输到每个新创建的 EC2 实例。有没有办法在所有 EC2 Auto Scaling 实例中使用一个 EBS 卷?我读过有关 Elastic File System 的文章,但不确定如何在创建新实例时将卷附加到这些实例。
在此先感谢您的帮助。
答案1
不可以,EBS 只能连接到一个 EC2 实例。您可以将其想象为普通硬盘 - 它也只能连接到一台机器。您可以在实例之间切换 EBS,但不能将其连接到多个实例。
EFS 只是像 nfs 或 samba 这样的网络文件系统,您可以使用 fstab 挂载它。但您必须检查您所在地区是否可以使用 EFS!
据我了解,您正在尝试让所有机器之间共享文件存储。在这种情况下,您可以通过多种方式实现此目的:
如果您不需要常规文件系统,则可以使用 S3。这是 AWS 中推荐的方式。但 S3 不是文件系统,而是带有 rest api 的对象存储,因此您不能使用常规方法访问其上的文件,而必须使用 amazon SDK。S3 的大小几乎不受限制,并且多次访问也没有问题。您甚至可以将 S3 用作 CloudFront CDN 的后端。
如果您需要常规文件系统,则有几种方法。您可以使用可用的 EFS,也可以使用 gluster 构建一些存储虚拟机并将其安装到您的实例。您肯定需要自定义 AMI,并在 fstab 中安装、准备 HA、备份等。但它的工作原理与常规 FS 一样吗?它是共享的和即时的 - 在机器 A 上创建的文件可以在机器 B 上立即访问
如果您只需要将应用程序部署到新启动的 EC2,则可以使用 CodeDeploy 或 OpsWorks 告诉自动扩展组将您的应用程序部署到新的 EC2 上。但它仅适用于有限数量的发行版,我认为仅适用于 Amazon Linux、RHEL 和 Ubuntu。
如果您需要将该存储同步到所有 EC2 上,但又不想设置某些存储 EC2,那么您可以跨集群运行 rsync。这种方式有点棘手,如果实例数量很多,可能会出现问题。您也无法使用 rsync 实现即时共享。
推荐的解决方案取决于您的需求,我使用两个 EC2 实例,其中所有应用服务器上都安装了大型 EBS 和复制的 gluster 卷。效果很好。