AWS EC2 服务器弹性伸缩:基于 CPU 使用率的伸缩组配置
1. 核心概念
- 弹性伸缩组 (Auto Scaling Group):自动管理 EC2 实例集合,根据负载动态增减实例数量。
- 目标跟踪策略 (Target Tracking Scaling Policy):基于指标(如 CPU 使用率)自动调整实例数量。
- CloudWatch 指标:监控 CPU 使用率,触发伸缩动作。
2. 配置步骤
(1) 创建启动模板 (Launch Template)
定义实例配置(AMI、实例类型、安全组等):
            
            
              bash
              
              
            
          
          aws ec2 create-launch-template \
  --launch-template-name MyTemplate \
  --version-description v1 \
  --launch-template-data '{
    "ImageId": "ami-0abcdef1234567890",
    "InstanceType": "t3.micro",
    "SecurityGroupIds": ["sg-0abcdef1234567890"]
  }'(2) 创建伸缩组
设置最小/最大实例数,关联模板:
            
            
              bash
              
              
            
          
          aws autoscaling create-auto-scaling-group \
  --auto-scaling-group-name MyScalingGroup \
  --min-size 2 \
  --max-size 10 \
  --desired-capacity 2 \
  --vpc-zone-identifier "subnet-0abcdef1,subnet-0abcdef2" \
  --launch-template "LaunchTemplateName=MyTemplate,Version=1"(3) 配置 CPU 使用率策略
创建目标跟踪策略,目标 CPU 使用率设为 70%:
            
            
              bash
              
              
            
          
          aws autoscaling put-scaling-policy \
  --policy-name CPU70-Policy \
  --auto-scaling-group-name MyScalingGroup \
  --policy-type TargetTrackingScaling \
  --target-tracking-configuration '{
    "PredefinedMetricSpecification": {
      "PredefinedMetricType": "ASGAverageCPUUtilization"
    },
    "TargetValue": 70.0
  }'- 当平均 CPU 使用率 \> 70% 时自动扩容
- 当平均 CPU 使用率 \< 70% 时自动缩容
3. 关键算法逻辑
伸缩组通过以下公式计算所需实例数 N: $$ N = \frac{\text{当前总负载}}{\text{目标使用率} \times \text{单实例容量}} $$ 其中:
- 目标使用率 = 70%
- 单实例容量 = 1 vCPU (以 t3.micro 为例)
4. 监控与优化
- 
CloudWatch 看板 :监控 CPUUtilization指标
- 
冷却时间 (Cooldown):建议设置 300 秒防止频繁波动 
- 
测试方法 : - 使用 stress工具模拟高负载
 bashsudo amazon-linux-extras install -y epel sudo yum install -y stress stress --cpu 8 --timeout 600 # 启动 8 个 CPU 进程- 观察自动新增实例
 
- 使用 
5. 成本优化建议
- 使用 Spot 实例降低 40% \\sim 90% 成本
- 设置不同时段伸缩策略(如夜间缩容)
- 启用预测性伸缩(Predictive Scaling)
注意事项 :首次部署建议在非生产环境测试,确保伸缩策略不影响服务可用性。可通过修改
TargetValue调整灵敏度(如 60% 更激进,80% 更保守)。