使用转发规则

转发规则及其对应的 IP 地址构成 Google Cloud 负载平衡器的前端配置。如需大致了解转发规则,请参阅转发规则概念

准备工作

在添加转发规则前,请为您的转发规则预留一个 IP 地址。这不是必要条件,但属于最佳做法。

对于内部负载平衡器,请预留一个静态内部 IP 地址

对于外部负载平衡器,请预留一个静态外部 IP 地址

权限

若要遵照本指南操作,您应具备必要的权限。

如需了解详情,请参阅以下指南:

添加转发规则

控制台

创建负载平衡器的转发规则

  1. 转到 Google Cloud Console 中的“负载平衡”页面。
    转到“负载平衡”页面
  2. 点击创建负载平衡器
  3. 选择负载平衡器类型,包括流量类型以及负载平衡器是面向互联网还是仅面向内部。
  4. 点击继续
  5. 点击前端配置。在新建前端 IP 和端口部分,进行以下更改:

    1. 名称FORWARDING_RULE_NAME
    2. 子网SUBNET_OF_YOUR_RESERVED_IP_ADDRESS
    3. 来自内部 IP 还是来自 IP 地址,请在预留的 IP 地址中选择。

      您可以选择在此时在这个界面中预留 IP 地址,也可以使用临时 IP 地址。

    4. 选择协议、端口号和 IP 版本。

      只有部分负载平衡器类型支持 IPv6。

    5. 请先确认前端配置旁边是否有蓝色对勾标记,然后再继续操作。如果没有,请检查此步骤。

  6. 点击检查并最终确认。仔细检查您的设置。

  7. 点击创建

gcloud

为后端服务创建转发规则。创建转发规则时,请在子网中指定您预留的 IP 地址。

gcloud compute forwarding-rules create FORWARDING_RULE_NAME \
    --global | --region=REGION \
    --load-balancing-scheme=SCHEME \
    --network=NETWORK_NAME \
    --subnet=SUBNET_NAME \
    --address=RESERVED_IP_ADDRESS \
    --ip-protocol=PROTOCOL_TYPE \
    --ports=PORT_NUMBER \
    --backend-service=NAME_OF_BACKEND_SERVICE \
    --backend-service-region=REGION_OF_BACKEND_SERVICE

API

对于地区负载平衡器,通过向 forwardingRules.insert 方法发出 POST 请求来创建地区转发规则。

POST https://compute.googleapis.com/compute/v1/projects/[project ID]/regions/us-west1/forwardingRules
{
  "name": "[forwarding rule name]",
  "IPAddress": "[reserved IP address]",
  "IPProtocol": "[protocol type]",
  "ports": [
    "[port number]"
  ],
  "loadBalancingScheme": "[scheme]",
  "subnetwork": "https://www.googleapis.com/compute/v1/projects/[project ID]/regions/[region]/subnetworks/[subnet name]",
  "network": "https://www.googleapis.com/compute/v1/projects/[project ID]/global/networks/[network name]",
  "backendService": "https://www.googleapis.com/compute/v1/projects/[project ID]/regions/[region]/backendServices/[backend service name]",
  "networkTier": "PREMIUM | STANDARD"
}
</code></pre>

对于全局负载平衡器,通过创建对 globalForwardingRules.insert 方法的 POST 请求来创建全局转发规则。

POST https://compute.googleapis.com/compute/v1/projects/[project ID]/global/forwardingRules
{
  "name": "[forwarding rule name]",
  "IPAddress": "[reserved IP address]",
  "IPProtocol": "[protocol type]",
  "ports": [
    "[port number]"
  ],
  "loadBalancingScheme": "[scheme]",
  "subnetwork": "https://www.googleapis.com/compute/v1/projects/[project ID]/regions/[region]/subnetworks/[subnet name]
  "network": "https://www.googleapis.com/compute/v1/projects/[project ID]/global/networks/[network name]",
  "backendService": "https://www.googleapis.com/compute/v1/projects/[project ID]/regions/[region]/backendServices/[backend service name]
  "networkTier": "PREMIUM | STANDARD"
}

删除转发规则

由于以下某种原因,您可能希望删除转发规则:

  • 将其替换为新转发规则
  • 在限定的一段时间内停止负载平衡器,但不想完全删除负载平衡器。

以下是您可能需要停止负载平衡器而不删除它的两种原因:

  • 暂停对资源负载平衡器收费
  • 暂停传入到后端的请求

如果转发规则指向预留的 IP 地址(建议做法),您可以通过删除转发规则来停止负载平衡器。这会停止将流量发往转发规则目标。

如需删除全局转发规则,请运行以下命令:

gcloud compute forwarding-rules delete FORWARDING_RULE_NAME \
    --global

如需删除地区转发规则,请运行以下命令:

gcloud compute forwarding-rules delete FORWARDING_RULE_NAME \
    --region=REGION

如需重启负载平衡器,请按照添加转发规则中的说明重新创建转发规则,并且使用与之前相同的 IP 地址。

使用 Service Directory 配置转发规则

您可以使用 Service Directory 注册内部负载平衡器转发规则。

配置内部 TCP/UDP 负载平衡器或内部 HTTP(S) 负载平衡器时,您可以将其注册为您选择的现有 Service Directory 命名空间和服务的端点。然后,客户端应用可以通过 HTTP、gRPC 和/或 DNS(如果您已创建 Service Directory DNS 地区)使用 Service Directory 来解析内部负载平衡器服务的地址并直接连接到该服务。

注册内部 TCP/UDP 负载平衡器

如要注册内部 TCP/UDP 负载平衡器,请执行以下操作:

gcloud

运行 gcloud compute forwarding-rules create 命令并设置 service-directory-registrations 标志:

gcloud beta compute forwarding-rules create FORWARDING_RULE_NAME \
    --region=REGION \
    --load-balancing-scheme=INTERNAL \
    --network=NETWORK_NAME \
    --subnet=SUBNET_NAME \
    --address=RESERVED_IP_ADDRESS \
    --ip-protocol=PROTOCOL_TYPE \
    --ports=PORT_NUMBER \
    --backend-service=BACKEND_SERVICE_NAME \
    --backend-service-region=REGION
    --service-directory-registrations namespace=SD_NAMESPACE_NAME, \
                        service=SD_SERVICE_NAME

请替换以下内容:

  • FORWARDING_RULE_NAME:要创建的转发规则的名称
  • REGION:要在其中创建转发规则的区域
  • NETWORK_NAME:此转发规则适用的网络。
  • SUBNET_NAME:此转发规则适用的子网
  • RESERVED_IP_ADDRESS:转发规则传送的 IP 地址
  • PROTOCOL_TYPE:规则将处理的 IP 协议
  • PORT_NUMBER:以英文逗号分隔的端口列表
  • BACKEND_SERVICE_NAME:接收流量的目标后端服务
  • SD_NAMESPACE_NAME:要在其中注册内部 TCP/UDP 负载平衡器的 Service Directory 命名空间的名称。此命名空间的 Google Cloud 项目和区域会从此转发规则中提取。
  • SD_SERVICE_NAME:要为其注册端点的 Service Directory 服务的名称。它必须位于 Service Directory 命名空间名称中。

注册内部 HTTP(S) 负载平衡器

如要注册内部 HTTP(S) 负载平衡器,请执行以下操作:

gcloud

运行 gcloud compute forwarding-rules create 命令并设置 service-directory-registrations 标志:

gcloud beta compute forwarding-rules create FORWARDING_RULE_NAME \
    --region=REGION \
    --load-balancing-scheme=INTERNAL_MANAGED \
    --network=NETWORK_NAME \
    --address=RESERVED_IP_ADDRESS \
    --target-https-proxy=PROXY_NAME \
    --target-https-proxy-region=PROXY_REGION \
    --ports=PORT_NUMBER \
    --service-directory-registrations namespace=SD_NAMESPACE_NAME, \
                        service=SD_SERVICE_NAME

请替换以下内容:

  • FORWARDING_RULE_NAME:要创建的转发规则的名称
  • REGION:要在其中创建转发规则的区域
  • NETWORK_NAME:此转发规则适用的网络。
  • RESERVED_IP_ADDRESS:转发规则传送的 IP 地址
  • PROXY_NAME:接收流量的目标代理
  • PROXY_REGION:要执行代理的代理区域
  • PORT_NUMBER:以英文逗号分隔的端口列表
  • SD_NAMESPACE_NAME:要在其中注册内部 HTTP(S) 负载平衡器的 Service Directory 命名空间的名称。此命名空间的 Google Cloud 项目和区域会从此转发规则中提取。
  • SD_SERVICE_NAME:要为其注册端点的 Service Directory 服务的名称。它必须位于 Service Directory 命名空间名称中。

如需详细了解如何使用 Service Directory 配置内部负载平衡器,请参阅在 Service Directory 中配置内部负载平衡器

后续步骤