在分布式应用管理中,弹性伸缩是很重要的运维能力。弹性伸缩能够感知应用内各个实例的状态,并根据实例状态动态实现应用扩容、缩容。本文介绍如何通过手动扩缩和自动弹性伸缩功能,实现应用实例数增加和减少,在保证服务质量的同时,高效的利用应用资源、降低应用资源成本。

为什么使用扩容缩

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

手动扩容缩容

  1. 登录EDAS控制台
  2. 按需执行以下任一操作来进入应用的详情页面:
    • 在左侧导航栏选择资源管理 > 容器服务K8s集群(或资源管理 > Serverless K8s集群),在顶部菜单栏选择地域并在页面上方选择命名空间,在容器服务K8s集群Serverless K8s集群页面单击集群ID,然后在集群详情页面的应用列表区域单击具体应用名称。
    • 在左侧导航栏选择应用管理 > 应用列表,在顶部菜单栏选择地域并在页面上方选择命名空间,在集群类型下拉列表中选择容器服务/Serverless K8s集群,然后单击目标应用名称。
  3. 应用总览页面右上角,选择扩缩 > 手动扩缩
  4. 应用扩缩容对话框中设置要扩容或缩容的应用总Pod数,单击确认
    如果将Pod数量设置为0,系统将物理删除该应用下所有的Pod,仅保留应用的基本创建信息。

容器服务Kubernetes版集群应用的扩容或缩容在配置完成后,将在集群内自动完成,无需手工操作。

自动弹性伸缩

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

注意
  • 弹性策略启用后,无法对应用执行停止启动手动扩缩操作。如果必须执行,请先停止弹性策略,再执行。
  • 执行应用变更(如部署应用、应用扩缩、变更规格等)时,无法添加弹性策略。
  • Kubernetes集群不具备节点自动扩容能力时,应用弹性扩容可能无法工作,您可以前往集群页面配置节点弹性伸缩。具体操作,请参见节点自动伸缩

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

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

结果验证(自动弹性伸缩)

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

  1. 弹性伸缩页面的右上角单击事件
  2. 事件中心K8s事件页签将可以看到所有事件记录。
  3. 原因的下拉列表中选择ScalingReplicSetDryRunSuccessfulReScale,即可查看到自动弹性伸缩的所有事件记录。
    • ScalingReplicSet:以观测并扩缩方式触发生成的事件记录,可查看到扩缩容的详细记录。
    • DryRunSuccessfulReScale:以仅观测方式触发生成的事件记录,未触发扩缩容动作。
    弹性扩缩事件

更多信息

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

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