设置网络层级

本页面介绍如何为您的工作负载指定网络层级。在手动设置网络层级之前,请先查看 Network Service Tiers 概览,了解相关信息。

规格

只有符合条件的 Google Cloud 资源才支持 Network Service Tiers。标准层级仅在部分地区提供。高级层级可在所有 Google Cloud 地区提供。

外部 IP 地址池

要确定从哪个外部 IP 地址池中选择外部 IP 地址,您需要了解该地址是地区地址还是全球地址(以及如果是地区地址,该地址使用的网络层级)。一个地址池中的 IP 地址不能迁移到另一个地址池中。

在标准层级中,地区外部 IP 地址池专属于其各自的地区,而不是合格资源的类型。例如,使用标准层级的虚拟机 (VM) 实例和 Google Cloud 负载均衡器(外部应用负载均衡器、外部代理网络负载均衡器和外部直通式网络负载均衡器)全都使用所选区域的标准层级池中的 IP 地址。

在高级层级中,外部应用负载均衡器和外部代理网络负载均衡器使用全球外部 IP 地址,而外部直通式网络负载均衡器和虚拟机实例使用区域级外部 IP 地址。在每个地区中,高级层级的地区外部 IP 地址池不同于全球外部 IP 地址池。

未分配的 IP 地址

标准层级中未使用的地区外部 IP 地址的行为方式与高级层级中未使用的 IP 地址不同。

对于标准层级的 IP 地址,如果尚未分配给合格资源,则该地址会自动转为“托管”状态。IP 地址被托管后,负载均衡器会回复针对该 IP 地址发送的特定请求;例如,发送到托管标准层级 IP 地址的 HTTP 请求将发送到 Google 托管的 HTTP 404 (Not Found) 网页。处于托管状态的标准层级 IP 地址不会简单地丢弃其传入流量。此外,对于系统正在为其分配资源的标准层级 IP 地址,其行为也如同被托管一样。

对于已分配给虚拟机实例的标准层级外部 IP 地址,如果实时迁移时间超过 20 分钟,则该地址可能会在此期间转变为托管状态。而对于已分配给虚拟机的高级层级外部 IP 地址,如果实时迁移时间很长,则该地址会丢弃流量。

设置项目的默认网络层级

请按照以下说明来为项目定义默认的网络层级。此层级由项目中符合条件的新创建资源使用,除非您为资源本身指定了层级。更改项目的默认网络层级不会更改任何现有资源的层级,但如果您在创建网络时未指定网络层级,则它会更改任何新资源的网络层级新资源。

控制台

  1. 在 Google Cloud 控制台中,转到 Network Service Tiers 页面。

    转到 Network Service Tiers 页面

  2. 点击更改层级

  3. 选择优质标准,然后点击更改

gcloud

gcloud compute project-info update \
    --default-network-tier NETWORK_TIER

NETWORK_TIER 替换为 PREMIUMSTANDARD。 默认值为 PREMIUM

API

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/setNetworkTier
{
  "networkTier": "STANDARD"
}

PROJECT_ID 替换为您的项目 ID。

Terraform

您可以使用 Terraform 资源为项目设置网络层级。此示例将层级设置为 STANDARD

resource "google_compute_project_default_network_tier" "project-tier" {
  project      = var.project_id # Replace this with your project ID in quotes
  network_tier = "STANDARD"
}

您为资源指定的网络层级始终优先于您为项目定义的默认网络层级。例如,如果项目的默认网络层级为高级层级,您仍可以在标准层级创建实例或负载均衡器。

层级配置级别。
层级配置级别(点击可放大)。

创建静态外部 IP 地址

创建静态地区外部 IP 地址时,您可以为该地址指定 PREMIUMSTANDARD 网络层级。如果您未指定网络层级,则地址将使用项目默认层级创建。

如需预留使用标准层级的静态地区外部 IP 地址,请执行以下操作。

控制台

  1. 在 Google Cloud 控制台中,转到外部 IP 地址页面。

    转到“外部 IP 地址”页面

  2. 点击保留静态地址

  3. 类型下,选择地区,然后选择支持标准层级的地区

  4. 网络服务层级下方,选择标准

  5. 根据需要填写其他字段

  6. 点击预留

gcloud

gcloud compute addresses create my-standard-tier-ip-address \
     --region REGION \
     --network-tier STANDARD

REGION 替换为您要创建地区 IP 地址的地区。

如需了解其他命令行标志,请参阅 gcloud compute 地址

API

  POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses
{
  "name": "my-standard-tier-ip-address",
  "networkTier": "STANDARD"
}

替换以下内容:

  • PROJECT_ID:您的项目 ID
  • REGION:您要创建转发规则的地区

Terraform

您可以使用 Terraform 资源为区域外部 IP 地址设置网络层级。此示例将层级设置为 STANDARD

resource "google_compute_address" "ip-address" {
  project      = var.project_id # Replace this with your project ID in quotes
  name         = "my-standard-tier-ip-address"
  region       = "us-central1"
  network_tier = "STANDARD"
}

创建转发规则

创建新的转发规则时,您可以指定网络层级;可能的值包括 PREMIUM(默认)和 STANDARD。如果您未指定网络层级,则系统会使用项目默认层级创建转发规则:

  • 如果您使用 --address 标志指定外部 IP 地址,则该 IP 地址必须位于您为转发规则指定的层级中。
  • 如果您创建了转发规则,但未指定 --address 标志,则 Google Cloud 会分配相应层级的临时 IP 地址。

标准层级仅适用于地区转发规则。全球转发规则始终使用高级层级。

负载均衡器既可以使用高级层级,也可以使用标准层级,只需分别为每个层级使用一个转发规则即可。如果一个应用需要高级层级可以提供的低延时,而另一个应用(可能提供静态内容)面对较高延时也能应付自如并且可以使用标准层级,那么该模式非常有用。

控制台

如需在 Google Cloud 控制台中创建标准层级转发规则,您必须创建或更新现有负载均衡器。在多个地区中具有后端服务的负载均衡器不能使用标准层级。如需了解如何选择和创建负载均衡器,请参阅负载均衡文档。

  1. 在 Google Cloud 控制台中,转到负载均衡页面。

    转到“负载均衡”页面

  2. 点击现有负载均衡器的名称,然后点击修改

  3. 点击前端配置

  4. 点击添加前端 IP 和端口

  5. 网络服务层级下方,点击标准

  6. 根据需要填写其他字段。

  7. 点击完成,然后再点击更新

gcloud

gcloud compute forwarding-rules create my-standard-tier-regional-rule \
     --load-balancing-scheme=SCHEME \
     --network-tier STANDARD \
     --address my-standard-tier-ip-address \
     --region REGION \
     --ports PORTS \
     [--target-http-proxy=TARGET_HTTP_PROXY \
     | --target-https-proxy=TARGET_HTTPS_PROXY \
     | --target-ssl-proxy=TARGET_SSL_PROXY \
     | --target-tcp-proxy=TARGET_TCP_PROXY \
     | --target-pool=TARGET_POOL \
     | --target-instance=TARGET_INSTANCE]

替换以下内容:

  • SCHEME:负载均衡器的负载均衡方案
  • REGION:您要创建转发规则的地区
  • TARGET_HTTP_PROXYTARGET_HTTPS_PROXYTARGET_SSL_PROXYTARGET_TCP_PROXYTARGET_POOLTARGET_INSTANCE:规则的相应目标,具体取决于您指定的目标标志

如需了解其他命令行标志,请参阅 gcloud compute 转发规则

API

  POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/forwardingRules
{
  "name": "my-standard-tier-regional-rule",
  "networkTier": "STANDARD",
    "IPAddress": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses/my-standard-tier-ip-address",
  "IPProtocol": "tcp",
    "target": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/targetPools/TARGET_POOL"
}

替换以下内容:

  • PROJECT_ID:您的项目 ID
  • REGION:您要创建转发规则的地区
  • TARGET_HTTP_PROXYTARGET_HTTPS_PROXYTARGET_SSL_PROXYTARGET_TCP_PROXYTARGET_POOLTARGET_INSTANCE:规则的相应目标,具体取决于您指定的目标标志

Terraform

您可以使用 Terraform 资源为转发规则设置网络层级。此示例将指向目标实例的转发规则的层级设置为 STANDARD

resource "google_compute_forwarding_rule" "target-fr" {
  project      = var.project_id # Replace this with your project ID in quotes
  name         = "target-instance-forwarding-rule"
  region       = "us-east4"
  target       = google_compute_target_instance.target.id
  port_range   = "80"
  network_tier = "STANDARD"
}

虚拟机实例

创建虚拟机实例

创建直接连接到互联网的实例时,您可以指定网络层级。可能的值包括 PREMIUM(默认)和 STANDARD。如果您未指定网络层级,则地址将使用项目默认层级创建。只有当实例通过区域 IPv4 地址直接与互联网通信时,网络层级才相关。对于负载均衡器发送的响应流量,转发规则的网络层级适用。

如果使用预留 IP 地址分配静态外部 IP 地址,则 IP 地址的网络层级必须与实例的网络层级一致。如果分配临时外部 IP 地址,那么实例的网络层级会用于分配对应的池中的 IP 地址。

控制台

  1. 在 Google Cloud 控制台中,转到虚拟机实例页面。

    转到“虚拟机实例”页面

  2. 点击创建实例

  3. 点击管理、安全、磁盘、网络、单独租用

  4. 点击网络标签页。

  5. 网络接口下方的默认网络接口上,点击修改

  6. 网络服务层级下方,选择标准

  7. 根据需要填写其他字段

  8. 点击创建

gcloud

gcloud compute instances create my-standard-tier-instance \
    --network-tier STANDARD

如需了解其他命令行标志,请参阅 gcloud compute 实例

API

  POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
{
  "name": "my-standard-tier-instance",
  "networkInterfaces":[
   {
    "network": "global/networks/default",
    "name": "nic0",
    "accessConfigs": [
     {
     "name": "External NAT",
     "type":"ONE_TO_ONE_NAT",
     "networkTier":"STANDARD"
     }
    ]
   }
  ],
    "IPAddress": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses/my-standard-tier-ip-address",
  ... other parameters
}

替换以下内容:

  • PROJECT_ID:您的项目 ID
  • ZONE:您要创建实例的区域
  • REGION:资源的地区

    如需查看其他必需参数和可选参数的列表,请参阅 REST 资源:instances

Terraform

您可以使用 Terraform 资源为 Compute Engine 虚拟机设置网络层级。此示例将层级设置为 STANDARD

resource "google_compute_address" "ip-address" {
  project      = var.project_id # Replace this with your project ID in quotes
  name         = "my-standard-tier-ip-address"
  region       = "us-central1"
  network_tier = "STANDARD"
}

向实例中添加访问配置

为实例创建访问配置(也就是说,为实例的网络接口分配临时或静态区域外部 IPv4 地址)时,您可以为实例的网络接口指定网络层级实例。无论您是指定现有的区域外部 IPv4 地址还是创建新地址,地址和实例的网络接口都必须使用匹配的 Network Service Tiers。可能的值包括 PREMIUMSTANDARD。如果您没有指定网络层级,也未指定 IP 地址,则实例的网络接口和新的临时区域外部 IPv4 地址都将使用项目默认层级。如果您未指定网络层级,但指定了 IP 地址,则当 IP 地址的网络层级与项目默认层级不匹配时,Google Cloud 会返回错误。

gcloud

gcloud compute instances add-access-config INSTANCE_NAME \
    --network-interface INTERFACE_NAME; default="nic0" \
    --access-config-name=ACCESS_CONFIG_NAME; default="external-nat" \
    --address=IP_ADDRESS \
    --network-tier PREMIUM | STANDARD

替换以下内容:

  • INSTANCE_NAME:实例的名称
  • INTERFACE_NAME:接口的名称;默认为 nic0(实例上默认接口的名称)
  • ACCESS_CONFIG_NAME:接口的访问配置的名称
  • IP_ADDRESS:IP 地址资源的网址(如果要指定 IP 地址)

API

  POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/addAccessConfig?networkInterface=nic0
{
  "name": INSTANCE_NAME,
  "networkTier": "STANDARD",
  ... other parameters
}

替换以下内容:

  • PROJECT_ID:您的项目 ID
  • ZONE:实例的区域
  • INSTANCE_NAME:实例的名称

如需查看其他必需参数和可选参数的列表,请参阅 REST 资源:instances

更新实例的网络层级

您可以使用 update-access-config 命令更改实例的网络接口的网络层级。网络层级的可能值是 PREMIUMSTANDARD。如果现有访问配置中已经为实例分配了区域外部 IPv4 地址,您必须先移除该外部 IP 地址,然后才能更改接口的网络层级。如需详细了解区域级外部 IPv4 地址的网络层级如何与实例网络接口的网络层级匹配,请参阅向实例添加访问配置

控制台

  1. 在 Google Cloud 控制台中,转到虚拟机实例页面。

    转到“虚拟机实例”页面

  2. 点击一个实例的名称。

  3. 点击修改

  4. 网络接口下方的默认网络接口上,点击修改

  5. 网络服务层级下方,选择标准

  6. 点击保存

gcloud

gcloud compute instances update-access-config INSTANCE_NAME \
    --network-interface nic0 \
    --network-tier STANDARD

INSTANCE_NAME 替换为实例名称。

API

  POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/updateAccessConfig?networkInterface=nic0
{
  "networkTier": "STANDARD",
  ... other parameters
}

替换以下内容:

  • PROJECT_ID:您的项目 ID
  • ZONE:实例的区域
  • INSTANCE_NAME:实例的名称

创建使用标准层级的实例模板

在创建实例模板期间配置网络层级时,请执行以下操作。

控制台

  1. 在 Google Cloud 控制台中,转到实例模板页面。

    转到“实例模板”页面

  2. 点击创建实例模板

  3. 点击管理、安全、磁盘、网络、单独租用

  4. 点击网络标签页。

  5. 网络服务层级下方,选择标准

  6. 根据需要填写其他字段

  7. 点击创建

gcloud

gcloud compute instance-templates create my-standard-tier-instance-template \
    --network-tier STANDARD

如需了解其他命令行标志,请参阅 gcloud compute 实例模板

API

  POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceTemplates
{
  "name": "my-standard-tier-instance-template",
  "networkInterfaces[].accessConfigs[].networkTier": "STANDARD",
  ... other parameters
}

替换以下内容:

  • PROJECT_ID:您的项目 ID
  • ZONE:实例模板的区域

如需查看其他必需参数和可选参数的列表,请参阅 REST 资源:instanceTemplates

Terraform

您可以使用 Terraform 资源为 Compute Engine 实例模板设置网络层级。此示例将层级设置为 STANDARD

resource "google_compute_instance_template" "template" {
  project      = var.project_id # Replace this with your project ID in quotes
  name         = "template"
  machine_type = "e2-medium"
  disk {
    source_image = "debian-cloud/debian-10"
    boot         = true
  }
  network_interface {
    network = "default"
    access_config {
      network_tier = "STANDARD"
    }
  }
}

使用特定网络层级的 IP 地址设置 NAT

创建 Cloud NAT 网关时,Google Cloud 允许您分配标准层级和高级层级的 IP 地址。

如需了解详情,请参阅使用特定网络层级的 IP 地址设置 NAT