【问题标题】:Persistant EBS on AWS EC2 instancesAWS EC2 实例上的持久 EBS
【发布时间】:2018-09-17 14:22:39
【问题描述】:

我有 t2.micro EC2 实例在 AWS 上运行。为了处理流量高峰,我创建了自动缩放组,它可以动态增加和减少来自 AMI 的 EC2 实例。到这里为止一切都很好。问题是我的用户登录数据库在同一个 EC2 实例中。当生成新的 EC2 实例时,它不包含主 EC2 实例中新添加的用户。如果新用户在新实例中创建帐户,它会在实例终止时丢失。有没有办法让所有实例都有一个 EBS 卷?

请向我指出一些有关在 AWS 上构建可扩展 Web 应用程序的有用资源。

【问题讨论】:

  • 我假设您的用户存储在数据库中,但是您所说的链接到操作系统的方式,我想确认您的所有应用程序数据和应用程序用户都存储在实际数据库中,而不是使用操作系统用户。对吗?
  • 是的,用户存储在真实数据库中。
  • 您的数据库是否也存储在同一个 EC2 实例上?为什么要为用户分配操作系统登录名?用户在您的系统上做什么?随时编辑您的问题以提供更多详细信息。

标签: amazon-web-services amazon-ec2


【解决方案1】:

您面临的问题是不鼓励使用这种模式(都在同一个实例中)的主要原因。这适用于您的应用很小且没有获得大量流量的情况。

您应该做的是从应用程序实例中提取数据库并将其移动到 RDS(半托管将阻止您执行许多任务,例如服务器修补、定期备份、配置副本集等)。此外,RDS 将为您提供简单的多可用区部署,帮助您实现真正的容错。不过,此步骤是可选的 - 您可以启动一个新的 EC2 实例并在那里手动安装您的数据库(但将其专用于数据库用途)。

您的架构应该类似于下图;

ELB ---> INSTANCE 1 --> RDS DB INSTANCE
     |                       ^
     |-> INSTANCE 2 ---------|
     |                       |
     |-> INSTANCE n ---------|

如果您想扩展,您应该尽可能保持实例无状态。同样的方法适用于您存储在它自己的实例中的文件;您应该将它们移至 S3(或者如果您所在地区可用,您也可以使用 Elastic File System)

【讨论】:

  • 这就是我所看到的最重要和最有用的答案。谢谢!如果我可以问,还有一个问题。我的自动缩放实例是使用 AMI 创建的。如果我在实时服务器上更新代码,我的 AMI 将不会更新。有解决方案吗?因为我可能需要经常修复我的错误并更改自动缩放配置,这不是一个真正的选择。
  • 不幸的是,您只有几个选择:1/ 开发一些代码以根据新代码自动创建新的 AMI,并更新您的自动缩放组以使用新的 AMI,2. 开发一个应用程序,可以在启动时将新版本部署到那些自动缩放的实例,或者 3. 确保新生成的实例有一个启动脚本(AWS 用户数据),它将自动更新本地应用程序版本
  • 在我的公司中,我们设置了自动缩放生命周期钩子,以便从自动缩放产生的每个实例都进入临时的“等待 - 等待”状态,在此期间通知被发送到“部署者”机器负责将新的应用版本部署到此实例
猜你喜欢
  • 2020-09-10
  • 2015-05-14
  • 1970-01-01
  • 2022-01-05
  • 2020-06-20
  • 2018-12-29
  • 1970-01-01
  • 2013-05-27
  • 2016-01-05
相关资源
最近更新 更多