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

应用场景

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

背景信息

部署在EDAS的容器服务K8s集群和Serverless K8s集群中的应用,可以配置两种策略类型:监控指标策略和自定义弹性策略。目前在EDAS的单个应用中暂时只支持同时配置一个类型的弹性策略。

  • 单个应用内最多可配置一条监控指标弹性策略。
  • 单个应用内最多可配置一条自定义弹性策略,但在自定义弹性策略内,可以配置多个触发器。
    • 当K8s集群版本低于V1.15.0时,任意一条触发器运行失败,将不会进行扩缩容。
    • 当K8s集群版本为V1.15.0或以上版本时,任意一条触发器运行成功,即可成功扩缩容。当多条触发器运行成功时,应用目标实例数=max(触发器1目标实例数,触发2目标实例数,...,触发器N目标实例数)。
注意
  • 弹性策略启用时,请勿进行应用生命周期管理操作,请停用弹性策略后,再执行。
  • 执行应用变更(如部署应用、应用扩缩、变更规格等)时,无法添加弹性策略。
  • 除绑定SLB不会导致弹性策略失效,其他变更都会导致弹性策略失效,需要在应用变更结束后手动启用弹性策略。

监控指标策略

EDAS通过监控您应用的CPU使用率和内存使用率,依据弹性策略自动为您扩容或缩容应用实例。

  1. 登录EDAS控制台
  2. 在左侧导航栏中选择应用管理 > 应用列表,在顶部菜单栏选择地域并在页面上方选择命名空间,然后在应用列表页面单击具体的应用名称。
  3. 在应用详情页面的左侧导航栏选择应用设置 > 弹性伸缩,然后单击添加弹性策略
  4. 策略类型区域选择监控指标策略,完成以下配置成后单击保存
    参数 描述
    策略名称 请输入弹性策略的名称。
    触发条件 支持Cpu使用率Mem使用率。设置期望的监控指标目标值,系统会帮您自动伸缩实例数,无限接近您设置的目标值。
    • Cpu使用率目标值:在调整框中输入CPU使用率的目标数值。
    • Mem使用率目标值:在调整框中输入内存使用率的目标数值。
    说明
    • 使用Cpu使用率Mem使用率时,当前应用的Cpu使用率或者Mem使用率大于或者等于所设的目标值,则对应用进行扩容,其应用实例数不超所设的最大应用实例数;反之,进行缩容,其应用实例数不低于所设的最小应用实例数
    • 弹性策略的目标实例数=当前实例数 ×(当前指标/期望指标)。
    最大应用实例数 触发弹性伸缩条件后,应用扩容,其实例数可达到的最大值。
    最小应用实例数 触发弹性伸缩条件后,应用缩容,其实例数可达到的最小值。
  5. 在弹性策略页面右上角单击启用
    如果您的应用没有进行规格请求配置,需要在弹出的对话框中完成配置后单击确定
    触发弹性策略后,如果EDAS依据所设策略对应用实例进行扩容或者缩容,表示自动弹性成功。

自定义弹性策略

通过配置自定义弹性策略,您可以配置多个触发器,EDAS将根据触发器自动为您扩容和缩容应用实例。

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

结果验证

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

  1. 在弹性伸缩页面的右上角单击事件
  2. 事件中心K8s事件页签将可以看到所有事件记录。
  3. 原因的下拉列表中选择ScalingReplicSet,即可查看到自动弹性伸缩的所有事件记录。
    弹性扩缩事件

更多信息

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

EDAS容器服务K8s和Serverless K8s交流群

如果您在EDAS中使用容器服务K8s集群和Serverless K8s集群过程中有任何疑问或建议,请提交工单,或使用钉钉扫描下面的二维码或搜索钉钉群号23197114加入钉钉群进行反馈。

EDAS K8s/Serverless K8s交流群