You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GCP部署三层应用并配置类AWS子网架构?

1. 如何在GCP部署三层应用?

三层应用通常分为Web层(前端)、应用层(业务逻辑)、数据层(存储),在GCP的部署流程如下:

架构规划

  • Web层:对外暴露处理用户请求,建议用GCE虚拟机或GKE容器集群,部署在公网子网,搭配GCP HTTP(S)负载均衡实现流量分发和高可用。
  • 应用层:处理核心业务逻辑,仅允许Web层访问,部署在私网子网,可使用GCE/GKE,通过内部负载均衡与Web层通信。
  • 数据层:存储业务数据,仅允许应用层访问,优先选择托管服务如Cloud SQL(关系型)、Cloud Firestore(NoSQL),或在私网子网部署自管数据库。

具体部署步骤

  1. 网络基础配置:创建自定义VPC,划分公网/私网子网(参考第二个问题的配置),确保各层子网通过VPC内部路由互通。
  2. 数据层部署:
    • 若用Cloud SQL,创建实例时选择私有IP,绑定到应用层所在的私网子网,配置IAM权限允许应用层服务账号访问。
    • 若用自管数据库,在私网子网创建VM,配置防火墙规则仅开放数据库端口给应用层IP段。
  3. 应用层部署:
    • 部署应用服务(如Java/Node.js应用)到私网子网的GCE/GKE,配置环境变量指向数据层地址。
    • 配置内部负载均衡,让Web层可通过内部IP访问应用层集群。
  4. Web层部署:
    • 部署前端服务(如Nginx/React应用)到公网子网的GCE/GKE,配置HTTP(S)负载均衡指向Web层实例。
    • 配置防火墙规则允许外网访问Web层的80/443端口。
  5. 安全与运维:
    • 配置IAM角色,限制各层资源的访问权限;启用VPC流日志监控网络流量。
    • 接入Cloud Monitoring/Logging,监控应用性能和日志。

2. GCP中实现类似AWS公网/私网子网+IGW/NAT网关的配置

GCP对应AWS组件的映射关系:

  • AWS Public Subnet → GCP 公网子网(VM可分配外部IP,直接访问外网)
  • AWS Private Subnet → GCP 私网子网(VM无外部IP,仅通过NAT访问外网)
  • AWS IGW → GCP 互联网网关(VPC默认集成,给VM分配外部IP后即可使用)
  • AWS NAT Gateway → GCP 云NAT(为私网子网提供外网访问能力)

针对你提到的「bastion在公网子网、backend在私网子网」的场景,具体配置步骤如下:

1. 创建自定义VPC

gcloud compute networks create my-vpc --subnet-mode=custom --mtu=1460

2. 创建公网子网(用于bastion)

该子网允许VM自动分配外部IP,直接访问外网:

gcloud compute networks subnets create public-subnet \
  --network=my-vpc \
  --region=us-central1 \
  --range=10.0.1.0/24 \
  --enable-private-ip-google-access

3. 创建私网子网(用于backend)

该子网默认不分配外部IP,仅通过后续配置的云NAT访问外网:

gcloud compute networks subnets create private-subnet \
  --network=my-vpc \
  --region=us-central1 \
  --range=10.0.2.0/24 \
  --enable-private-ip-google-access

4. 配置云NAT(让私网VM访问外网)

创建云路由器并配置NAT规则:

# 创建云路由器
gcloud compute routers create nat-router \
  --network=my-vpc \
  --region=us-central1

# 配置NAT规则,覆盖私网子网
gcloud compute routers nats create nat-config \
  --router=nat-router \
  --region=us-central1 \
  --auto-allocate-nat-external-ips \
  --nat-all-subnet-ip-ranges

5. 创建Bastion VM(公网子网)

gcloud compute instances create bastion-vm \
  --zone=us-central1-a \
  --subnet=public-subnet \
  --machine-type=e2-micro \
  --tags=bastion

配置防火墙规则允许外网SSH访问bastion:

gcloud compute firewall-rules create allow-ssh-bastion \
  --network=my-vpc \
  --allow=tcp:22 \
  --source-ranges=0.0.0.0/0 \
  --target-tags=bastion

6. 创建Backend VM(私网子网)

不分配外部IP,仅允许从bastion访问:

gcloud compute instances create backend-vm \
  --zone=us-central1-a \
  --subnet=private-subnet \
  --machine-type=e2-micro \
  --no-address \
  --tags=backend

配置防火墙规则允许bastion SSH访问backend:

gcloud compute firewall-rules create allow-ssh-from-bastion \
  --network=my-vpc \
  --allow=tcp:22 \
  --source-tags=bastion \
  --target-tags=backend

验证配置

  • 从本地SSH连接bastion VM:gcloud compute ssh bastion-vm --zone=us-central1-a
  • 在bastion内SSH连接backend VM:ssh backend-vm(VPC内部可直接通过主机名访问)
  • 在backend VM内执行curl google.com,验证通过云NAT正常访问外网

内容的提问来源于stack exchange,提问作者raushan sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 03:08:19