我有一个ECS服务,它的任务定义有三个容器:
- 前端容器
- 后端容器
- MongoDB容器
我想在不丢失mongoDB数据的情况下更新前端容器和/或后端容器。
最好的方法是什么?
是否可以在不重新部署整个任务(并丢失数据库数据(的情况下更新服务,而只重新部署我需要的容器?
我应该为mongo-db使用绑定卷吗?这样我就可以在那里保存数据,当重新部署服务时,新的mongo-db容器将从那里检索数据?
希望这是有道理的。提前谢谢。
最好的方法是什么?
理想情况下,您不会在同一任务中运行MongoDB。您可以在单独的ECS任务中运行它(或者直接在EC2实例上运行它(。现在,您无法扩展前端/后端服务,因为这样做会使用一个新的空数据库来启动新的服务实例。
是否可以在不重新部署整个任务的情况下更新服务(并丢失数据库数据(,但只有我需要的容器?
不,这是不可能的
我是否应该为mongo数据库使用绑定卷,以便将数据保存在那里,并且当重新部署服务时,新的mongo数据库容器将从那里检索数据?
如果您正在将ECS任务部署到EC2目标,那么您可以使用绑定装载将DynamoDB数据存储在集群中的一个EC2实例上。然而,如果EC2实例发生故障,您仍然会丢失所有数据。更具容错性和高可用性的方法是将EFS卷绑定到MongoDB容器以存储数据。
如果您正在将ECS任务部署到Fargate,那么绑定挂载将不是一个选项,EFS将是唯一的选项。