Google Cloud 帮助您根据不断变化的需求去动态伸缩基础架构,Compute Engine 虚拟机服务支持配置自动伸缩以在低需求期间节省成本,而在业务高峰期自动增加容量。
当使用托管实例组 (MIG) 时,您可以让自动缩放程序根据负载的增加或减少自动创建或删除虚拟机 (VM) 实例。但是,很多应用程序需要几分钟来初始化,那么创建虚机就来不及应对快速增加的流量。例如,如果负载大幅增加(例如用户早上醒来时),一些用户可能会遇到访问应用时,新实例上的应用还在启动中。
解决此问题的其中一个好方法是“提前”创建虚机,以便您的应用程序有足够的时间预先初始化。这需要了解即将到来的需求。要是我们能预测未来就好了……好吧,现在我们可以了!
新功能:预测性自动缩放
预测性自动扩缩使用 Google Cloud 的 ML 功能来预测容量需求。它在不断增长的需求之前就创建虚机,为您的应用程序提供足够的时间来初始化。
左图、需求增长了再触发自动创建虚拟机,不会为应用程序启动留下任何缓冲时间。
右图、预测性自动缩放可提前创建 VM,为您的应用程序提供足够的时间来初始化并开始支撑新负载。
工作原理
预测性自动扩展使用实例组 (MIG) 的 CPU 历史记录来预测未来的负载,并计算需要多少虚拟机才能满足您的目标 CPU 利用率。我们的 ML 会根据每个 MIG 的重复负载模式调整预测。
您可以通过配置应用程序初始化时长来指定希望自动缩放系统提前多长时间创建新的虚拟机。例如,如果您的应用程序需要 5 分钟进行初始化,则自动缩放器将在预期负载增加前 5 分钟创建新实例。这使您可以将 CPU 利用率保持在目标范围内,即使在需求快速增长时也能保持应用程序及时响应。
许多客户在一天的不同时间或一周的不同天有不同的容量需求。我们的预测模型会了解每周和每天的模式以弥补这些差异。例如,如果您的应用程序通常在周末需要较少的容量,我们的预测系统就会捕捉到这一点。或者,如果您在工作时间有更高的容量需求,我们也可以自动满足要求。
收益
预测性自动缩放会不断调整预测容量,以最好地满足即将到来的需求。系统每分钟会进行数次预测并创建或删除虚机以匹配预测。预测数据本身每隔几分钟就更新一次,以匹配最近的负载升降趋势,因此如果您的增长率高于或低于平时,系统也将相应地调整预测。这为您提供了覆盖峰值负载所需的容量,同时在需求下降时节省成本。
您可以立刻开始使用预测性自动缩放而无需担心影响当前业务,因为它与当前的自动缩放设置完全兼容。系统将计算足够的虚机以涵盖预测和实时 CPU 负载,以较高者为准。这也适用于其他自动扩缩功能:您可以根据计划、负载均衡器请求目标或根据 Cloud Monitoring 指标进行扩缩。系统通过获取满足所有目标所需的最大数量的虚机,为您的所有配置提供足够的容量。
配置入门
您可以在 Google Cloud Console (控制台)中启用预测性自动缩放。从实例组页面中选择一个允许自动调节的实例组 MIG ,然后点击编辑 Edit group。将预测性自动缩放配置从关闭更改为为可用性优化。
要更好地了解预测性自动扩展是否适合您的应用,请单击该选项下的链接查看预测性自动扩展是否可以优化您的可用性 (See if predictive autoscaling can optimize your availability) 。这将显示过去 7 天使用当前自动缩放配置与启用预测性自动缩放的比较,看是否会到来效果。
上面表格中:
虚机每天超载的平均分钟数 (Average VM minutes overloaded per day) 显示您的虚机超过 CPU 利用率目标的频率,当需求高于可用容量时会发生这种情况。预测性自动缩放可以通过在预期负载之前启动虚机来减少这种情况。
每天的平均虚拟机数量 (Average VMs per day) 是成本的指标。这显示了您需要多少额外的虚机才能将 CPU 利用率保持在您设定的目标内。您可以通过调整最小实例和CPU 利用率 来优化成本,如下所述。
如何优化配置
Cool down period 反映了应用程序从虚机启动到准备好为负载提供服务所需的时间。预测性自动缩放将使用此值在预测负载之前启动虚机。如果将其设置为 10 分钟(600 秒),您的虚机将在预期负载增加的 10 分钟前启动。
查看自动缩放CPU 利用率目标和最小实例数。借助预测性自动缩放,您不再需要缓冲容量来补偿虚机启动所需的时间。如果您的应用程序在 70% 的CPU 利用率下运行最佳,则您不需要将目标设置为低得多的值,因为预测性自动缩放会在正常负载之前启动虚机。更高的 CPU 利用率和更低的最小实例数使您能够降低成本,因为您无需支付额外容量来为不断增长的需求做准备。
预测性自动扩缩功能在所有 Google Cloud 区域中都可用。
文章信息
相关推荐
