🚀 在 AWS 上使用 ALB 与 Auto Scaling 部署高可用 Web 应用(适合初学者)

发布: (2026年1月20日 GMT+8 07:51)
5 min read
原文: Dev.to

Source: Dev.to

请提供您希望翻译的完整文本(除代码块和 URL 之外),我将把它翻译成简体中文并保持原有的 Markdown 格式。

介绍

在这个实践项目中,使用 VPC、应用负载均衡器(ALB)、自动伸缩组(ASG)、EC2 和 NAT 网关等核心服务构建可投入生产的 AWS 架构。

该设置遵循 AWS 最佳实践:

  • 安全的网络
  • 高可用性
  • 自动伸缩
  • EC2 实例不对外公开

本指南对初学者友好,同时也适用于面试准备。

您将学习

  • 如何设计安全的 AWS VPC
  • 公有子网与私有子网(真实案例)
  • 应用负载均衡器 (ALB)
  • 自动伸缩组 (ASG)
  • 用于出站互联网的 NAT 网关
  • 企业中使用的真实架构

架构概览

Internet
   |

Application Load Balancer (Public Subnets)
   |

Target Group
   |

Auto Scaling Group
   (EC2 Instances in Private Subnets)
   |

NAT Gateway → Internet (Outbound Only)
  • EC2 实例没有 公共 IP
  • 只有 ALB 对互联网公开。

使用的服务

  • Amazon VPC
  • EC2 (Ubuntu)
  • Application Load Balancer
  • Auto Scaling Group
  • Target Groups
  • NAT Gateway
  • Elastic IP
  • Security Groups

Source:

步骤‑by‑Step 实施

1️⃣ 创建自定义 VPC

  • CIDR:10.0.0.0/16
  • 启用 DNS 主机名DNS 解析

2️⃣ 创建子网

创建四个子网:

子网类型名称用途
公网Public‑Subnet‑1ALB
公网Public‑Subnet‑2NAT 网关
私网Private‑Subnet‑1EC2
私网Private‑Subnet‑2EC2

仅对公网子网启用 自动分配公网 IP = 是

3️⃣ Internet Gateway

  • 创建并将 Internet Gateway 附加到 VPC。
  • ALB 和 NAT 网关均需要它。

4️⃣ NAT 网关(关键)

  • 在公网子网中创建 NAT 网关。
  • 关联弹性 IP。
  • 使私有 EC2 实例能够安全地访问互联网。

5️⃣ 路由表

  • 公网路由表: 0.0.0.0/0 → Internet Gateway
  • 私网路由表: 0.0.0.0/0 → NAT 网关

将相应的路由表关联到对应的子网。

6️⃣ 安全组

  • ALB 安全组:

    • 入站:HTTP (80) 来自 0.0.0.0/0
  • EC2 安全组:

    • 入站:HTTP (80) 来自 ALB 安全组
    • 入站(可选):SSH (22) 来自你的 IP

EC2 实例只能通过 ALB 访问。

7️⃣ 启动模板(EC2)

  • AMI: Ubuntu 22.04
  • 实例类型: t2.micro

用户数据脚本

#!/bin/bash
apt update -y
apt install apache2 -y
systemctl start apache2
systemctl enable apache2
cat  /var/www/html/index.html

欢迎来自 ALB + 自动伸缩

Source:

主机名: $(hostname)

EOF


### 8️⃣ 目标组  

- **目标类型:** 实例  
- **协议:** HTTP  
- **端口:** 80  
- **健康检查路径:** `/`  

### 9️⃣ 应用负载均衡器  

- **类型:** 面向互联网  
- **子网:** 公网子网  
- **监听器:** HTTP 80 → 转发到目标组  

### 🔟 自动伸缩组  

- 使用上面创建的启动模板。  
- **子网:** 私有子网  
- **期望容量:** 2  
- **最小值:** 1  
- **最大值:** 3  
- 附加到 ALB 目标组。  

*可选:* 添加基于 CPU 的伸缩策略。

## 最终验证  

1. 复制 ALB DNS 名称。  
2. 将其粘贴到浏览器中并多次刷新。  

您应该会看到不同的主机名,以确认负载均衡、自动伸缩和高可用性。

## GitHub 仓库  

**项目源代码和文档:**  
[https://github.com/IrfanPasha05/aws-alb-autoscaling-project](https://github.com/IrfanPasha05/aws-alb-autoscaling-project)

该仓库包括:

- 文件夹结构  
- 用户数据脚本  
- 设置步骤  
- 故障排除指南

## 为什么这个项目重要  

The architecture mirrors real production environments and is commonly used in:

- 企业应用程序  
- DevOps 与云工程师岗位  

It’s perfect for:

- 简历  
- 面试  
- 作品集(LinkedIn、DEV 等)

## 未来增强  

- 使用 ACM 的 HTTPS  
- 通过 Route 53 的自定义域名  
- CloudFront CDN  
- 使用 CloudWatch 进行监控

## Final Thoughts  

构建此项目可以加深对 AWS 网络、安全性和可扩展性的理解。如果你正在学习 AWS 或准备从事云相关岗位,实施一次——你将永生难忘。  

祝你云端愉快! ☁️🚀
Back to Blog

相关文章

阅读更多 »