在分布式应用管理中,弹性伸缩是很重要的一个运维能力。弹性伸缩能够感知应用内各个实例的状态,并根据实例状态动态实现应用扩容、缩容,在保证服务质量的同时,提升应用的可用率。部署在EDAS的容器服务K8s集群和Serverless K8s集群中的应用,均可以参照本文完成自动弹性伸缩策略的配置。

应用场景

互联网、游戏类等应用在促销活动期间容易出现突发性流量洪流,SLA和资源成本不易平衡,极易造成系统响应延迟、系统瘫痪等问题。EDAS继承阿里巴巴应对双11的流量洪流技术,提供秒级自动弹性功能,保证SLA的同时也节省实例保有成本。多适用于互联网、游戏以及社交平台等行业。

背景信息

部署在EDAS的容器服务K8s集群和Serverless K8s集群中的应用,可以配置弹性策略。

在弹性策略内,可以配置多个触发器。
  • 当K8s集群版本低于V1.15.0时,任意一条触发器运行失败,将不会进行扩缩容。
  • 当K8s集群版本为V1.15.0或以上版本时,任意一条触发器运行成功,即可成功扩缩容。当多条触发器运行成功时,应用目标实例数=max(触发器1目标实例数,触发2目标实例数,...,触发器N目标实例数)。
注意
  • 弹性策略启用后,无法对应用执行停止启动手动扩缩操作。如果必须执行,请先停止弹性策略,再执行。
    • 如果应用配置了Service,SLB,在发生弹性伸缩时,EDAS会自动将扩容的应用实例添加到后端服务器列表,并将缩容的实例从后端服务器列表中移除。
    • 如果应用配置了持久化存储,在发生弹性伸缩时,EDAS会自动将扩容的应用实例与配置的持久化存储进行关联。
  • 执行应用变更(如部署应用、应用扩缩、变更规格等)时,无法添加弹性策略。
  • Kubernetes集群不具备节点自动扩容能力时,应用弹性扩容可能无法工作,您可以前往集群页面配置节点弹性伸缩。

操作步骤

您可以配置多个触发器,EDAS将根据触发器自动为您扩容和缩容应用实例。

  1. 登录EDAS控制台
  2. 在左侧导航栏中单击应用列表,在顶部菜单栏选择地域并在页面上方选择微服务空间,然后在应用列表页面单击具体的应用名称。
  3. 在应用详情页面的左侧导航栏选择应用设置 > 弹性伸缩,然后单击添加弹性策略
    您也可以在应用总览页面右上角,选择扩缩 > 弹性扩缩,然后单击添加弹性策略
  4. 策略名称的文本框中输入自定义的弹性策略名称。
  5. 触发条件区域单击新增触发器,然后在右侧弹出的新增触发器面板配置触发器规则,配置完成后单击确定
    参数 描述
    触发器名称 必须以字母开头,允许数字、字母、短划线(-)或下划线(_)组成。最大长度30个字符。
    触发器类型 选择系统提供的触发器类型,当前支持定时触发器应用指标触发器
    • 定时触发器
      1. 周期:您可在下拉列表中选择每天每周
        说明 选择每周后根据需求可选择具体日期来配置触发规则,如果一周内不同日期的单天内触发规则不同,可通过创建多条定时触发器来实现。
      2. 单天内的触发时间:通过单击添加来创建每天的触发时间和实例数。
        注意
        • 如果错过设定的触发时刻,定时策略需要等到下一周期才会被触发。
        • 两个邻近触发时间间隔要大于10分钟。
      3. 之后保持实例数:据实际情况设置弹性策略执行后保持的实例数,可设置范围为0~50。
        说明 建议您将之后保持实例数设置在最小应用实例个数最大应用实例个数的范围内,如果超出范围,在保存弹性策略时会提示定时触发器保持实例数已超出最大最小实例数范围,但仍能保存成功。
    • 应用指标触发器
      1. 指标名:支持选择应用提供服务平均每秒请求量应用提供服务平均响应时间(毫秒)应用平均CPU使用率应用平均内存使用率四种指标。
      2. 目标值:设置期望的监控指标目标值,系统会帮您自动扩缩实例数,无限接近您设置的目标值。
        说明 当应用监控指标的实际值小于目标值时,系统会自动帮您缩容实例。反之,系统会自动帮您扩容实例。
    方式 根据需要选择触发器的运行方式:
    • 仅观测:观测触发器指标,当指标达到期望值时发送事件,不触发扩缩容动作。
    • 观测并扩缩:观测触发器指标,当指标达到期望值时发送事件,触发扩缩容动作。
    说明 当选择应用平均CPU使用率应用平均内存使用率作为触发器指标时,不支持选择触发器运行方式。
  6. 配置最大应用实例个数最小应用实例个数
    • 最大应用实例个数:可设置的范围为2~1000。触发弹性伸缩条件后,应用扩容,其实例数可达到最大值。
    • 最小应用实例个数:可设置的范围为0~1000。触发弹性伸缩条件后,应用缩容,其实例数可达到最小值。
    说明
    • 应用目标实例数=max(触发器1目标实例数,触发2目标实例数,...,触发器N目标实例数)
    • 当目标实例数大于当前实例数时,EDAS则对应用进行扩容,其应用实例数不超过所设的最大应用实例个数;反之,则进行缩容,其应用实例数不低于所设的最小应用实例个数
    • 最小应用实例个数不得等于最大应用实例个数
    • 建议当前实例数在您设置的最小应用实例个数最大应用实例个数范围内,如果不在范围内,保存弹性策略时会提示应用当前运行实例数已超出最大最小实例数范围,但仍能保存。
  7. 完成以上配置成后单击保存
  8. 在弹性策略页面右上角单击启用
    触发弹性策略后,如果EDAS依据所设策略对应用实例进行扩容或者缩容,表示自动弹性成功。

结果验证

启用弹性策略后,EDAS将自动依据弹性策略进行应用实例扩缩容,您可以通过以下步骤来查看扩缩容的详细事件记录。

  1. 弹性伸缩页面的右上角单击事件
  2. 事件中心页面右上角,设置查询事件的时间范围。
  3. 事件中心页面,单击普通视图页签。
  4. 普通视图页签,在事件来源的下拉列表中选择K8s事件,在事件类型的下拉列表中选择ScalingReplicaSetDryRunSuccessfulReScale,然后单击Search
    • ScalingReplicaSet:以观测并扩缩方式触发生成的事件记录,可查看到扩缩容的详细记录。
    • DryRunSuccessfulReScale:以仅观测方式触发生成的事件记录,未触发扩缩容动作。
    弹性伸缩事件

更多信息

弹性策略启用后,您可以对弹性策略进行删除停止启用编辑,还可以进行一系列应用管理操作。

说明 当弹性策略启用后,无法对应用执行停止启动手动扩缩操作。如果必须执行,请先停止弹性策略,再执行。