阿里云ECS与VPC网络
1. ECS 选型
1.1 实例规格
| 系列 | 用途 |
|---|---|
| t6/t5(突发型) | 测试、低负载 |
| s6(共享标准) | 入门生产 |
| c6/c7(计算型) | CPU 密集 |
| g6/g7(通用型) | 平衡 |
| r6/r7(内存型) | 内存密集 |
| hf 系列(高主频) | 单核性能要求 |
前端 SSR:c6/g6 2C4G 起步。 后端 API:g6 / r6。
1.2 付费方式
- 按量:按小时计费,可随时停。开发 / 弹性扩
- 包年包月:长期使用,便宜 30-50%。生产基线
- 抢占式:极便宜但可能被回收。批处理任务
1.3 操作系统
推荐 Ubuntu 22.04 LTS 或 Alibaba Cloud Linux 3。CentOS 已停止维护,不推荐。
2. VPC 架构
VPC(172.16.0.0/12)
├── VSwitch 公网区(10.0.1.0/24)
│ ├── ECS Web 1
│ └── ECS Web 2
├── VSwitch 应用区(10.0.2.0/24)
│ ├── ECS API 1
│ └── ECS API 2
├── VSwitch 数据区(10.0.3.0/24)
│ ├── RDS
│ └── Redis
└── NAT 网关 + EIP(出公网)
2.1 VPC
每个区域可建多个 VPC。CIDR:
- 大集群:
10.0.0.0/8、172.16.0.0/12 - 小项目:
10.0.0.0/16
# Terraform
resource "alicloud_vpc" "main" {
vpc_name = "prod-vpc"
cidr_block = "10.0.0.0/16"
}
2.2 VSwitch(交换机)
划分 VPC 内子网。每个 VSwitch 绑一个可用区:
resource "alicloud_vswitch" "web" {
vpc_id = alicloud_vpc.main.id
cidr_block = "10.0.1.0/24"
zone_id = "cn-hangzhou-i"
}
多可用区部署:每可用区一个 vswitch,SLB 跨可用区。
3. 安全组(Security Group)
虚拟防火墙,控制实例进出流量。
3.1 三层防御
安全组 1(Web):开放 80/443
安全组 2(API):只允许 Web 安全组访问 8080
安全组 3(DB):只允许 API 安全组访问 3306
3.2 配置示例
resource "alicloud_security_group" "web" {
name = "prod-web"
vpc_id = alicloud_vpc.main.id
}
resource "alicloud_security_group_rule" "http" {
type = "ingress"
ip_protocol = "tcp"
port_range = "80/80"
security_group_id = alicloud_security_group.web.id
cidr_ip = "0.0.0.0/0"
}
resource "alicloud_security_group_rule" "https" {
type = "ingress"
ip_protocol = "tcp"
port_range = "443/443"
security_group_id = alicloud_security_group.web.id
cidr_ip = "0.0.0.0/0"
}
resource "alicloud_security_group_rule" "ssh" {
type = "ingress"
ip_protocol = "tcp"
port_range = "22/22"
security_group_id = alicloud_security_group.web.id
cidr_ip = "1.2.3.4/32" # 公司 IP 白名单
}
3.3 关键规则
- 22(SSH)只对运维 IP 开放,不要 0.0.0.0/0
- DB / Redis 端口只对应用安全组开放,绝不对公网
- 默认拒绝出站,按需开放(更严,但操作麻烦)
4. 弹性公网 IP(EIP)
ECS 默认私有 IP。要公网访问:
- 申请固定公网 IP(创建时)— 释放实例就丢
- 弹性 IP(EIP)— 独立资源,可解绑迁移
- NAT 网关 + EIP — 多 ECS 共享出公网
resource "alicloud_eip_address" "main" {
bandwidth = 5
}
resource "alicloud_eip_association" "main" {
allocation_id = alicloud_eip_address.main.id
instance_id = alicloud_instance.web.id
}
4.1 NAT 网关
私有 ECS 通过 NAT 共享出公网(不暴露 IP):
resource "alicloud_nat_gateway" "main" {
vpc_id = alicloud_vpc.main.id
vswitch_id = alicloud_vswitch.web.id
nat_gateway_name = "prod-nat"
}
resource "alicloud_snat_entry" "main" {
snat_table_id = alicloud_nat_gateway.main.snat_table_ids
source_vswitch_id = alicloud_vswitch.app.id
snat_ip = alicloud_eip_address.main.ip_address
}
5. 跨地域
VPC 默认隔离。跨地域通信:
- CEN(云企业网):阿里官方方案,专线级
- VPN Gateway:IPsec 加密隧道
- 公网 + 白名单:简单但不安全
6. 高可用部署
公网域名 → ALB(多可用区) → ECS Web 群组
├── 可用区 i:ECS 1, ECS 2
├── 可用区 j:ECS 3, ECS 4
└── 可用区 k:ECS 5, ECS 6
- ALB 跨可用区
- ECS 至少 2 个可用区
- RDS 主备 + 异地备份
- 监控 + 自动重启
7. 备份策略
- ECS 系统盘:自动快照(每天 + 保留 7 天)
- 数据盘:单独快照策略,30 天
- RDS:自动备份 + 日志备份
- OSS:开版本控制 + 跨区复制
8. 监控
云监控控制台:
- CPU / 内存 / 磁盘 / 网络
- 进程监控(云监控 agent)
- 告警短信 / 邮件 / 飞书 webhook
或装 Prometheus node_exporter + Grafana。
9. 成本控制
- 包月 vs 按量
- 共享带宽包代替 EIP 单独计费
- 监控 EIP 流量异常(被刷)
- 删除闲置资源(释放 EIP、删快照)
- 用低规格做测试环境(突发型)
10. 常见反模式
- 22 端口对 0.0.0.0/0:暴力破解每天上千次
- DB 公网可达:数据泄漏入口
- 单可用区部署生产:可用区故障全挂
- 不做快照:误操作不可恢复
- EIP 不监控:被 DDoS 时流量包爆账单
- 所有 ECS 一个安全组:粒度太粗
- 生产用按量 ECS:账单贵 30-50%
- 不删测试资源:资源累积浪费
11. 延伸阅读
- 阿里云 VPC 文档
- 阿里云 ECS 文档
- 阿里云最佳实践
- 模块 12 Terraform 入门与进阶