AWS 中的 Auto Scaling 究竟是如何工作的?

How exactly does Auto Scaling in AWS work?

我看了文档,但还是没看懂。 AWS 论坛需要时间来回答。这是我的场景:

我在 EC2 实例中有代码,但需要将该实例加入扩展组。已经创建了一个,所以我加入了它,因为它是 "unused"。马上注意到我的实例终止,我在实例中丢失了 all 我的代码。只有伸缩组中的原始实例维护了自己。

现在我的问题是:缩放应该有助于相同服务性能吗?因为:

这意味着我可以通过 SSH 连接到一个,但是如果我通过 SSH 连接到另一个,是否会有相同的代码?

因此,在尝试了解是否需要尝试恢复我终止的 EC2 实例和了解所有这些过程之间,我必须承认我很迷茫,因为没有什么能真正激发 "merely incrementing process power" 信心,所以我真的不不知道怎么办。

简短的回答。自动缩放使用水平缩放(添加更多实例)而不是垂直缩放(增加 CPU/memory 分配)

为了成功使用自动缩放,您需要使用无共享架构原则设计您的应用程序。实例本身不能存储持久数据。相反,您可以将其存储在 S3 或不属于自动缩放组的其他实例上。

得知您丢失了宝贵的信息,我们深表遗憾。了解 Auto Scaling 的一件事是实例可以终止,因此在设计它们时应考虑到这一点。

自动缩放的用途

Auto Scaling 旨在动态调整 Auto Scaling 组中的 实例数量 以处理给定的 compute/processing 要求。可以在事情忙时自动添加实例,并在事情不忙时自动终止。

Auto Scaling 使用 启动配置 自动创建新实例,它描述了要启动的实例类型、要使用的磁盘映像 (AMI),安全组、网络设置、启动脚本等。当然,每个新实例都会收到自己的私有 IP 地址和(如果已配置)自己的 public IP 地址。

想法是可以在 无需手动干预 的情况下启动新实例,并且 Auto Scaling 组中的所有实例通常配置相同(因为它们正在执行相同的操作工作)。

当不再需要一个实例时,该组为"scaled-in",这意味着一个实例被终止。实例上的所有数据都丢失了。 (实际上,终止后磁盘可以保留,但后期处理起来很痛苦,所以最好不要这样做。)

终止实例是可以的,因为在 Auto Scaling 启动新实例时可以轻松地重新创建它们。不幸的是,在您的情况下,您使用自己的配置向现有的 Auto Scaling 组添加了一个实例。因此,您有责任确保您能够处理实例丢失的问题。手动将实例添加到现有的 Auto Scaling 组是非常不常见的——通常是将一些流量发送到测试实例或进行 A/B 试验。

为什么终止了?

附加到您的 Auto Scaling 组的 扩展策略 可能决定您的容量过多(由于实例数量增加),因此决定终止一个实例.

正在恢复您终止的实例

您终止的实例不能是"recovered",但您的磁盘仍然可用的可能性很小。默认情况下,启动 Amazon EC2 实例时,启动磁盘标记为 终止时删除 ,但其他磁盘默认标记为 终止时删除。因此,如果您的代码位于非启动磁盘上,它可能仍可在您的 Volumes 选项卡中使用。

但是,如果您的代码位于已删除的磁盘卷上,则内容无法恢复。 (好吧,如果你有支持,你可以问他们,但这不太容易,特别是如果删除后时间已经过去了。)

参见:AWS Auto Scaling documentation