Amazon ECS - 实例之间的持久数据

Amazon ECS - Persistent data between instances

您如何最好地处理 Amazon ECS 中具有负载均衡服务的实例之间的持久数据?仅数据容器将不起作用,您可以在任务中指定的卷也不会起作用,它们都只会保留在实例本身上。我一直在尝试阅读有关在启动配置中使用用户数据创建实例时附加 EBS 的内容,但我在那里没有运气。

根据数据需求,我可以想到两种选择:

将 S3 存储桶映射为本地驱动器

您可以共享一个 S3 存储桶并限制对任意数量实例的访问。我们使用 drive mapping solution in Windows that will mount an S3 bucket as a local drive. Similar drivers exist for Linux。因此每个实例都获得相同的映射驱动器,并共享该持久数据。数据是 read/write,因此如果我们缩小或缩小,每个实例都可以以一致的格式访问 S3 数据。

从快照装载卷

正如您所建议的,如果您需要访问 read-only 数据,您可以使用用户数据脚本在启动时从快照装载卷。您只需要一个脚本,以及 credentials/IAM 在启动时 运行 适当命令的角色

您可以使用 Amazon EFS 跨 ECS 容器和实例共享文件系统。 EFS 基于 NFS,因此它可以同时挂载在多个主机实例上。这允许集群调度和扩展按预期工作。在此处查看以这种方式持久保存 MySQL 数据的教程:

https://aws.amazon.com/blogs/compute/using-amazon-efs-to-persist-data-from-amazon-ecs-containers/

我建议使用 Amazon EFS (https://aws.amazon.com/blogs/compute/using-amazon-efs-to-persist-data-from-amazon-ecs-containers/)。

只是添加一个限制,即只有 4 个区域支持 EFS。

欧盟(爱尔兰)

美国东部(弗吉尼亚北部)

美国东部(俄亥俄)

美国西部(俄勒冈)

如果您所在的区域不受支持,那么我们可以实施您自己的 NFS 共享以在 EC2 实例之间共享持久文件夹。 S3FS 看起来很酷,但它有很多问题(我在 2 年前测试过。今天情况可能会改变)