🚀 在 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‑1 | ALB |
| 公网 | Public‑Subnet‑2 | NAT 网关 |
| 私网 | Private‑Subnet‑1 | EC2 |
| 私网 | Private‑Subnet‑2 | EC2 |
仅对公网子网启用 自动分配公网 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
- 入站:HTTP (80) 来自
-
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 或准备从事云相关岗位,实施一次——你将永生难忘。
祝你云端愉快! ☁️🚀