【问题标题】:AWS autoscaling an existing instanceAWS 自动缩放现有实例
【发布时间】:2017-09-02 18:46:09
【问题描述】:

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

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

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

我已经通读了 AWS 文档,但还没有得到图片 - 我可以设置一个自动缩放组,这可能会消除我的疑虑,但我对使用生产服务器执行此操作非常谨慎。

欢迎任何朝着正确方向的推动。

【问题讨论】:

    标签: amazon-web-services autoscaling


    【解决方案1】:

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

    理论上,对于某些应用来说,升级单机的大小会给你增加几台更小的机器一样的力量,但是增加单机的大小,虽然通常这些最容易做的事情,不应该被认为是自动缩放并且有其自身的缺点。以下是一些需要考虑的事项:

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

    您需要能够随时在 ASG 中的任何机器上“拔掉插头”而不会丢失数据。

    最终,正确设置的自动缩放解决方案可能会为您提供更好的服务,但毫无疑问,“购买更大的机器”会更简单,而且您在运行更大的机器上花费的额外资金可能会被时间所抵消并且您不必花费精力重新构建解决方案以在自动缩放环境中正确运行。您的解决方案的独特要求将最终决定哪种方法更好。

    【讨论】:

    • 谢谢。没有 RDS 或 DynamoDB 可以做到吗?
    • 是的,任何数据库都可以工作,只是您不希望数据库位于将成为 Auto-scale 组一部分的其中一个框上。
    猜你喜欢
    • 2019-10-09
    • 1970-01-01
    • 2021-04-20
    • 2012-06-19
    • 1970-01-01
    • 2015-03-18
    • 1970-01-01
    • 1970-01-01
    • 2017-03-17
    相关资源
    最近更新 更多