双栈子网使您的 App Engine 资源可以通过直接 VPC 出站流量将 IPv4 和 IPv6 流量发送到 VPC 网络。 您可以将现有的仅 IPv4(单栈)子网更改为双栈子网。
子网类型
VPC 网络支持以下 Compute Engine 子网类型:
双栈限制
在更改现有 App Engine 资源上的栈类型之前,请考虑以下限制:
双栈支持仅适用于自定义模式 VPC 网络中的子网。如需为双栈子网提供内部访问权限类型,必须启用 VPC 网络内部 IPv6 范围。设置 VPC 网络或将其转换为自定义模式。
与仅 IPv4 子网相比,双栈子网可能会出现冷启动延迟时间增加,从而限制应用的扩容速度。
准备工作
确保 App Engine 服务代理具有 Compute Public IP Admin 角色 (roles/compute.publicIpAdmin),才能使用具有外部 IPv6 的子网。
设置双栈子网
双栈子网同时具有 IPv4 和 IPv6 地址范围。
如需设置双栈子网,您可以使用 Google Cloud 控制台或 Google Cloud CLI:
控制台
前往 Google Cloud 控制台并启用 Compute Engine API:
导航到 VPC 网络 页面:
如果您要创建新的自定义模式网络,请点击 创建 VPC 网络 。 如果您使用的是现有 VPC 网络,请点击该 VPC 网络的名称以显示其 VPC 网络详情页面。
如果您要创建新网络或转换现有网络,请输入名称,并确保子网创建模式设置为自定义,然后选择为此 VPC 网络配置 ULA 内部 IPv6 范围。
在子网标签页上,点击添加子网。在显示的面板中:
- 提供名称。
- 选择区域。
- 对于 IP 栈类型,请选择 IPv4 和 IPv6(双栈)。
- 输入 IPv4 范围。这是子网的主要 IPv4 地址范围。
选择 IPv6 访问权限类型 。
如果内部 选项不可用但您需要使用该选项,请检查是否为网络分配了内部 IPv6 范围。
点击 Add (添加)。
gcloud
如需创建支持双栈子网的自定义模式网络,请运行
gcloud compute networks create命令:如需在此网络的任何子网上配置内部 IPv6 范围,请使用
--enable-ula-internal-ipv6标志。此选项会在 Google Cloud 用于内部 IPv6 子网范围的fd20::/20范围内分配/48ULA 前缀。gcloud compute networks create NETWORK \ --subnet-mode=custom \ --enable-ula-internal-ipv6
将 NETWORK 替换为包含新子网的 VPC 网络的名称。
如需转换为自定义模式网络或更新自定义模式网络以支持双栈子网,请运行以下命令:
gcloud compute networks update NETWORK \ --switch-to-custom-subnet-mode \ --enable-ula-internal-ipv6
将 NETWORK 替换为包含新子网的 VPC 网络的名称。
如需创建具有 IPv6 范围的双栈子网,请使用双栈设置运行
subnets create命令:gcloud compute networks subnets create SUBNET \ --network=NETWORK \ --range=PRIMARY_IPv4_RANGE \ --stack-type=IPV4_IPV6 \ --ipv6-access-type=IPV6_ACCESS_TYPE \ --region=REGION
替换以下内容:
- SUBNET:新子网的名称。
- NETWORK:将包含新子网的 VPC 网络的名称。
- PRIMARY_IPv4_RANGE:新子网的主要 IPv4 范围(采用 CIDR 表示法)。如需了解详情,请参阅 IPv4 子网范围。
- IPV6_ACCESS_TYPE:新子网的 IPv6 访问权限类型
internal或external。 - REGION:将在其中创建新 子网的 Google Cloud 区域。
将双栈子网添加到 App Engine 资源
创建双栈子网后,请将 App Engine 服务配置为使用该子网:
在
app.yaml文件中,在vpc_access字段中指定网络和子网:vpc_access: network_interface: network: NETWORK subnet: SUBNET vpc_egress: EGRESS_SETTING
替换以下内容:
NETWORK:您在上一步中创建的网络的名称。
SUBNET:您在上一步中创建的子网的名称。
可选:EGRESS_SETTING:控制如何路由出站流量。此字段支持以下配置设置:
all-traffic:所有出站请求都通过 VPC 网络路由。private-ranges-only(默认):只有发送到内部 IP 地址的流量通过 VPC 网络路由。互联网流量使用默认的 App Engine 路径。
运行以下命令以部署到 App Engine:
gcloud beta app deploy
将子网从单栈更改为双栈
如需将 IPv6 子网范围添加到自定义模式 VPC 网络中的现有仅限 IPv4 子网,请参阅将子网的栈类型更改为双栈。 然后,在双栈子网上部署 App Engine 服务。
将子网从双栈更改为单栈
如需将资源的双栈子网更改为单栈子网,请参阅 将双栈子网更改为仅限 IPv4 子网。 然后,在双栈子网上部署 App Engine 服务。
验证网络和子网
如需检查您的资源是否在 VPC 网络上,请运行以下命令:
gcloud beta app versions describe VERSION --service=SERVICE
替换以下内容:
- VERSION:已部署的服务版本
- SERVICE:已部署的服务
以下示例输出显示了您的网络和子网:
vpcAccess:
networkInterfaces:
- network: projects/YOUR_PROJECT/global/networks/YOUR_NETWORK
subnet: projects/YOUR_PROJECT/regions/YOUR_REGION/subnetworks/YOUR_SUBNET
vpcEgress: ALL_TRAFFIC/PRIVATE_RANGES_ONLY