跳到主要内容

阿里云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/8172.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. 延伸阅读