资讯动态

AWS Auto Scaling Groups 实战入门:用 devops-exercises 从零搭建弹性 Web 集群

发布时间:2026/9/30 7:04:38 来源:尧图企业网站定制
文档教程DevOps运维【免费下载链接】devops-exercisesLinux, Jenkins, AWS, SRE, Prometheus, Docker, Python, Ansible, Git, Kubernetes, Terraform, OpenStack, SQL, NoSQL, Azure, GCP, DNS, Elastic, Network, Virtualization. DevOps Interview Questions项目地址https://gitcode.com/GitHub_Trending/de/devops-exercises点击查看免费下载Auto Scaling GroupsASG是 AWS 实现弹性伸缩的核心服务它把一组 EC2 实例当作一个逻辑单元进行统一管理自动维持实例数量、替换不健康实例并配合伸缩策略应对流量波动。本文以 devops-exercises 仓库中的 Auto Scaling Groups Basics 练习 为骨架结合 官方题解 与仓库内 AWS 知识库 的问答部分带你走完「创建启动模板 → 创建 ASG → 验证期望容量变化 → 配置动态伸缩策略」的完整链路读完后你将能独立在 AWS 控制台搭建一个具备自愈与自动扩缩容能力的 Web 服务器集群。练习目标与前置条件该练习topics/aws/exercises/auto_scaling_groups_basics/exercise.md设定的前置条件是环境中零 EC2 实例运行以保证观察结果不受历史实例干扰。目标分为四步A创建一个面向 Web 服务器的伸缩组使用 Amazon Linux 2 AMI、t2.micro实例类型并通过 user data 完成 httpd 的安装与自启yum install -y httpd systemctl start httpd systemctl enable httpdB观察创建 ASG 后是否自动产生了新实例有几个为什么C把 desired capacity期望容量改为 2观察是否会启动更多实例。D再把 desired capacity 改回 1观察这一操作的结果。这套目标精准地围绕 ASG 最核心的三个容量参数展开minimum最小容量、desired期望容量、maximum最大容量。ASG 会持续把运行中的实例数拉回到 desired 值当实际数量少于 desired 时扩容多于 desired 时缩容。提示仓库 AWS 目录的 README 明确建议练习虽以控制台操作给出题解但生产环境推荐使用 IaC如 Terraform、Pulumi来落地。本文先讲清控制台全流程再给出基础设施即代码的补充思路。第一步创建启动模板Launch TemplateASG 本身不包含实例的任何配置信息它依赖**启动模板Launch Template**或已废弃的 Launch Configuration 来定义「新实例长什么样」。启动模板保存了 AMI、实例类型、密钥对、安全组、user data 等启动参数这样每次扩容时不必重新指定。题解中的控制台路径见solution.md如下进入 EC2 服务在左侧菜单Auto Scaling → Auto Scaling Groups点击Create Auto Scaling Group。填入伸缩组名称后选择Create a launch template给模板命名并指定版本号选择Amazon Linux 2AMI实例类型选t2.micro选择密钥对Key pair用于 SSH 登录排障附加一个安全组需放行 HTTP/80 入站流量方便后续验证 Web 服务在Advanced区域的 User data 中粘贴如下脚本yum install -y httpd systemctl start httpd systemctl enable httpd点击Create完成模板创建。关于 User data 脚本仓库中 launch_ec2_web_instance 练习 给出了更完整的变体可以作为对照理解yum update -y yum install -y httpd systemctl start httpd systemctl enable httpd echo h1I made it! This is awesome!/h1 /var/www/html/index.html三条核心命令各司其职yum install -y httpd安装 Apache Web 服务器systemctl start httpd立即启动服务systemctl enable httpd让服务在实例每次开机后自动拉起——这一点对 ASG 尤其重要因为扩容产生的实例是全新机器若服务未配置自启新实例进入服务后不会真正对外提供服务。User data 只在实例首次启动时执行这就是 AWS 语境下的「Bootstrapping引导启动」用脚本在机器首次启动时完成软件安装与系统配置。从源码结构看Launch Template 相比旧式 Launch Configuration 的优势在仓库问答中也有总结topics/aws/README.md的 Launch Template 章节LC 每次更新配置都必须重建而模板支持多版本管理、可同时供给 On-Demand 与 Spot 实例、支持创建参数子集用于复用与继承。第二步创建 Auto Scaling Group回到创建向导继续完成伸缩组的配置选择刚创建的启动模板点击Next。选择Adhere to launch template严格遵守启动模板即不覆盖模板中的任何配置。选择要在哪些**可用区AZ**中启动实例点击Next。跨多 AZ 部署是 ASG 高可用的关键单 AZ 故障时其余 AZ 中的实例仍可继续服务。将 ASG 关联到ALBApplication Load Balancer如果没有先创建一个。关联后ASG 会把新实例自动注册为目标组中的健康目标流量才能被分发到扩容出的实例上。在健康检查类型中勾选ELB 健康检查在 EC2 健康检查之外叠加。这是生产环境的标准配置EC2 层面的健康检查只关心实例「活着没有」而 ELB 健康检查会实际探测应用端口/路径能发现「实例活着但应用已挂」的情况触发 ASG 替换不健康实例。一路点击Next直到 Review 页面点击Create auto scaling group。关于 ALB 的细节仓库 Application Load Balancer 练习 演示了如何创建目标组并配置健康阈值如 healthy/unhealthy threshold 3、interval 10 秒可作为关联 ALB 时的配置参考。第三步验证期望容量机制练习 B/C/D创建完成后用最直观的「改容量、数实例」方式验证 ASG 的工作原理练习 B创建后立即有几个实例为什么答一个。创建 ASG 时默认把 desired capacity 设为 1ASG 为了达到期望容量立刻启动了一个实例。这正是「期望容量 1」的直观体现——ASG 的使命就是让运行实例数无限趋近 desired 值。练习 C把 desired 改为 2会扩容吗会。操作路径进入你的 Auto Scaling Group →Details → Edit→ 将 Desired capacity 改为 2。当前只有 1 个实例在运行ASG 检测到实际数1小于期望数2于是再启动一个实例使总数达到 2。练习 D把 desired 改回 1结果是什么答ASG 会终止其中一个实例假设当前有 2 个在运行。因为实际数2大于期望数1缩容逻辑被触发。仓库问答中也有一道完全对应的考题「You have two instances running as part of ASG. You change the desired capacity to 1. What will be the outcome?」——答案正是「One of the instances will be terminated」。这里值得注意的是终止的是哪个实例由 ASG 的默认终止策略决定。仓库问答topics/aws/README.md的 ASG 章节总结了两条默认规则找到拥有最多实例的那个 AZ若该 AZ 实例数 1选择最旧基于启动配置/模板的实例终止。同时默认情况下 ASG 会尽力在多个 AZ 间均衡实例数量这也是它在缩容时优先选「实例最多的 AZ」的原因。进阶动态伸缩策略与压力验证基础练习验证的是「手动改容量」的静态扩缩容而 ASG 真正的价值在于根据负载自动伸缩。仓库配套的 Dynamic Scaling Policy 练习 完整演示了这一能力可直接作为本文练习的下一步前置条件一个最大容量 ≥ 3 的 ASG一台最多 4 核 CPU 的运行中实例。配置目标跟踪策略Target Tracking Scaling进入 EC2 → Auto Scaling Groups切换到Automating scaling标签页Policy Type 选择Target tracking scaling指标类型选择Average CPU utilization平均 CPU 利用率目标值设为70%点击Create。验证扩容用 stress 工具压满 CPUAmazon Linux 2 环境sudo amazon-linux-extras install epel -y sudo yum install stress -y stress -c 4 # 假设实例有 4 个 CPU 核心当 CPU 利用率持续高于 70% 目标值时ASG 会自动扩容——会新增一台 EC2 实例。验证缩容停止 stress 命令后CPU 利用率回落到 70% 以下ASG 检测到容量过剩会自动终止一台实例。仓库问答对动态伸缩策略给出了更系统的分类见topics/aws/README.md的 ASG 问答Target Tracking Scaling目标跟踪设定一个基准值如 CPU 60% 就扩容ASG 自动维持在该值附近——本练习采用的就是这类Step Scaling步进伸缩更细粒度针对不同指标区间执行不同动作如 CPU 20% 时移除 1 台、CPU 40% 时新增 3 台Scheduled Actions计划动作预先设定特定时间段的伸缩如每周一 10:00–11:00 扩容。另外还有Predictive Scaling预测伸缩通过分析历史负载预测未来流量并提前规划伸缩。这些策略可结合 CloudWatch 告警联动告警监控某个指标达到阈值后触发扩容/缩容动作。关键机制冷却时间、健康检查与生命周期钩子为了让 ASG 在生产中稳定工作还需要理解三个配套机制均有仓库问答佐证Scaling Cooldown伸缩冷却期一次伸缩活动发生后ASG 会进入冷却期期间不会再次终止或启动实例。原因是需要时间收集并稳定指标避免「刚扩容又缩容」的抖动。健康检查替换ASG 会持续监控实例健康状态。当实例未通过 EC2 或 ELB 健康检查时ASG 自动终止该实例并启动新实例替换实现自愈。这就是 ASG 被广泛用于 Web 集群的原因即使某实例崩溃集群容量也能自动恢复。Lifecycle Hooks生命周期钩子允许在实例进入服务前pending 状态或终止前terminating 状态执行额外的自定义步骤比如在实例挂载数据卷、更新注册表、或在销毁前拉取日志。补充用基础设施即代码落地题解全程基于控制台但仓库 README 明确推荐用 Terraform / Pulumi 等 IaC 工具完成练习。仓库中已存在可参考的 Terraform 范例例如 launch_ec2_web_instance 的 Terraform 版 展示了如何用aws_instance资源定义 AMI、实例类型、user data 脚本与安全组入站规则new_vpc 练习 与 subnets 练习 则提供了 VPC/子网资源的写法可作为把 ASG 练习迁移到 Terraform 时的骨架参考。小结通过 devops-exercises 的这个基础练习你亲手验证了 ASG 的核心机制启动模板承载实例配置AMI、实例类型、密钥、安全组、user data是 ASG 的「实例图纸」期望容量是 ASG 的「稳态目标」手动修改它即可触发扩缩容验证了实例数量的增减逻辑动态伸缩策略让 ASG 依据 CPU 等指标自动伸缩无需人工干预冷却期、健康检查、生命周期钩子等机制保障了伸缩过程的稳定性与可用性。从「手动改 desired」到「目标跟踪自动伸缩」这条练习链路覆盖了 ASG 从入门到实战的关键知识点。想继续深入可以在本仓库中进一步完成 Dynamic Scaling Policy、Application Load Balancer 与 Network Load Balancer 等关联练习逐步构建一套完整的弹性 Web 架构。赞分享文档教程DevOps运维【免费下载链接】devops-exercisesLinux, Jenkins, AWS, SRE, Prometheus, Docker, Python, Ansible, Git, Kubernetes, Terraform, OpenStack, SQL, NoSQL, Azure, GCP, DNS, Elastic, Network, Virtualization. DevOps Interview Questions项目地址https://gitcode.com/GitHub_Trending/de/devops-exercises点击查看免费下载相关推荐devops-exercises 实战从零创建一个 AWS Auto Scaling GroupASG 基础篇devops exercises 实战从零创建一个 AWS Auto Scaling GroupASG 基础篇 本篇指南基于 devops exercis文档教程DevOps运维Terraform AWS Provider 实战用 Auto Scaling Group ELB 部署高可用 Nginx Web 集群Terraform AWS Provider 实战用 Auto Scaling Group ELB 部署高可用 Nginx Web 集群 本指南以 terIaC云原生基础设施AWS CLI 实战指南使用 describe-auto-scaling-groups 查询 Auto Scaling 组附示例与源码解析AWS CLI 实战指南使用 describe auto scaling groups 查询 Auto Scaling 组附示例与源码解析 aws aut开发工具云原生运维上一篇Czkawka 重复文件清理工具完整使用指南从安装到清出空间下一篇vim-markdown-toc 源码剖析上615行 VimL 如何精准识别标题并排除代码块干扰创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑