设置区域 NEG

配置网络端点组并添加端点

本文档包含有关配置区域网络端点组 (NEG) 的说明。在配置区域 NEG 之前,请先阅读网络端点组概览

创建区域网络端点组

控制台

如需创建地区网络端点组,请执行以下操作:

  1. 转到 Google Cloud Console 中的“网络端点组”页面。
    转到“网络端点组”页面
  2. 点击创建网络端点组
  3. 对于网络端点组类型,选择网络端点类型:区域
  4. 输入网络端点组的名称
  5. 选择 VPC 网络位置
  6. 选择 VPC 网络
  7. 选择子网
  8. 选择地区
  9. 选择网络端点类型
  10. 输入网络端点默认端口
  11. 点击创建

gcloud

如需创建地区网络端点组,请执行以下操作:

gcloud compute network-endpoint-groups create NEG_NAME \
    --zone=ZONE \
    --network=NETWORK
    [--subnet=SUBNET]
    [--default-port=DEFAULT_PORT]

此命令中的标志定义如下:

  • NEG_NAME 是新的网络端点组的名称。该名称在地区内必须是唯一的。
  • ZONE 是在其中创建 NEG 的区域的名称。
  • NETWORK 是在其中创建 NEG 的网络的名称。如果省略,Google Cloud 将使用名为 default 的网络。
  • SUBNET 是网络端点所属子网的名称。如果该网络是自动模式网络,则可以选择性地使用此标志。如果省略,则 NEG 位于所选区域地区的自动创建子网中。如果网络是自定义模式网络,或者如果您需要指定手动创建的子网,则此标志为必需。
  • DEFAULT_PORT 是与 NEG 关联的默认端口。此标志不是必需的。如果省略,则必须使用“IP 地址:端口”的格式指定所有端点。如果包含,则端点规范中可省略 port 部分,并假设使用默认端口。

例如:

gcloud compute network-endpoint-groups create my-lb-neg \
    --network=my-network \
    --subnet=my-subnet \
    --default-port=80  \
    --zone=asia-southeast1-a

将端点添加到网络端点组

控制台

如需向网络端点组添加端点,请运行以下命令:

  1. 转到 Google Cloud Console 中的“网络端点组”页面。
    转到“网络端点组”页面
  2. 点击要向其添加端点的网络端点组的名称。您会看到网络端点组详情页面。
  3. 此组中的网络端点部分,点击添加网络端点。您会看到添加网络端点页面。
  4. 选择一个虚拟机实例,以将其内部 IP 地址作为网络端点添加,然后点击添加。您会看到虚拟机的网络接口、地区和子网。
  5. 输入新网络端点的 IP 地址或范围
  6. 选择端口类型
    1. 如果您选择默认,端点会使用网络端点组中所有端点的默认端口。
    2. 如果您选择自定义,请输入要为端点使用的端口号
  7. 如需添加更多端点,请点击添加网络端点,并重复上面的步骤 5 和步骤 6。
  8. 添加好所需的全部端点后,请点击添加

gcloud

如需向网络端点组添加端点,请运行以下命令:

gcloud compute network-endpoint-groups update NEG_NAME \
    [--zone=ZONE] \
    --add-endpoint 'instance=INSTANCE_NAME,[ip=IP_ADDRESS],[port=PORT]' \
    [--add-endpoint ...]

在上述命令中:

  • NEG_NAME 是 NEG 的名称。
  • ZONE 是 NEG 所在的区域的名称。
  • INSTANCE_NAME 是 IP 地址所属虚拟机的名称。
  • IP_ADDRESS 是要添加的网络端点的 IP 地址。
  • PORT 是要添加的网络端点的端口。如果在 NEG 中指定了默认端口,则此端口并非必需。

例如:

gcloud compute network-endpoint-groups update my-lb-neg \
    --zone=asia-southeast1-a
    --add-endpoint 'instance=my-vm1,ip=10.1.1.1,port=80' \

将区域 NEG 添加到后端服务

控制台

如需将网络端点组添加到后端服务,请执行以下操作:

  1. 转到 Google Cloud Console 中的“负载平衡”页面。
    转到“负载平衡”页面
  2. 点击要修改其后端服务的负载平衡器的名称。
  3. 负载平衡器详情页面上,点击修改
  4. 修改负载平衡器页面上,点击后端配置
  5. 后端配置页面上,点击修改
  6. 点击添加后端
  7. 选择地区网络端点组,然后点击完成
  8. 点击更新

gcloud

如需将一个 NEG 添加到后端服务,请运行以下命令:

gcloud compute backend-services add-backend BACKEND_SERVICE \
    [--network-endpoint-group=NETWORK_ENDPOINT_GROUP] \
    [--network-endpoint-group-zone=ZONE]

例如:

gcloud compute backend-services add-backend my-lb \
   --network-endpoint-group my-lb-neg \
   --network-endpoint-group-zone=asia-southeast1-a \
   --global \
   --balancing-mode=RATE \
   --max-rate-per-endpoint=5

从后端服务中移除 NEG

控制台

  1. 转到 Google Cloud Console 中的“负载平衡”页面。
    转到“负载平衡”页面
  2. 点击要修改其后端服务的负载平衡器的名称。
  3. 负载平衡器详情页面上,点击修改
  4. 修改负载平衡器页面上,点击后端配置
  5. 后端配置页面上,点击要从其中移除 NEG 的后端服务对应的修改
  6. 后端部分,找到要移除的 NEG,然后点击该 NEG 对应的垃圾桶图标。
  7. 点击更新

gcloud

如需从后端服务中移除 NEG,请运行以下命令:

gcloud compute backend-services remove-backend BACKEND_SERVICE \
    --network-endpoint-group=NETWORK_ENDPOINT_GROUP \
    --network-endpoint-group-zone=NETWORK_ENDPOINT_GROUP_ZONE

例如:

gcloud compute backend-services remove-backend my-lb \
    --network-endpoint-group=my-lb-neg \
    --network-endpoint-group-zone=asia-southeast1-a

从网络端点组中移除端点

从负载平衡 NEG 中移除网络端点时,会根据后端服务中指定的排空参数触发连接排空。如果多个后端服务引用相同的 NEG,则系统会应用所有后端服务之间的最大排空间隔时间。

控制台

如需从网络端点组移除端点,请运行以下命令:

  1. 转到 Google Cloud Console 中的“网络端点组”页面。
    转到“网络端点组”页面
  2. 点击要从中删除端点的网络端点组的名称。您会看到网络端点组详情页面。
  3. 选择要删除的网络端点,然后点击移除端点

gcloud

如需从网络端点组移除端点,请运行以下命令:

gcloud compute network-endpoint-groups update NEG_NAME \
[--zone=ZONE] \
--remove-endpoint 'instance=INSTANCE_NAME,[ip=IP],[port=PORT]' \
--remove-endpoint ...

例如:

gcloud compute network-endpoint-groups update my-lb-neg \
     --remove-endpoint 'instance=my-vm1,ip=10.1.1.1,port=80' \
     --zone=asia-southeast1-a

列出网络端点组

控制台

如需查看网络端点组的列表,请转到 Google Cloud Console 中的“网络端点组”页面。
转到“网络端点组”页面

gcloud

如需列出网络端点组,请运行以下命令:

gcloud compute network-endpoint-groups list

描述特定的网络端点组

控制台

如需获取特定网络端点组的详情,请运行以下命令:

  1. 转到 Google Cloud Console 中的“网络端点组”页面。
    转到“网络端点组”页面
  2. 点击要查看其详情的网络端点组的名称。

gcloud

如需获取特定网络端点组的详情,请运行以下命令:

gcloud compute network-endpoint-groups describe NEG_NAME \
    [--zone=ZONE]

在上述命令中:

  • NEG_NAME 是网络端点组的名称。
  • ZONE 是创建 NEG 的区域的名称(可选)。

例如,以下 gcloud 命令会列出有关网络端点组 my-lb-neg 的信息。

gcloud compute network-endpoint-groups describe my-lb-neg \
    --zone=asia-southeast1-a

此命令的输出如下:

    creationTimestamp: '2018-04-09T14:51:34.381-07:00'
    id: '5260475207627726473'
    kind: compute#networkEndpointGroup
    loadBalancer:
      defaultPort: 80
      network: https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/networks/default
      zone: https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/asia-southeast1-a

移除网络端点组

如果网络端点组已连接到后端服务,则您无法将其删除。在删除 NEG 之前,请确保该 NEG 已与后端服务分离。

如果删除虚拟机,相应虚拟机上的所有网络端点都会立即从 NEG 中移除,系统会关闭所有连接。在删除后端服务之后再删除 NEG 时,也会在不执行连接排空的情况下移除该 NEG 中的所有端点。

控制台

如需从后端服务中移除网络端点组,请运行以下命令:

  1. 转到 Google Cloud Console 中的“负载平衡”页面。
    转到“负载平衡”页面
  2. 点击要修改其后端服务的负载平衡器的名称。
  3. 负载平衡器详情页面上,点击修改
  4. 修改负载平衡器页面上,点击后端配置
  5. 后端配置页面上,点击要从其中移除 NEG 的后端服务对应的修改
  6. 后端部分,找到要移除的 NEG,然后点击该 NEG 对应的垃圾桶图标。
  7. 点击更新

如需删除网络端点组,请运行以下命令:

  1. 转到 Google Cloud Console 中的“网络端点组”页面。
    转到“网络端点组”页面
  2. 找到您要删除的网络端点组。
  3. 点击该行中的垃圾桶图标。

gcloud

如需从后端服务中移除网络端点组,请运行以下命令:

gcloud compute backend-services remove-backend BACKEND_SERVICE \
    [--network-endpoint-group=NETWORK_ENDPOINT_GROUP] \
    [--network-endpoint-group-zone=ZONE]

如需删除网络端点组,请运行以下命令:

gcloud compute network-endpoint-groups delete NEG_NAME \
    --zone=ZONE

例如:

gcloud compute backend-services remove-backend my-neg-backend \
    --network-endpoint-group=my-lb-neg \
    --network-endpoint-group-zone=southeast1-a
gcloud compute network-endpoint-groups delete my-lb-neg \
    --zone=asia-southeast1-a

列出网络端点组中的端点

控制台

如需查看网络端点组中的端点列表,请执行以下操作:

  1. 转到 Google Cloud Console 中的“网络端点组”页面。
    转到“网络端点组”页面
  2. 点击要从中删除端点的网络端点组的名称。您会看到网络端点组详情页面,其中列出了该端点组中的端点。
  3. 如需过滤端点,请在此组中的网络端点下的文本字段中创建键值对。

gcloud

如需列出网络端点组中的所有网络端点,请运行以下命令:

gcloud compute network-endpoint-groups list-network-endpoints NEG_NAME \
    [--zone=ZONE]

在列出网络端点组中的端点时进行自定义过滤

自定义过滤是一项 Beta 版功能。

您可以使用自定义过滤条件来限制列出网络端点组中的哪些端点。仅对 REST API 启用自定义过滤。您无法通过 Cloud Console 或 gcloud 命令行界面使用自定义过滤。

如需了解详情,请参阅 networkEndpointGroups.listNetworkEndpoints 方法的文档。

检查网络端点的运行状况

要为具有区域 NEG 后端的后端服务执行运行状况检查,该检查的端口指定方式必须为以下两种之一:

  • 固定(编号)端口 (--port)
  • 配置为使用网络端点的服务端口 (--use-serving-port)

以下示例创建了一个运行状况检查,它通过 --use-serving-port 标志使用网络端点的服务端口。请注意,--use-serving-port 标志是通过 gcloud compute health-checks create 实现的(而非通过 gcloud compute health-checks update 实现)。

区域 NEG 后端不能使用旧版运行状况检查。如需了解详情,请参阅运行状况检查相关概念

负载平衡区域 NEG 示例

以下示例创建负载平衡区域 NEG,将三个网络端点关联到 NEG 并列出端点。假设您已经有 3 个虚拟机拥有在这些端口上运行的服务。

  1. 创建子网、别名 IP 地址和两个虚拟机。

    gcloud compute networks subnets create subnet-a \
        --network network-a \
        --range 10.128.0.0/16 \
        --secondary-range container-range=192.168.0.0/16
    
    gcloud compute instances create vm1 --zone asia-southeast1-a \
        --network-interface \
        "subnet=subnet-a,aliases=r1:192.168.0.0/24;secondaryrange1:192.168.1.0/24"
    
    gcloud compute instances create vm2 --zone asia-southeast1-a \
        --network-interface \
        "subnet=subnet-a,aliases=r1:192.168.2.0/24"
    
  2. 创建 NEG。请注意,您可以有多个位于同一个地区的 NEG。

    gcloud compute network-endpoint-groups create neg1 \
         --zone=asia-southeast1-a \
         --network=network-a --subnet=subnet-a \
         --default-port=80
    
        Created [https://www.googleapis.com/compute/v1/projects/project/zones/asia-southeast1-a/networkEndpointGroups/my-lb-neg].
        NAME       LOCATION       TYPE            ENDPOINT_TYPE   DEFAULT_PORT ENDPOINTS
        neg1  asia-southeast1-a  LOAD_BALANCING  80           0
    
  3. 将端点添加到 NEG。

    gcloud compute network-endpoint-groups update neg1 \
       --zone=asia-southeast1-a
       --add-endpoint 'instance=vm1,ip=192.168.0.1' \
       --add-endpoint 'instance=vm1,ip=192.168.0.1,port=8080' \
       --add-endpoint 'instance=vm1,ip=192.168.1.2,port=8088' \
       --add-endpoint 'instance=vm1,ip=192.168.1.2,port=8080' \
       --add-endpoint 'instance=vm2,ip=192.168.2.1,port=8088' \
       --add-endpoint 'instance=vm2,ip=192.168.2.2,port=8080'
    
  4. 创建运行状况检查。

    gcloud compute health-checks create http healthcheck1 --use-serving-port
    
  5. 创建后端服务。

    gcloud compute backend-services create backendservice1 \
        --global \
        --health-checks healthcheck1 \
        --global-health-checks
    
  6. 将后端添加到后端服务。

    gcloud compute backend-services add-backend backendservice1 --global \
       --network-endpoint-group=neg1 \
       --network-endpoint-group-zone=asia-southeast1-a \
       --balancing-mode=RATE --max-rate-per-endpoint=5
    
  7. 创建网址映射。

    gcloud compute url-maps create urlmap1 --default-service backendservice1
    
  8. 创建目标代理。

    gcloud compute target-http-proxies create httpproxy1 --url-map urlmap1
    
  9. 创建转发规则。

    gcloud compute forwarding-rules create forwardingrule1 \
        --ip-protocol TCP --ports=80 --global --target-http-proxy httpproxy1
    
  10. 创建防火墙规则。

    gcloud compute firewall-rules create allow-load-balancer \
        --network network-a \
        --source-ranges 130.211.0.0/22,35.191.0.0/16 \
        --target-tags lb \
        --allow tcp