2. VPC 网络设计与规划
在 Google Cloud 中,VPC 网络是承载所有计算、数据库与中间件资源的逻辑边界。它不是一个“先建后调”的附属组件,而是决定后续 IP 规划、跨区域通信、安全策略与多项目协作方式的基础设施。本章围绕四个相互关联的设计决策展开:选择自定义模式 VPC、规划子网 CIDR、理解区域与全球路由行为、判断共享 VPC 的适用场景与设计原则。
一、为什么优先选择自定义模式 VPC
创建 VPC 时,Google Cloud 提供两种子网模式:自动模式和自定义模式。自动模式会在每个区域自动创建一个子网,并从 10.128.0.0/9 中按区域顺序分配固定网段,例如 us-central1 得到 10.128.0.0/20,europe-west1 得到 10.132.0.0/20。这种方式上手快,但存在三个明显问题:网段不可控、容易与本地数据中心或其他云环境重叠、后续难以按业务分层划分。
自定义模式则允许你只创建真正需要的区域子网,并自行指定 CIDR。对于企业网络,推荐默认采用自定义模式,原因在于它把地址空间的控制权交还给网络团队,便于与本地网络、对等连接和防火墙策略统一规划。一个常见的做法是:先为整个组织或环境预留一个大地址块,再按区域、按用途逐层切分。
二、子网 CIDR 规划:从地址池到子网切分
CIDR 规划的核心是“先定总量,再分区域,再分用途”。假设某企业为生产环境预留 10.10.0.0/16,可用地址约 65536 个。可以按区域切分为多个 /20 子网,每个子网约 4096 个地址。例如:
| 区域 | 子网名称 | CIDR | 可用地址数(约) | 用途 |
|---|---|---|---|---|
| asia-east1 | prod-app-east | 10.10.0.0/20 | 4096 | 应用层 |
| asia-east1 | prod-db-east | 10.10.16.0/20 | 4096 | 数据库层 |
| asia-southeast1 | prod-app-sea | 10.10.32.0/20 | 4096 | 应用层 |
| asia-southeast1 | prod-db-sea | 10.10.48.0/20 | 4096 | 数据库层 |
规划时需要注意几个关键点。第一,子网 CIDR 不能与同 VPC 内其他子网重叠,也不能与通过 VPC 对等连接、Cloud VPN 或 Interconnect 接入的本地网络重叠。第二,Google Cloud 会从每个子网中保留四个地址:网络地址、默认网关、倒数第二个地址和广播地址,因此 /20 实际可用地址为 4092 个。第三,子网创建后 CIDR 不能直接修改,只能删除重建,因此前期规划必须留有余量。
对于需要更大地址空间的环境,可以使用 /16 甚至 /8 作为顶层地址池,再按区域和用途细分。建议为每个区域预留至少一个 /20,为数据库、中间件等关键层单独划分子网,避免应用与数据库混用同一子网导致防火墙规则难以收敛。
三、区域与全球路由:理解 VPC 的“全球性”
Google Cloud VPC 是全球性资源,但子网是区域性的。一个 VPC 可以包含多个区域的子网,而这些子网之间默认可以通过全球路由互相通信。这意味着,位于 asia-east1 的虚拟机可以直接访问 asia-southeast1 子网中的实例,无需额外配置对等连接或 VPN。这种设计简化了跨区域架构,但也带来两个需要关注的问题:路由传播和防火墙策略。
每个子网会自动创建一条区域路由,用于本区域内的通信;同时,VPC 会自动创建一条全球路由,用于跨区域子网之间的通信。如果使用自定义路由,需要明确路由的优先级和下一跳。例如,当同时存在默认互联网网关路由和自定义 VPN 路由时,更具体的前缀会优先匹配。
从图中可以看到,两个区域各自拥有应用层和数据库层子网,全球路由使它们默认互通。但“默认互通”不等于“默认安全”。防火墙规则仍然需要按子网、标签或服务账号进行控制。例如,可以只允许 prod-app-east 访问 prod-db-east 的 3306 端口,而拒绝其他来源。因此,全球路由解决的是可达性,防火墙解决的是访问控制,两者必须配合设计。
四、共享 VPC:适用场景与设计原则
共享 VPC 允许一个宿主项目(host project)集中管理 VPC 网络和子网,其他服务项目(service project)将自己的资源部署到宿主项目的子网中。它解决的是多项目环境下的网络集中治理问题:网络团队在宿主项目中统一规划 CIDR、路由和防火墙,业务团队在各自服务项目中独立创建虚拟机、GKE 集群或 Cloud SQL 实例,而无需各自维护一套 VPC。
共享 VPC 适合以下场景:组织内存在多个业务项目但希望共用同一套网络边界;需要集中控制 IP 地址和防火墙策略;希望减少 VPC 对等连接的复杂度;以及需要让不同项目的资源像同一网络内一样互通。它不适合的场景包括:项目之间需要完全独立的网络隔离、需要各自独立的计费边界、或者网络策略差异极大且无法统一。
设计共享 VPC 时,建议遵循几条原则。第一,宿主项目只承载网络资源,不部署业务负载,避免权限和配额混杂。第二,子网按环境和用途划分,例如生产、测试、开发分别使用不同子网,并通过 IAM 控制服务项目对子网的访问。第三,防火墙规则尽量使用服务账号或标签,而不是依赖 IP 地址,因为共享 VPC 中 IP 可能动态变化。第四,提前规划好宿主项目与服务项目的对应关系,避免后期迁移成本。
五、把四项决策串起来
回到整体设计流程:先确定使用自定义模式 VPC,掌握地址空间的控制权;再按区域和用途规划子网 CIDR,确保不重叠并预留扩展;然后理解区域子网与全球路由的关系,明确跨区域通信默认可达但需防火墙控制;最后根据组织协作模式判断是否采用共享 VPC,把网络治理集中到宿主项目。这四项决策相互影响,例如共享 VPC 中的子网规划必须更加严格,因为多个服务项目共享同一地址池;而全球路由的存在又要求防火墙规则具备跨区域的统一视角。
在实际项目中,建议先画出一张地址分配表和一张项目关系图,再动手创建 VPC。地址分配表至少包含区域、子网名称、CIDR、用途和预留扩展空间;项目关系图则标明宿主项目、服务项目以及各自使用的子网。这样可以在创建资源之前发现地址冲突、权限缺口和路由盲区,避免后期返工。