DAY3 - 监控与伸缩

发布: (2026年1月31日 GMT+8 08:20)
4 min read
原文: Dev.to

Source: Dev.to

概览

今天的动手实验涵盖使用应用负载均衡器 (ALB)、自动伸缩组 (ASG) 和 CloudWatch 对 EC2 实例进行监控和伸缩。

网络设置

  • 子网:使用第 1 天动手实验中创建的公共子网。
  • 路由:向关联私有子网的私有路由表添加默认路由,以便这些子网中的实例能够访问互联网。

安全组

ALB 安全组

  • 入方向:HTTP 80,来源 0.0.0.0/0
  • 出方向:全部流量(默认)

EC2 安全组

  • 入方向:HTTP 80,来源上述 ALB 安全组
  • 出方向:全部流量(默认)

目标组

  • 目标类型:实例

启动模板

为 ASG 创建启动模板,使用以下设置:

  • AMI:Amazon Linux 2023
  • 用户数据
#!/bin/bash
set -e

dnf -y update
dnf -y install nginx
systemctl enable --now nginx

TOKEN=$(curl -s -X PUT "http://169.254.169.254/latest/api/token" \
  -H "X-aws-ec2-metadata-token-ttl-seconds: 21600")
INSTANCE_ID=$(curl -s -H "X-aws-ec2-metadata-token: $TOKEN" \
  http://169.254.169.254/latest/meta-data/instance-id)

cat > /usr/share/nginx/html/index.html <<EOF

## Day3: ALB + ASG (Private EC2)

InstanceId: ${INSTANCE_ID}

EOF

自动伸缩组 (ASG)

  • 启动模板:使用上面创建的模板。
  • 方案:面向互联网

创建 ASG 后,验证 ALB 的 DNS 名称能够加载显示实例 ID 的页面。确保目标组状态为 healthy(健康)。

伸缩策略

  1. 在 ASG 控制台,进入 Automatic scaling → Create dynamic scaling policy
  2. 通过 SSM 连接到 EC2 实例(如第 2 天所示),运行以下命令在十分钟内产生 CPU 负载:
sudo dnf -y install stress-ng
cd /tmp
stress-ng --cpu 2 --timeout 10m
  1. 等待几分钟,观察 ASG 仪表板中的伸缩活动。

清理顺序

按以下顺序删除资源,以避免依赖错误:

  1. 自动伸缩组
  2. 启动模板
  3. ALB 和目标组
  4. 子网、路由表和 NAT 资源
  5. 安全组

关键考试要点

  • NAT 网关:托管服务;自动关联弹性 IP(EIP)。
  • NAT 实例:带有 EIP 或公网 IP 的 EC2 实例;需要自行管理故障转移和负载均衡。

ALB 与 NLB 对比

功能ALBNLB
协议HTTP/HTTPS(第 7 层)TCP、TLS、UDP(第 4 层)
路由基于 URL、主机、路径的路由;可指向 Lambda 函数;可与 ACM 证书集成高吞吐、静态 IP(EIP);适用于对延迟敏感的工作负载(如金融系统)
使用场景需要 URL 路由或 SSL 终止的 Web 应用高速、低延迟流量或需要固定 IP 地址的服务

资源伸缩

  • EC2:ASG + ALB/NLB + 伸缩指标(CPU、请求数等)
  • Lambda:并发限制,由事件源(SQS、Kinesis 等)驱动
  • ECS/EKS:服务自动伸缩

期待在第 4 天动手实验中再见!

Back to Blog

相关文章

阅读更多 »

设计对 AWS 资源的安全访问

考试指南:Solutions Architect – Associate 🛡️ 领域 1 – Design Secure Architectures 📘 任务陈述 1.1 > Secure access 意味着您可以清晰地回答 f...