aws ecs 使用application autoscaling自动扩缩ecs服务

news2024/10/1 1:29:02

参考资料

  • https://aws.amazon.com/cn/blogs/china/microservices-on-amazon-ecs-1/

  • https://aws.amazon.com/cn/blogs/china/microservices-on-amazon-ecs-2/

  • https://zhuanlan.zhihu.com/p/355383555

  • https://docs.amazonaws.cn/en_us/AmazonECS/latest/developerguide/service-auto-scaling.html

ecs在两个层面上支持自动扩缩,即实例层面和服务层面

  • 关于实例层面的扩缩容,是通过为ecs集群设置capacity provider实现的,本质上其实是一个ec2 autoscaling 组,通过设置cw告警和事件,实现集群实例的扩缩容。这篇文档对原理解释的很清楚
  • 关于服务层面的扩缩容,是通过application autoscaling 服务完成的,该服务可以与很多其他的aws服务集成,但是控制台无法查看此信息,可以通过describe-scalable-targets api查看

ecs支持通过autoscaling来自动扩缩服务中所需的任务数量,在服务创建过程或者更新过程中进行设置,界面如下,中国区缺少一些选项。

  • 只能使用平均值发布cw指标

  • 支持的自动伸缩策略有限,推荐 Target tracking 策略

  • 用于自动扩缩的角色为AWSServiceRoleForApplicationAutoScaling _ ECSService

  • 自动扩缩的起点并非设置的desired count,而是实际的任务数量

  • 如果所需数量超过最大数,则首先调整实际数量到最大数,再按照缩放规则缩放。所需数量小于最小值时同理

  • 支持从0扩展

  • 在服务部署期间会停止缩容,但是扩容不会停止,除非主动暂停

在这里插入图片描述

自动扩容

为应用程序施压

$ webbench -c 100 -t 600  http://172.31.20.73/

在这里插入图片描述

由于cpu使用率超过50的目标值,导致cw触发告警并执行扩容操作

2023-02-27 09:18:47	State update	Alarm updated from In alarm to OK.
2023-02-27 09:06:47	Action	Successfully executed action arn:aws-cn:autoscaling:cn-north-1:xxxxxxxx:scalingPolicy:20be5a77-1b23-494c-a9d5-1d21aec6ed61:resource/ecs/service/workfargate/nginx-svc:policyName/testnginx-autoscale:createdBy/63002f92-e64f-484d-a9f5-1035324563ba

扩容后,service事件显示如下启动信息

Message: Successfully set desired count to 3. Change successfully fulfilled by ecs. Cause: monitor alarm TargetTracking-service/workfargate/nginx-svc-AlarmHigh-75d51541-0ab8-4db4-9606-6b204c846c6e in state ALARM triggered policy testnginx-autoscale

由于最大数量为5,因此扩容最大只能到5无法超过

自动缩容

由于cpu使用率过低,导致cw触发告警并执行缩减操作

2023-02-27 09:06:47	Action	Successfully executed action arn:aws-cn:autoscaling:cn-north-1:xxxxx:scalingPolicy:20be5a77-1b23-494c-a9d5-1d21aec6ed61:resource/ecs/service/workfargate/nginx-svc:policyName/testnginx-autoscale:createdBy/63002f92-e64f-484d-a9f5-1035324563ba
2023-02-27 09:06:47	State update	Alarm updated from Insufficient data to In alarm.

缩减后,停止pod的last status中会显示如下信息

STOPPED (Scaling activity initiated by (deployment ecs-svc/3120824563093745023))

在service的事件中存在以下记录

Message: Successfully set desired count to 1. Change successfully fulfilled by ecs. Cause: monitor alarm TargetTracking-service/workfargate/nginx-svc-AlarmLow-99c588d3-d004-42f6-a10d-67d20c48a4c1 in state ALARM triggered policy testnginx-autoscale

由于min数量为1,因此最小缩容到1个任务

缩减到0的事件

Message: Successfully set desired count to 0. Change successfully fulfilled by ecs. Cause: monitor alarm TargetTracking-service/workfargate/nginx-svc-AlarmLow-99c588d3-d004-42f6-a10d-67d20c48a4c1 in state ALARM triggered policy testnginx-autoscale

其他线索

由于服务数量是由application触发的扩缩容操作,通过cloudtrail查看触发的具体api操作

{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AROAQRIBWRJKAGUKQLRHZ:AutoScaling-UpdateDesiredCapacity",
        "arn": "arn:aws-cn:sts::xxxxxxx:assumed-role/AWSServiceRoleForApplicationAutoScaling_ECSService/AutoScaling-UpdateDesiredCapacity",
        "invokedBy": "ecs.application-autoscaling.amazonaws.com"
    },
    "eventSource": "ecs.amazonaws.com",
    "eventName": "UpdateService",
    "awsRegion": "cn-north-1",
    "sourceIPAddress": "ecs.application-autoscaling.amazonaws.com",
    "userAgent": "ecs.application-autoscaling.amazonaws.com",
    "requestParameters": {
        "cluster": "workfargate",
        "desiredCount": 3,
        "forceNewDeployment": false,
        "service": "nginx-svc"
    }
}

从以上trail记录可以看到,对于任务数量的更新调用的仍旧是update service,并且是由application-autoscaling触发的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/374816.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

YOOV人事管理|2023年面临7大职场趋势,关系到管理者和HR

各种停摆浪潮席卷了2022年的职场生态,对于人力资源工作者来说,无论是判断员工的意向,或是组织面对的挑战,都愈来愈复杂。YOOV人事管理针对2023年,提出了7项观察,提醒雇主和HR应留意的未来工作趋势。 1.安静…

95.【操作系统-第一章】

操作系统(一)、操作系统概述1.1_操作系统的概念、功能和目标(1).操作系统的定义(2).操作系统的功能和目标——作为系统资源的管理者(3).操作系统的功能和目标——向上层提供方便易用的服务(4).操作系统的功能和目标--作为用户和计算机硬件之间的接口(5).操作系统的功能和目标—…

腾讯前端二面常考vue面试题(附答案)

虚拟DOM真的比真实DOM性能好吗 首次渲染大量DOM时,由于多了一层虚拟DOM的计算,会比innerHTML插入慢。正如它能保证性能下限,在真实DOM操作的时候进行针对性的优化时,还是更快的。 MVVM的优缺点? 优点: 分离视图(V…

PowerCommand康明斯发电机控制屏维修HMI211

康明斯柴油发电机的监控系统分为普通机组控制屏和智能化机组控制界面。普通操作界面实用于普通的康明斯柴油发电机的控制,康明斯柴油发电机的起动与停止、供电与断电、状态调整等均由手动操作;自动化康明斯柴油发电机控制系统适合于智能化康明斯柴油发电…

JavaWeb 基本概念

JavaWeb Java Web 1、基本概念 1.1、前言 web开发: web,网页的意思 , www.baidu.com静态web html,css提供给所有人看的数据始终不会发生变化! 动态web 淘宝,几乎是所有的网站;提供给所有人…

ActiveMQ RabbitMQ Kafka RocketMQ

消息中间件的作用 1.正向作用 应用解耦/事件驱动 异步通信 流量削峰 2.反向作用 系统可用性降低 系统复杂性提高 一致性问题 ---------------------------------------------------------------------------------------------------------…

C语言数据结构(3)----无头单向非循环链表

目录 1. 链表的概念及结构 2. 链表的分类 3. 无头单向非循环链表的实现(下面称为单链表) 3.1 SListNode* BuySListNode(SLTDateType x) 的实现 3.2 void SListPrint(SListNode* plist) 的实现 3.3 void SListPushBack(SListNode** pplist, SLTDateType x) 的实现 3.4 voi…

【分布式】分布式场景下的稳定性保障

文章目录1、什么是稳定性保障2、明确稳定性保障目标2.1、明确一级目标2.2、拆解二级目标3、如何进行稳定性保障3.1、全链路梳理3.2、全链路压测3.3、集群扩容3.4、服务限流3.5、提前预案3.6、紧急预案3.7、系统监控4、大促稳定性保障4.1、制定大促计划4.2、大促准备4.3、大促值…

kubeadm方式安装k8s高可用集群(版本1.26x)

K8S官网:https://kubernetes.io/docs/setup/ 高可用Kubernetes集群规划 配置备注系统版本CentOS 7.9Docker版本20.10.xPod网段172.16.0.0/12Service网段10.103.10.0/16 主机IP说明k8s-master01 ~ 03192.168.77.101 ~ 103master节点 * 3k8s-master-lb192.168.77.2…

Tina_Linux配网开发指南

OpenRemoved_Tina_Linux_配网_开发指南 1 概述 1.1 编写目的 介绍Allwinner 平台上基于wifimanager-v2.0 的WiFi 配网方式,包括softap(WiFi ap 模式热点配网),soundwave(声波配网),BLE(蓝牙低功耗配网)。 1.2 适用范围 • allwinner 软件平台tina v5.0 版本及以…

锁相环的组成和原理及应用

一.锁相环的基本组成 许多电子设备要正常工作,通常需要外部的输入信号与内部的振荡信号同步,利用锁相环路就可以实现这个目的。 锁相环路是一种反馈控制电路,简称锁相环(PLL)。锁相环的特点是:利用外部输入的参考信号控制环路内…

Java查漏补缺(04)IDEA安装设置、JDK相关设置、详细设置、工程与模块管理、代码模板的使用、快捷键的使用、DEBUG断点调试、常用插件

Java查漏补缺(04)IDEA安装设置、JDK相关设置、详细设置、工程与模块管理、代码模板的使用、快捷键的使用、DEBUG断点调试、常用插件本章专题与脉络1. 认识IntelliJ IDEA1.1 JetBrains 公司介绍1.2 IntelliJ IDEA 介绍1.3 IDEA的主要优势:(vs …

Ubuntu下不能切换中文,qt creator无法输入中文,sogo输入法(详细步骤)

目录:1、解决ubuntu 不支持切换中文,并安装sogo输入法步骤;2、解决Qt Creator不支持中文输入:详细步骤:一、解决ubuntu 不支持切换中文,并安装sogo输入法步骤:1、如果在键盘输入法系统中&#x…

Scala面向对象

与java的区别和联系 类的定义: class Person{ var name "scala" def sayHello(){ println("Hello,"name) } def getName name } 注意:如果在定义方法的时候指定了(),那么在调用的时候()可写可不写,如果在定…

【并发编程学习篇】深入理解CountDownLatch

一、CountDownLatch介绍 CountDownLatch(闭锁)是一个同步协助类,允许一个或多个线程等待,直到其他线程完成操作集。CountDownLatch使用给定的计数值(count)初始化。await方法会阻塞直到当前的计数值被coun…

【分布式缓存学习篇】Redis数据结构

一、Redis的数据结构 二、String 数据结构 2.1 字符串常用操作 //存入字符串键值对 SET key value //批量存储字符串键值对 MSET key value [key value ...] //存入一个不存在的字符串键值对 SETNX key value //获取一个字符串键值 GET ke…

[C++]继承

🥁作者: 华丞臧 📕​​​​专栏:【C】 各位读者老爷如果觉得博主写的不错,请诸位多多支持(点赞收藏关注)。如果有错误的地方,欢迎在评论区指出。 推荐一款刷题网站 👉LeetCode 文章目录一、继承…

C/C++每日一练(20230227)

目录 1. 按要求排序数组 ★ 2. Z 字形变换 ★★ 3. 下一个排列 ★★ 1. 按要求排序数组 给你一个整数数组 arr 。请你将数组中的元素按照其二进制表示中,数字 1 的数目升序排序。 如果存在多个数字二进制中 1 的数目相同,则必须将它们按照数值大小…

新型智慧城市顶层规划及智慧应用综合解决方案

【版权声明】本资料来源网络,知识分享,仅供个人学习,请勿商用。【侵删致歉】如有侵权请联系小编,将在收到信息后第一时间删除!完整资料领取见文末,部分资料内容: 业务需求分析系统功能需求分析 …

一文了解虚拟人主播

这两年,相信很多人都能在抖音、快手、微视等平台看到虚拟人主播的视频,形象逼真,表情动作自然,语言流畅,乍一看,就是一位真人!那为什么会有这么多人或者企业选择用虚拟人来做主播呢?…