首页 > 解决方案 > 定期修改 AWS AMI

问题描述

我正在开发一个使用 node.js 作为服务器和 MongoDB 作为数据库的 Web 应用程序。我的服务器和 MongoDB 都托管在同一个 AWS EC2 实例中。

现在,我正在着手为该实例启动 AWS Auto Scaling。因此,如果该实例以某种方式关闭,它将自动创建另一个新实例。因此,我正在拍摄我的 EC2 实例的映像并创建一个 AMI 并将其附加到 Auto Scaling 中,这样当 Auto Scaling 创建一个新实例时,它会从 AMI 启动,因此将自动配置新实例。这个过程运行良好。

但现在的问题是,因为我的 MongoDB 在同一个 EC2 实例中,所以数据库每秒都在修改。但是我之前手动创建了 AMI,所以每次 Auto Scaling 启动一个新实例并在那里添加 AMI 时,AMI 中没有更新的数据库并且我丢失了一些数据。

我有一个解决方案,定期使用 AWS lamda 函数动态创建 AMI,但我还没有找到一种方法来附加动态创建的 AMI 以自动附加自动缩放。

而且每次DB更改后修改AMI是不可行的,所以仍然有可能丢失一些数据。

那么有人能告诉我解决这个问题的最佳解决方案是什么吗?

标签: amazon-web-servicesamazon-ec2aws-lambdaautoscalingamazon-ami

解决方案


正常的方法是将你的计算和数据分开

Auto Scaling 组中的 Amazon EC2 实例应处理请求,但不应在本地存储数据。

MongoDB 数据库应在 Auto Scaling 组之外维护,以便 Auto Scaling 组中的所有实例都可以访问它。即使您在 Auto Scaling 组中只有一个实例,正如您指出的那样,它也可能被另一个实例替换。然后,您可以将数据库备份与工作程序实例分开。

您也可以考虑使用与 MongoDB 兼容的Amazon DocumentDB 。


推荐阅读