如何镜像 AWS EC2 实例数据?

如何镜像 AWS EC2 实例数据?

我们可以将一个 EC2 实例数据镜像到另一个吗?例如,让我们考虑以下场景:

我已经将 ELB 与两个 EC2 实例连接。

  • 实例 A

  • 实例 B

在里面实例A我创建了一个简单的 PHP 文件,名为“test.php”。现在我必须在实例 B 中创建一个相同的文件吗?或者我有自动完成的方法吗?另外,你能告诉我这个场景在自动缩放方法中是如何反应的吗?因为在我的测试中,当我在实例 A,不适用于 实例 B

答案1

我们可以把一个 EC2 实例数据镜像到另一个吗?

您可以使用 等软件自行镜像数据rsync。您还可以利用Amazon S3Amazon Elastic File System作为数据的中心位置。您还有其他选择,这些只是几个例子。

在实例 A 中,我创建了简单的 PHP 文件名“test.php”。

这听起来像是可以存在于 Git 仓库中的东西。

在这种情况下,您可以在本地更新您的 repo(在您的开发机器上),然后将您的更改推送到您的业务流程服务器。

这些更改随后会传播到您的所有应用服务器(或者作为一种粗略/简单的替代方案,您可以让 cron 每 15 分钟在每个应用服务器上执行一次 git pull)。

另外,您能告诉我这种情况在自动缩放方法中如何反应吗?

自动扩展要求您更新 AMI 并将更新后的 AMI 注册到 ELB。每次 EC2 上的数据发生变化时都必须执行此操作。因此,自动化发布流程是个好主意。

答案2

答案3

Amazon EC2 没有 EBS 卷的自动镜像功能。因此,当您修改 EBS 卷 A 上的数据时,您需要在 EBS 卷 B 上重复此操作。

有几种方法可以使用网络驱动器在 EC2 实例之间共享数据。在这些情况下,您有一个外部服务器托管网络驱动器,每个 EC2 实例都连接到该服务器。NFS 就是一个例子,Amazon Elastic File System 是一种即将推出的替代方案。

我也听说有些人使用rsync它来同步数据。

在自动扩展场景中,您不想直接在 EC2 实例上修改数据。相反,您希望使用工具在 EC2 实例之外修改数据,并将新数据部署到所有 EC2 实例。执行此操作的一些方法包括使用 CloudFormation/Elastic Beanstalk、Chef(也许?),或创建新的 AMI 映像并重新创建自动扩展的 EC2 实例。

答案4

您到底期望发生什么?EC2 实例是具有自己文件系统的独立虚拟机。

要在多个 EC2 实例之间同步数据,你可以使用与任何其他服务器/VM 解决方案相同的选项:使用应用程序创建自定义启动设备 (AMI)、使用复制到所有实例的部署流程,或者使用某些共享文件系统(设置 NFS 服务器或使用亚马逊弹性文件系统当其可用时)。

相关内容