AWS 自动缩放现有实例

AWS autoscaling an existing instance

这个问题有概念部分和实践部分。

从概念上讲,我想知道使用自动缩放功能是否等同于将计算能力简单地增加一个增加实例数量的因子?

实际上...这是如何工作的?我有一个 运行 实例,它的数据库位于由多个 EBS 卷组成的 LVM 上,所有网站数据也是如此。从实例上的负载来看,我要么需要升级到更强大的实例,要么引入这种自动缩放。它是 运行 服务器的副本吗?如果是这样,数据库(等)如何保持一致?

我已经通读了 AWS 文档,但仍未了解情况 - 我可以设置一个自动缩放组,这可能会消除我的疑虑,但我对使用生产服务器执行此操作持怀疑态度.

欢迎向正确的方向提出任何建议。

通常情况下,如果您的解决方案也使用数据库,并且解决方案中有几台机器,则数据库通常不在任何一台机器上,而是单独托管,每台工作机器都指向同一个数据库 - 如果你已经在 AWS 平台上了,那么 DynamoDB 或 RDS 都是很好的解决方案。

从理论上讲,对于某些应用程序,升级单机的大小与添加几台较小的机器具有相同的功能,但增加单机的大小,而通常这些一开始最容易做的事情,不应被视为自动缩放并且有其自身的缺点。以下是一些需要考虑的事项:

  • 使用多台机器而不是一台大机器会给你一些容错能力。一台或多台机器可能会停机,如果您的解决方案设计得当,新机器将启动以取代它们。
  • 增加单机解决方案的规模意味着您可能付出了太多代价。如果您将单台机器的大小设置得足够大以处理峰值工作负载,这意味着在其他时候(可能是大部分时间),您正在为一台比您需要的更大的机器买单。如果您正确设置了自动缩放解决方案,则更多机器会响应不断增加的需求而联机,然后当需求减少时它们就会停止运行——您只需在需要时为所需的电力付费。
  • 当您以这种方式设计您的解决方案时,您需要将所有工作机器视为短暂的 - 可能随时消失,因此您需要以不同的方式构建您的解决方案。除了使用托管数据库(如 DynamoDB 或 AWS RDS)之外,您也不应该将任何数据存储在您的自动缩放组中的机器上,这些数据也不会存在于其他地方。例如,如果您的应用程序的一部分允许用户上传图像,您不会将它们存储在实例上,而是将它们存储在 S3 中。这同样适用于任何其他进来的新数据。

您需要能够比喻地 'pull the plug' 在您的 ASG 中的任何机器上随时进行而不丢失数据。

最终,正确设置的自动缩放解决方案可能会更好地为您服务,但毫无疑问,只 'buy a bigger machine' 更简单,而且您在 运行 上花费的额外资金可能是更大的机器您不必花费时间和精力来重新构建您的解决方案以在自动缩放环境中正确 运行。您的解决方案的独特要求将最终决定哪种方法更好。