0Pricing
Cloud & IT Cert Prep · 课时

启动模板与 ASG 配置

使用正确的 AMI、实例类型和用户数据创建启动模板,然后将其附加到具有最小、最大和期望容量的 Auto Scaling Group。

启动模板与 ASG 配置 是 CoddyKit 上的免费 Cloud & IT Cert Prep 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Cloud & IT Cert Prep 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Cloud & IT Cert Prep 课程共包含 4 节课。

什么是启动模板

启动模板是一份带版本的蓝图,用于告知自动扩缩组(以及直接使用 EC2 的场景)如何启动实例。它将 AMI ID、实例类型、密钥对、安全组以及可选的用户数据集中到一份可重复使用的文档中。与旧版启动配置不同,启动模板支持多个版本,并且可以在不替换 ASG 的情况下进行更新。

通过 CLI 创建启动模板

您可以使用 AWS CLI 和 create-launch-template 创建启动模板。--launch-template-data 参数接受一个定义所有实例设置的 JSON 对象。借助版本控制,您可以迭代更新模板,而不会影响正在运行的实例,直到准备好部署为止。

aws ec2 create-launch-template \
  --launch-template-name 'MyAppTemplate' \
  --version-description 'v1 initial' \
  --launch-template-data '{
    "ImageId": "ami-0abcdef1234567890",
    "InstanceType": "t3.medium",
    "KeyName": "my-key-pair",
    "SecurityGroupIds": ["sg-0123456789abcdef0"],
    "UserData": "IyEvYmluL2Jhc2gKZWNobyAnSGVsbG8n"
  }'

启动模板版本和默认版本

每个启动模板都从版本 1开始。创建新版本时,您只需覆盖发生更改的字段,其他所有设置都会从源版本继承。您可以让 ASG 使用 $Latest 版本(始终为最新版本)或 $Default 版本(明确指定的版本)。使用 $Default 可以实现受控发布,而 $Latest 在开发环境中更加方便。

# Create a new version based on version 1, changing only instance type
aws ec2 create-launch-template-version \
  --launch-template-name 'MyAppTemplate' \
  --source-version 1 \
  --launch-template-data '{"InstanceType": "t3.large"}'

Auto Scaling Group 核心概念

一个 Auto Scaling Group (ASG) 会在定义的边界内维护一组 EC2 实例:最小容量(下限)、最大容量(上限)和期望容量(任意时刻的目标实例数)。当实例未通过运行状况检查或扩缩容策略触发时,ASG 会自动启动或终止实例,使实例组数量保持在最小容量和最大容量之间的期望值。

创建连接到启动模板的 ASG

创建 ASG 时,您需要引用一个启动模板,而不是直接指定某个 AMI。您还需要指定用于启动实例的 VPC 子网。将实例分布到多个子网中(每个 AZ 一个)可以提供内置的多 AZ 冗余——如果某个 AZ 发生故障,ASG 会自动在其余 AZ 中启动替代实例。

aws autoscaling create-auto-scaling-group \
  --auto-scaling-group-name 'MyAppASG' \
  --launch-template 'LaunchTemplateName=MyAppTemplate,Version=$Default' \
  --min-size 2 \
  --max-size 10 \
  --desired-capacity 4 \
  --vpc-zone-identifier 'subnet-aaa111,subnet-bbb222,subnet-ccc333'

ASG 运行状况检查:EC2 与 ELB

默认情况下,ASG 使用 EC2 运行状况检查,只有在实例停止、终止或虚拟机监控程序报告实例发生故障时,才会将实例标记为运行状况不佳。当您连接负载均衡器后,应切换到 ELB 运行状况检查,这样 ASG 才会替换仍在运行但返回 HTTP 5xx 错误的实例。这是常见的考试题:架构中存在负载均衡器时,始终选择 ELB 运行状况检查。

# Enable ELB health checks on an existing ASG
aws autoscaling update-auto-scaling-group \
  --auto-scaling-group-name 'MyAppASG' \
  --health-check-type ELB \
  --health-check-grace-period 300

容量设置:最小、最大和期望

设置正确的容量边界至关重要。最小容量可确保您的应用始终能够处理流量(绝不会低于此值)。最大容量可防止无限扩容耗尽服务限额或预算。期望容量是初始目标;扩缩容策略会动态调整它。如果将最小容量、最大容量和期望容量设置为相同值,ASG 就会作为固定大小的实例组运行,这对于启动模板部署或固定容量非常有用。

将 ALB 目标组连接到 ASG

对于 Web 层应用,请将 ASG 连接到 Application Load Balancer 目标组。ASG 启动的每个新实例都会自动注册到目标组中,而终止的实例会自动取消注册。这样可以确保流量只流向运行状况良好且正在运行的实例。您还必须将运行状况检查类型设置为 ELB,以便 ASG 能够感知负载均衡器级别的故障。

aws autoscaling attach-load-balancer-target-groups \
  --auto-scaling-group-name 'MyAppASG' \
  --target-group-arns 'arn:aws:elasticloadbalancing:us-east-1:123456789012:targetgroup/MyTG/abc123'

启动模板中的用户数据

用户数据是一个 Shell 脚本(经过 Base64 编码),会在实例首次启动时运行一次。在启动模板中,用户数据适合用于安装软件包、配置代理(CloudWatch、SSM)以及拉取应用代码。请确保用户数据具有幂等性——可以安全运行多次的脚本能够避免实例刷新期间出现问题。对于复杂设置,请调用 AWS Systems Manager 或配置管理工具,而不是嵌入大型脚本。

#!/bin/bash
yum update -y
yum install -y amazon-cloudwatch-agent
/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl \
  -a fetch-config -m ec2 -c ssm:/MyApp/CWConfig -s
# Start application
cd /opt/myapp && ./start.sh

使用预热池加快扩容

预热池会在 ASG 外部预先初始化一组处于就绪状态的已停止(或正在运行的)EC2 实例。当 ASG 需要扩容时,它会从预热池中提取实例,而不是启动冷实例,从而大幅缩短增加容量所需的时间。预热池中的实例会产生停止状态费用(仅收取 EBS 费用,不收取 CPU 费用),因此比保留完全运行的备用实例便宜得多。

终止策略与 AZ 平衡

ASG 缩容时必须决定要终止哪些实例。默认的终止策略会先选择实例数量最多的 AZ(以重新平衡),然后选择最旧的启动模板,最后选择距离计费小时最近的实例。您可以自定义此顺序——例如选择 OldestLaunchTemplate,优先移除运行过时配置的实例。子网变为可用状态或进行手动更改后,ASG 也会自动执行 AZ 重新平衡。

快速检查

测试您对本课 AWS Solutions Architect (SAA-C03) 概念的理解。

课程回顾

本课介绍了:启动模板提供了版本化且可重复使用的实例蓝图,支持多个版本以及 $Latest/$Default 版本指针;ASG 容量边界(最小/最大/期望)通过在子网之间自动进行多 AZ 分布来控制实例组规模;当 ASG 位于负载均衡器后方时,必须启用ELB 运行状况检查,以便应用级故障触发实例替换。接下来,我们将学习包括目标跟踪和阶梯扩缩容在内的扩缩容策略。

常见问题解答

「启动模板与 ASG 配置」课时是免费的吗?

是的 — 「启动模板与 ASG 配置」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cloud & IT Cert Prep 课程的其余内容,请升级到 CoddyKit PRO。 Cloud & IT Cert Prep 课程共包含 4 节课。

「启动模板与 ASG 配置」这节课中我会学到什么?

使用正确的 AMI、实例类型和用户数据创建启动模板,然后将其附加到具有最小、最大和期望容量的 Auto Scaling Group。 你通过在浏览器中直接运行的动手代码来练习 Cloud & IT Cert Prep,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Cloud & IT Cert Prep 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Cloud & IT Cert Prep 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。

「启动模板与 ASG 配置」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Cloud & IT Cert Prep 课中编写并运行代码吗?

能。每节 Cloud & IT Cert Prep 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 启动模板与 ASG 配置
  2. 扩展策略:目标跟踪与分步扩展
  3. 计划扩展与预测性扩展
  4. 实例刷新与生命周期钩子
← 返回 Cloud & IT Cert Prep