AutoScaling 步进伸缩规则

简介: 步进伸缩规则是弹性伸缩基于云监控报警服务为用户提供的分段扩缩容策略,是对现有简单伸缩规则的扩展,为用户的动态扩缩容过程提供更精细的控制。

步进伸缩规则是弹性伸缩基于云监控报警服务为用户提供的分段扩缩容策略,是对现有简单伸缩规则的扩展,为用户的动态扩缩容过程提供更精细的控制。

步进伸缩规则简介

步进伸缩规则在原有简单伸缩规则的基础上增加了分步定义,步进伸缩规则是简单伸缩规则的超集。步进伸缩规则允许用户指定一组扩展策略集合,这些扩展策略将根据报警监控值的违例规模来选择合适的分步步骤进行执行。

StepScalingRule

创建一个步进伸缩规则时,您需要定义至少一个分步步骤(StepScalingRule),每一个分步步骤必须包括以下信息:

名称 类型 是否必须 默认值 描述
MetricIntervalLowerBound Float 分步步骤的下边界
MetricIntervalUpperBound Float 分步步骤的上边界
ScalingAdjustment Integer 分步步骤的调整数量

对于步进伸缩规则,支持与简单伸缩规则完全相同的调整类型:

  1. QuantityChangeInCapacity:增加或减少指定数量的ECS实例。
  2. PercentChangeInCapacity:增加或减少指定比例的ECS实例。
  3. TotalCapacity: 将当前伸缩组的ECS实例数量调整到指定数量。

分步步骤的上下边界取值是相对于违例阈值的差值,这表示,如果您的违例阈值是40,您希望在40-50之间时指定分步步骤a,你需要制定的分步步骤上下边界将分别为0和10.

分步步骤的上下边界选取存在以下限制:

  1. 分步调整范围不能重叠或有间隙。
  2. 只有一个分步调整可以有空下限 (负无穷)。如果一个分步调整有负下限,则必须有一个分步调整有空下限。
  3. 只有一个分步调整可以有空上限 (正无穷)。如果一个分步调整有正上限,则必须有一个分步调整有空上限。
  4. 同一分步调整中的上限和下限不能为空。
  5. 如果指标值高于违例阈值,则含下限而不含上限。如果指标值低于违例阈值,则不含下限而含上限。

执行分步步骤

步进伸缩规则可以由云监控报警规则触发或者用户手动执行。

云监控触发

当由云监控触发步进伸缩规则时,只需要将步进伸缩规则关联到一条指定的云监控报警规则,当云监控报警规则超过阈值,触发报警时,将执行步进伸缩规则,报警规则的报警阈值将作为违例阈值(BreachThreshold),监控指标的实际值将作为触发指标值(MetricValue),步进伸缩规则将根据指标值和违例阈值选择合适的分步步骤执行。。

手动执行

当由用户手动执行步进伸缩规则时,您需要制定报警规则的违例阈值(BreachThreshold)以及触发指标值(MetricValue),步进伸缩规则将根据指标值和违例阈值选择合适的分步步骤执行。

分步步骤的选取

分步步骤的选取遵循以下开闭原则:

  1. 当MetricValue高于BreachThreshold时,将使用左闭右开方式选取分步步骤;
  2. 当MetricValue高于BreachThreshold时,将使用左开右闭方式选取分步步骤。

分步调整类型为PercentChangeInCapacity时,调整个数大于0时,向下取整;调整个数小于0时,向上取整。该行为您可以通过制定MinAdjustmentMagnitude来指定分布步骤最小的调整个数。

最佳实践

使用SDK创建步进伸缩规则

这里我们主要展示如何使用java SDK创建伸缩规则,并采用maven进行依赖管理。创建目标追踪伸缩规则,需要使用aliyun-java-sdk-ess 2.3.1及以上版本。

程序所需的maven依赖如下:

        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-core</artifactId>
            <version>3.0.8</version>
        </dependency>
        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-ess</artifactId>
            <version>2.3.1</version>
        </dependency>

创建目标追踪伸缩规则

        CreateScalingRuleRequest request = new CreateScalingRuleRequest();
        request.setScalingGroupId(scalingGroupId);
        request.setScalingRuleType("StepScalingRule");
        CreateScalingRuleRequest.StepAdjustment step1 = createStepAdjustment(10, 20, 1);
        CreateScalingRuleRequest.StepAdjustment step2 = createStepAdjustment(20, null, 2);
        List<CreateScalingRuleRequest.StepAdjustment> stepAdjustments = Lists.newArrayList(step1, step2);
        request.setStepAdjustments(stepAdjustments);
        CreateScalingRuleResponse response = client.getAcsResponse(request);

控制台创建步进伸缩规则

image

创建步进伸缩规则时,您必须选择关联一条云监控报警规则。您可以选择一条已有的报警规则或者新创建一条报警规则。

image

当您选择了一条报警规则之后,需要根据该报警规则来创建合适的分步步骤,此处我们关联了cpu使用率大于40%的报警规则,我们根据该报警任务设置了两个分步步骤:

  1. 当报警发生时指标值处于[40,50)区间时,增加1个实例。
  2. 当报警发生时指标值处于[50,60)区间时,增加2个实例。

image

当创建完成之后,我们可以在伸缩规则列表查看到创建的步进伸缩规则以及其关联报警规则与分步步骤。

image

同时,在报警任务列表,我们也可以看到其关联到了我们刚创建的步进伸缩规则。

目前,步进伸缩规则不允许修改其关联的报警规则,只允许修改其分布步骤。

相关实践学习
基于云监控实现的监控系统
通过阿里云云监控功能给非阿里云主机安装监控插件,从而实现对非阿里云主机的各项指标进行监控和管理,在配置报警规则和报警人的情况下,能对特定的场景做出报警反应通知到报警人的手机上。
目录
相关文章
|
12月前
|
Kubernetes 调度 Perl
Pod的自动扩缩容
Pod的自动扩缩容
128 1
|
1月前
|
Prometheus Kubernetes 监控
k8s学习--kubernetes服务自动伸缩之水平伸缩(pod副本伸缩)HPA详细解释与案例应用
k8s学习--kubernetes服务自动伸缩之水平伸缩(pod副本伸缩)HPA详细解释与案例应用
k8s学习--kubernetes服务自动伸缩之水平伸缩(pod副本伸缩)HPA详细解释与案例应用
|
1月前
|
Kubernetes 监控 调度
k8s学习--kubernetes服务自动伸缩之垂直伸缩(资源伸缩)VPA详细解释与安装
k8s学习--kubernetes服务自动伸缩之垂直伸缩(资源伸缩)VPA详细解释与安装
|
1月前
|
Kubernetes 应用服务中间件 nginx
k8s学习--kubernetes服务自动伸缩之水平收缩(pod副本收缩)VPA策略应用案例
k8s学习--kubernetes服务自动伸缩之水平收缩(pod副本收缩)VPA策略应用案例
|
6月前
|
弹性计算 API
弹性伸缩期望实例数
弹性伸缩期望实例数
63 18
|
弹性计算 Kubernetes 应用服务中间件
通过HPA进行Pod水平弹性伸缩
本场景带您体验如何使用阿里云指标完成Pods的自动伸缩。
|
弹性计算 监控 Kubernetes
k8s-对Pod自动弹性伸缩(HPA)
HPA介绍 部署metrics-server 案例自动缩容
k8s-对Pod自动弹性伸缩(HPA)
|
弹性计算 监控 开发者
通过伸缩规则创建伸缩方案-介绍|学习笔记
快速学习通过伸缩规则创建伸缩方案-介绍
通过伸缩规则创建伸缩方案-介绍|学习笔记
|
测试技术 Serverless vr&ar
Knative 灰度发布和自动弹性(一)|学习笔记
快速学习 Knative 灰度发布和自动弹性(一)
131 0
Knative 灰度发布和自动弹性(一)|学习笔记
|
资源调度 Kubernetes 监控
Kubernetes 资源水平自动伸缩(Horizontal Pod Autoscaler[HPA])与纵向自动扩缩(VerticalPodAutoscaler[VPA])
Kubernetes 资源水平自动伸缩(Horizontal Pod Autoscaler[HPA])与纵向自动扩缩(VerticalPodAutoscaler[VPA])