AWS 实战技巧:从网络架构到核心服务
1. AWS 基础
1.1 环境配置
1.1.1 安装 AWS CLI
1 | brew install awscli |
1.1.2 获取 Access Key
- 登录 AWS 管理控制台
- 点击右上角账户名称 → Security credentials
- 在 Access keys 部分点击 Create New Access Key
1.1.3 常用命令
1 | # 查看 RDS 实例信息 |
1.2 Region 与可用区
1.2.1 核心概念
%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#3B82F6', 'primaryTextColor': '#1E3A5F', 'primaryBorderColor': '#2563EB', 'lineColor': '#60A5FA'}}}%%
flowchart TD
subgraph Region ["Region(区域)"]
direction TB
subgraph AZ1 ["可用区 A"]
DC1["数据中心 1"]
DC2["数据中心 2"]
end
subgraph AZ2 ["可用区 B"]
DC3["数据中心 3"]
DC4["数据中心 4"]
end
subgraph AZ3 ["可用区 C"]
DC5["数据中心 5"]
end
end
AZ1 <--> |"低延迟 ≤2ms"| AZ2
AZ2 <--> |"低延迟 ≤2ms"| AZ3
classDef region fill:#DBEAFE,stroke:#2563EB,color:#1E3A5F
classDef az fill:#D1FAE5,stroke:#059669,color:#065F46
classDef dc fill:#FEF3C7,stroke:#D97706,color:#92400E
class Region region
class AZ1,AZ2,AZ3 az
class DC1,DC2,DC3,DC4,DC5 dc| 概念 | 定义 | 类比 |
|---|---|---|
| Region | AWS 在全球的物理地理区域(如 us-east-1、ap-northeast-1) | 城市 |
| 可用区 (AZ) | Region 内物理隔离的数据中心集群 | 城市内的独立园区 |
1.2.2 Region 选择策略
| 考量因素 | 说明 |
|---|---|
| 延迟 | 选择离用户最近的 Region |
| 合规性 | 满足数据本地化法规要求 |
| 灾备 | 跨 Region 部署实现异地容灾 |
| 成本 | 不同 Region 定价存在差异 |
1.2.3 多可用区架构
多 AZ 部署是保障高可用的核心策略。AZ 间物理隔离、独立供电,单个 AZ 故障不影响其他 AZ。
成本考量:
- 同 AZ 内数据传输(私有 IP):免费
- 跨 AZ 数据传输:约 $0.01/GB(按出方向计费,双方各自承担出站费用)
- AZ 间延迟:1-2ms,对绝大多数应用可忽略
典型多 AZ 网络架构:
%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#3B82F6'}}}%%
flowchart TB
subgraph VPC ["VPC: my-vpc (10.0.0.0/16)"]
subgraph AZA ["us-east-1a"]
PubA["public-subnet-a 10.0.1.0/24"]
PriA["private-subnet-a 10.0.2.0/24"]
end
subgraph AZB ["us-east-1b"]
PubB["public-subnet-b 10.0.3.0/24"]
PriB["private-subnet-b 10.0.4.0/24"]
end
end
PubA --> |"ELB, NAT GW"| PriA
PubB --> |"ELB 节点"| PriB
PriA --> |"EC2, RDS主"| PriB
PriB --> |"EC2, RDS备"| PriA
classDef pub fill:#DBEAFE,stroke:#2563EB
classDef pri fill:#FEE2E2,stroke:#DC2626
class PubA,PubB pub
class PriA,PriB pri即使 us-east-1a 整体故障,us-east-1b 的 ELB 继续接收流量,RDS 自动切换至备库,服务不中断。
1.2.4 查看 EC2 所在区域
EC2 是区域性资源,需切换到对应 Region 才能查看。可用区信息(如 us-east-1a)直接显示在实例列表中。
1.3 VPC 网络
VPC (Virtual Private Cloud) 是 AWS 中逻辑隔离的私有虚拟网络,完全由用户掌控。
核心特性:
- 自定义 IP 地址范围、子网、路由表
- 默认隔离,需显式配置才能访问互联网或其他 VPC
- 区域级资源,不能跨 Region,但可跨越多个 AZ
VPC 核心价值:将 EC2 应用服务器、数据库等核心资产放在私有子网(无公网访问),仅将 ALB 放在公有子网作为流量入口,实现网络层面的安全隔离。
1.4 ELB 与 NAT Gateway
ELB 和 NAT Gateway 是云架构中两个关键的流量组件,分别处理入站和出站流量:
%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#3B82F6', 'primaryTextColor': '#1E3A5F', 'primaryBorderColor': '#2563EB', 'lineColor': '#60A5FA'}}}%%
flowchart LR
subgraph Internet ["互联网"]
User["用户"]
ExtAPI["外部 API"]
end
subgraph VPC ["VPC"]
subgraph Public ["公有子网"]
ELB["ELB 流量入口"]
NAT["NAT GW 流量出口"]
end
subgraph Private ["私有子网"]
EC2["EC2 实例"]
end
end
User --> |"Inbound"| ELB
ELB --> EC2
EC2 --> NAT
NAT --> |"Outbound"| ExtAPI
classDef internet fill:#F3E8FF,stroke:#7C3AED
classDef public fill:#DBEAFE,stroke:#2563EB
classDef private fill:#FEE2E2,stroke:#DC2626
class User,ExtAPI internet
class ELB,NAT public
class EC2 private| 组件 | 方向 | 功能 | 类比 |
|---|---|---|---|
| ELB | 外 → 内 | 接收外部请求并分发至后端服务器 | 大楼前台 |
| NAT Gateway | 内 → 外 | 允许私有实例访问互联网,阻止外部主动访问 | 公司外线电话 |
NAT Gateway 关键配置:
- 必须部署在公有子网
- 需分配弹性 IP (Elastic IP)
- 服务对象是私有子网中的实例
1.5 ELB 与 Target Group
ELB 不直接连接 EC2 实例,而是通过 Target Group 管理后端目标。
三层关系:ELB → Target Group → Targets
%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#3B82F6'}}}%%
flowchart LR
User["用户请求"] --> ALB["ALB"]
ALB --> |"/api/*"| TG1["API Target Group"]
ALB --> |"/web/*"| TG2["Web Target Group"]
TG1 --> EC2A["EC2-API-1"]
TG1 --> EC2B["EC2-API-2"]
TG2 --> EC2C["EC2-Web-1"]
TG2 --> EC2D["EC2-Web-2"]
classDef alb fill:#3B82F6,stroke:#2563EB,color:#fff
classDef tg fill:#10B981,stroke:#059669,color:#fff
classDef ec2 fill:#F59E0B,stroke:#D97706,color:#fff
class ALB alb
class TG1,TG2 tg
class EC2A,EC2B,EC2C,EC2D ec21.5.1 创建 Target Group
1 | target_type: "IP addresses" # 或 Instances |
负载均衡算法:
- 轮询 (Round Robin):默认算法,按顺序分配请求
- 最少未完成请求 (Least Outstanding Requests):优先分配给正在处理请求数最少的目标
会话粘性(可选):通过 Target Group 的 Stickiness 配置实现,基于 Cookie 而非 IP。
1.5.2 创建 ALB
1 | scheme: "Internet-facing" |
安全最佳实践:修改 EC2 安全组,将 HTTP 入站规则的源改为 ALB 的安全组,拒绝直接访问。
1.6 HTTPS 与证书
HTTPS 在 ALB 层面配置和终止,后端流量可保持 HTTP:
%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#3B82F6'}}}%%
flowchart LR
User["用户浏览器"] <--> |"HTTPS 加密"| ALB["ALB"]
ALB <--> |"HTTP 未加密"| EC2["EC2"]
classDef secure fill:#10B981,stroke:#059669,color:#fff
classDef plain fill:#F59E0B,stroke:#D97706,color:#fff
class User,ALB secure
class EC2 plain优势:
- 证书集中管理,无需在每台 EC2 配置
- 降低后端 CPU 负载
- 简化后端配置,仅需监听 80 端口
- VPC 内部流量处于受信环境
1.6.1 配置步骤
申请证书:在 ACM 申请免费证书(推荐 DNS 验证,支持自动续订)
- ⚠️ ACM 证书是区域性的,ALB 使用的证书需在同一 Region(CloudFront 例外,必须使用 us-east-1,见 4.1 节)
配置 HTTPS 监听器:
- 协议:HTTPS,端口:443
- 默认操作:转发至 Target Group
- SSL 证书:选择 ACM 中已签发的证书
2. EC2
2.1 磁盘扩容
2.1.1 AWS 控制台操作
EC2 → Elastic Block Store → Volumes → 修改卷大小
2.1.2 系统内扩展
1 | # 确认卷状态 |
2.2 存储性能指标
| 指标 | 定义 | 类比 |
|---|---|---|
| IOPS | 每秒读写操作次数 | 收费站每秒通过的车辆数 |
| Throughput | 每秒传输的数据量 (MiB/s) | 高速公路的总车道宽度 |
- IOPS 影响响应速度和并发处理能力
- Throughput 影响大文件传输效率
3. S3
3.1 基础操作
1 | # 下载 |
cp vs sync:
| 命令 | 特性 |
|---|---|
aws s3 cp | 无条件复制所有文件,直接覆盖 |
aws s3 sync | 仅复制新增/更新的文件;配合 --delete 可删除目标中多余文件 |
3.2 加速模式
1 | obj, err := s.preSignClient.PresignPutObject(ctx, &s3.PutObjectInput{ |
启用顺序:先开启 S3 加速功能 → 上线代码
关闭顺序:先下线代码 → 关闭 S3 加速功能
3.3 私有桶配合 CloudFront
S3 设置为 Block all public access,通过 OAC 允许 CloudFront 访问:
1 | { |
4. CloudFront
4.1 域名绑定
- 在 us-east-1 区域申请证书(CloudFront 强制要求)
- CloudFront 设置 → SSL/TLS → 选择证书
- 添加 Alternate domain name (CNAME)
- Route 53 创建 CNAME 记录:
cdn.example.com → xxx.cloudfront.net
4.2 缓存失效
在 CloudFront 分配详情页:
- 选择 Invalidations → Create Invalidation
- 输入路径:
- 单个对象:
/path/to/object.jpg - 全部失效:
/*
- 单个对象:
- 点击 Invalidate
5. RDS
5.1 创建数据库实例
关键配置项:
- VPC:选择正确的 VPC
- Security Group:选择正确的安全组
- 密码管理:Secrets Manager
5.2 创建用户
1 | -- 创建读写用户 |
5.3 创建只读副本
Database → Actions → Create read replica(使用默认选项)
⚠️ 只读副本与主库共享相同的用户名和密码。若使用 Secrets Manager 自动轮换密码,副本会自动同步。
6. ElastiCache
6.1 Serverless 模式
ElastiCache Serverless 是无服务器部署模式:
- 无需手动配置节点数量、分片或高可用
- Redis 引擎隐式启用 Cluster Mode,数据自动分布到多个分片
7. MongoDB Atlas(AWS Marketplace)
7.1 通过 AWS Marketplace 订阅
- AWS Marketplace → MongoDB Atlas (pay-as-you-go)
- View purchase options → Subscribe
- 完成账户关联
7.2 创建 Cluster
- 模式:Dedicated
- 实例类型:M10(2GB RAM, 2 vCPU)
- 关闭:Global Writes、BI Connector