定期修改AWS AMI

时间:2019-06-23 18:46:16

标签: amazon-web-services amazon-ec2 aws-lambda autoscaling ami

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

现在,我正在为实例启动AWS Auto Scaling。因此,如果某个实例关闭,它将自动建立另一个新实例。因此,我正在拍摄EC2实例的映像并创建AMI,并使用自动缩放对其进行附加,以便当自动缩放创建新实例时,它将从AMI引导,因此将自动配置新实例。而且这个过程很好。

但是现在的问题是,因为我的MongoDB在同一EC2实例中,所以数据库每秒都在被修改。但是我是较早地手动创建的AMI,因此每次自动缩放启动一个新实例并在其中添加AMI时,AMI中都没有更新的数据库,并且丢失了一些数据。

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

此外,在每次更改数据库后修改AMI是不可行的,因此仍然有机会丢失一些数据。

那么有人可以告诉我什么是解决此问题的最佳解决方案?

1 个答案:

答案 0 :(得分:3)

通常的方法是分隔计算和数据

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

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

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