设置区域 NEG

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

使用可用区级 NEG 实现负载平衡

具有 GCE_VM_IP 端点的可用区级 NEG

这些可用作内部 TCP/UDP 负载平衡器中后端服务的后端。

GCE_VM_IP 可用区级 NEG 的主要用例是 GKE 子集,可简化内部 TCP/UDP 负载平衡器的虚拟机管理。如需了解详情,请参阅可用区级 NEG 概览:负载平衡

如需查看端到端示例,请参阅使用地区 NEG 后端设置内部 TCP/UDP 负载平衡器

具有 GCE_VM_IP_PORT 端点的可用区级 NEG

它们可用作以下类型的负载平衡器的后端服务的后端:

  • 外部 HTTP(S) 负载平衡器
  • 内部 HTTP(S) 负载平衡器
  • SSL 代理负载平衡器
  • TCP 代理负载平衡器

有关 GCE_VM_IP_PORT 可用区级 NEG 的主要用例是容器原生负载平衡,这样您可以在虚拟机上的容器中运行的微服务之间分配流量。利用容器原生负载平衡,负载平衡器能够直接定位 Pod,并在 Pod 级层(而不是虚拟机级层)做出负载分配决策。

您可以通过两种方法配置容器原生负载平衡:使用由 GKE Ingress 管理的 NEG,或使用独立 NEG。

如需查看相关说明,请参阅以下内容:

配置可用区级网络端点组 (NEG) 并添加端点

本页面的其余部分介绍了如何在创建负载平衡器之前或之后配置可用区级 NEG。请注意,其中一些操作不适用于由 Ingress 创建和管理的可用区级 NEG。

创建可用区级网络端点组

控制台

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

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

gcloud

创建 GCE_VM_IP_PORT 可用区级 NEG

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 部分,并且系统会假设使用默认端口。

例如,如需创建 GCE_VM_IP_PORT 可用区级 NEG,请运行以下命令:

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

创建 GCE_VM_IP 可用区级 NEG

如需创建 GCE_VM_IP 可用区级网络端点组,您必须按如下所示指定 network-endpoint-typegcloud compute network-endpoint-groups create

gcloud compute network-endpoint-groups create NEG_NAME \
    --network-endpoint-type=gce-vm-ip \
    --zone=ZONE \
    --network=NETWORK
    --subnet=SUBNET

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

  • NEG_NAME 是新的网络端点组的名称。该名称在可用区内必须是唯一的。
  • ZONE 是在其中创建 NEG 的可用区的名称。
  • NETWORK 是在其中创建 NEG 的网络的名称。
  • SUBNET 是网络端点所属子网的名称。

将端点添加到网络端点组

控制台

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

  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 中指定了默认端口,则此端口并非必需。 具有 GCE_VM_IP 端点的可用区级 NEG 不支持此字段。

例如,如需向 GCE_VM_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]

例如,如需将 GCE_VM_IP_PORT 可用区级 NEG 添加到后端服务,请运行以下命令:

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 ...

例如,如需从 GCE_VM_IP_PORT 可用区级 NEG 中移除端点,请运行以下命令:

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 方法的文档。

检查网络端点的运行状况

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

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

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

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