欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

自动调节AWS的步骤

来源:本站整理 作者:佚名 时间:2019-11-20 TAG: 我要投稿

为了在Yelp上将整体应用程序分解为微服务,我们一直在使用AWS Step Functions将多个业务流程迁移到现代架构。
亚马逊宣布发布的AWS Step Functions集成,包括他们的计算、数据库、消息传递、分析和机器学习服务,这使得用户可以把这些服务作为状态机工作流中的步骤。借助AWS Step Functions,亚马逊提供了一种抽象的方法来连接和协调活动,充分利用高度可伸缩的运行时,可视化工作流表示,并且内置了重试、监控和日志机制。
由于Yelp的交易订购涵盖了多种垂直领域,包括食品(送货/外卖订单),订票,上门服务等等。这些订单通过“Step Functions”进行处理,其中每个步骤都表示工作流的执行实例,如下所示:

AWS Step Functions提供了建立完整工作流的功能
上述工作流程中的每个步骤都是一个“活动”,Yelp将这些活动实现为批处理守护程序,这些守护程序通过API集成与AWS Step Functions进行交互,该API集成可获取任务并提交活动执行结果。我们运行这些批处理守护程序的多个实例,并通过内部部署平台PaaSTA进行部署。
要知道,每个工作流程执行(即订单处理)都是有时间限制的。为此,我们启用了“Step Functions”提供的超时功能。工作流中的每个活动都需要在指定的时间内完成,以使工作流中的所有活动所花费的时间总和在工作流超时的限制内。另外,我们还使用活动重试(可针对每个活动进行配置),来实现间歇性可恢复故障情况下的弹性。

SubmitOrder活动执行的放大视图(步骤功能的内部步骤以蓝色显示)
如果我们放大每个工作流程执行的特定活动(本例中为SubmitOrder),每个执行都将以ActivityScheduled状态排队,直到由一个“activity workers”选择为止。由于每个活动的总时间(包括执行和等待时间)是有限制的,所以等待时间较长的任务得到的执行时间较少。这些任务可能需要重试,来自多个活动的级联效应可能会达到工作流超时阈值。由于AWS提供了有关这些任务的等待时间(ActivityScheduleTime)的汇总指标,为了保持工作流处理所需的成功率和延迟,我们需要有一个正常的“activity workers” 指标。
为什么活动实例需要自动伸缩
Yelp上的交易流在一天和一周的过程中都会经历重复的流量模式,在使用新的自动伸缩系统之前,我们使用了Amazon CloudWatch 指标来调整活动实例计数,以满足服务级别的目标。在本文的案例中,我们预配置了静态的活动工作人员数以处理高峰流量,这导致在非高峰时段剩余了大量未使用的计算能力,从而使事务流成为自动扩展的理想用例。
PaaSTA的自动伸缩基于金字塔uwsgi度量标准和CPU使用情况,而Step Functions(SFN)工作流依赖于活动的及时执行(ActivityScheduleTime度量标准)。步进功能Autoscaler可在这两个系统之间架起桥梁,以管理和控制活动实例。
什么是 Amazon CloudWatch?
Amazon CloudWatch 实时监控你的 Amazon Web Services (AWS) 资源以及你在 AWS 中运行的应用程序。你可以使用 CloudWatch 收集和跟踪指标,这些指标是你可衡量的相关资源和应用程序的变量。
CloudWatch 主页自动显示有关你使用的每项 AWS 服务的指标。此外,你还可以创建自定义控制面板,以显示有关自定义应用程序的指标,并显示你选择的指标的自定义集合。
你可以创建警报,这些警报监视指标,当超出阈值时,它们会发送通知或者对你所监控的资源自动进行更改。例如,你可以监控你的 Amazon EC2 实例的 CPU 使用率以及磁盘读写情况,然后使用此数据确定你是否应启动其他实例来处理增加的负载。你还可以使用此数据停止未完全利用的实例以节省开支。
你可通过使用 CloudWatch 全面地了解资源使用率、应用程序性能和运行状况。Amazon CloudWatch 控制台的链接: https://console.amazonaws.cn/cloudwatch/。
Autoscaler架构
CA( cluster-autoscaler)是用来弹性伸缩kubernetes集群的。我们在使用kubernetes集群经常问到的一个问题是,我应该保持多大的节点规模来满足应用需求呢? cluster-autoscaler的出现解决了这个问题,它可以自动的根据部署的应用所请求的资源量来动态的伸缩集群。
CA由以下几个模块组成:
autoscaler:核心模块,负责整体扩缩容功能
Estimator:负责评估计算扩容节点
Simulator:负责模拟调度,计算缩容节点
CA Cloud-Provider:与云交互进行节点的增删操作。社区目前仅支持AWS和GCE,其他云厂商需要自己实现CloudProvider和NodeGroup相关接口。

Autoscaler的不同组件以及与AWS服务和PaaSTA的交互
Autoscaler系统由三个组件组成:AWS服务,Autoscaler服务和PaaSTA系统。在较高级别上,Autoscaler首先获取伸缩配置,然后从AWS端收集伸缩需求,计算伸缩决策,最后调用PaaSTA api来调整实例计数。
AWS组件
我们利用Step Functions Metrics(ActivityScheduleTime度量标准)和Cloudwatch警报来检测任何值得扩展的事件,并利用SNS和SQS服务来中继扩展消息。
更具体地说,每个活动有两个cloudwatch警报:放大和缩小。当警报检测到违反条件时,它会发出“ALARM”通知,由自动呼叫器轮询。当ActivityScheduleTime指标恢复正常时,它将发送一个“OK”通知。
伸缩大脑(Scaling Brain)
收到伸缩消息后,Autoscaler将验证消息,解析和理解请求,然后为特定活动计算具体的伸缩决策。它考虑了用于伸缩决策的两个主要因素:伸缩配置(例如,最小/最大计数和伸缩梯度)和伸缩记录(例如,最后的警报时间和最后的伸缩时间)。

[1] [2]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载