8

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

4

3 回答 3

11

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

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

于 2016-12-06T10:39:43.843 回答
3

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

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

欧盟(爱尔兰)

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

美国东部(俄亥俄州)

美国西部(俄勒冈)

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

于 2017-01-20T12:53:17.737 回答
2

根据数据需求,您有两种我能想到的选择:

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

您可以共享一个 S3 存储桶并限制对任意数量的实例的访问。我们在 Windows 中使用驱动器映射解决方案,将 S3 存储桶装载为本地驱动器。Linux 也存在类似的驱动程序。因此,每个实例都获得相同的映射驱动器,并共享该持久数据。数据是读/写的,所以如果我们缩小或缩小,每个实例都可以以一致的格式访问 S3 数据。

从快照挂载卷

正如您所建议的,如果您需要访问的是只读数据,您可以使用 Userdata 脚本在启动时从快照挂载卷。您只需要一个脚本和凭证/IAM 角色即可在启动时运行适当的命令

于 2016-01-27T00:07:51.247 回答