AutoScaling 步进伸缩规则

本文涉及的产品
轻量应用服务器 2vCPU 4GiB,适用于搭建Web应用/小程序
轻量应用服务器 2vCPU 4GiB,适用于网站搭建
轻量应用服务器 2vCPU 4GiB,适用于搭建容器环境
简介: 步进伸缩规则是弹性伸缩基于云监控报警服务为用户提供的分段扩缩容策略,是对现有简单伸缩规则的扩展,为用户的动态扩缩容过程提供更精细的控制。

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

步进伸缩规则简介

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

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

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

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

目录
相关文章
|
存储 监控 Cloud Native
云原生的应用场景
云原生的应用场景
559 0
|
数据安全/隐私保护
java.nio.file.AccessDeniedException: /home/soft/elasticsearch-6.8.0/config/jvm.options
java.nio.file.AccessDeniedException: /home/soft/elasticsearch-6.8.0/config/jvm.options
138 0
|
存储 缓存 Linux
【实战指南】嵌入式RPC框架设计实践:六大核心类构建高效RPC框架
在先前的文章基础上,本文讨论如何通过分层封装提升一个针对嵌入式Linux的RPC框架的易用性。设计包括自动服务注册、高性能通信、泛型序列化和简洁API。框架分为6个关键类:BindingHub、SharedRingBuffer、Parcel、Binder、IBinder和BindInterface。BindingHub负责服务注册,SharedRingBuffer实现高效数据传输,Parcel处理序列化,而Binder和IBinder分别用于服务端和客户端交互。BindInterface提供简单的初始化接口,简化应用集成。测试案例展示了客户端和服务端的交互,验证了RPC功能的有效性。
711 83
|
缓存 监控 API
淘宝API接口注意事项及要点
淘宝API接口的使用需注意以下要点:首先注册并认证开发者账号,获取API密钥;深入理解接口文档,确保参数合法准确;遵守调用频率限制,必要时申请提额;确保数据安全与隐私保护;合理处理错误与异常;优化缓存与性能;关注版本更新与兼容性;遵守合规性与法律要求;建立日志记录与监控机制。
|
数据采集 数据安全/隐私保护 Python
Selenium与Web Scraping:自动化获取电影名称和评分的实战指南
在信息时代,Web Scraping 成为核心技能之一,尤其在面对如豆瓣电影这类动态网页时更为重要。本文介绍如何运用 Selenium 这一强大的自动化工具,配合代理 IP、User-Agent 及 Cookie,实现对豆瓣电影名称与评分的有效抓取。通过设置代理 IP 来规避访问限制,调整 User-Agent 以模拟真实用户行为,并利用 Cookie 保持会话状态,确保数据抓取的稳定性和隐蔽性。文中还提供了完整的 Python 代码示例,帮助读者快速上手实践。
441 0
|
负载均衡 Dubbo 前端开发
从原理到操作,让你在 Apache APISIX 中代理 Dubbo3 服务更便捷
本文为大家介绍了如何借助 Apache APISIX 实现 Dubbo Service 的代理,通过引入 dubbo-proxy 插件便可为 Dubbo 框架的后端系统构建更简单更高效的流量链路。
1183 83
从原理到操作,让你在 Apache APISIX 中代理 Dubbo3 服务更便捷
|
SQL 关系型数据库 MySQL
mysql中执行 sql 语句报语法错误引出的代码空格问题
根据报错提示 sql 语法错误,错误状态码 1064,网上很多人说是使用了 mysql 保留关键字,没用反单引号``包起来,或者普通字符串使用了反单引号这些...反正大部分都是说引号这块出了问题,但一遍遍地检查确实又都没发现问题
|
数据采集 DataWorks 安全
DataWorks产品使用合集之配置跨项目依赖时,需要哪些操作权限
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
数据采集 存储 Web App开发
如何使用Selenium Python爬取动态表格中的复杂元素和交互操作
Selenium是一个自动化测试工具,可以模拟浏览器的行为,如打开网页,点击链接,输入文本等。Selenium也可以用于爬取网页中的数据,特别是那些动态生成的数据,如表格,图表,下拉菜单等。本文将介绍如何使用Selenium Python爬取动态表格中的复杂元素和交互操作。
533 0
如何使用Selenium Python爬取动态表格中的复杂元素和交互操作
|
机器学习/深度学习 传感器 算法
【ELM预测】基于离群鲁棒极限学习机实现数据预测附matlab代码
【ELM预测】基于离群鲁棒极限学习机实现数据预测附matlab代码

热门文章

最新文章