启用连接排空

连接排空过程旨在确保在从实例组中移除虚拟机或从中移除范围为可用区的网络端点组 (NEG) 时,为进行中的现有请求留出一定的时间,让这些请求可以完成在范围内。

本页面中的信息仅适用于实例组和范围为可用区的以下类型的 NEG:

如需启用连接排空功能,请为后端服务设置连接排空超时时间。超时持续时间必须介于 0 到 3600 秒之间(含边界值)。

在指定的超时持续时间内,系统会为对已移除虚拟机或端点发出的现有请求留出一定的时间,让这些请求可以完成。负载均衡器不会向已移除的虚拟机发送新 TCP 连接。达到超时时长之后,与该虚拟机的所有其余 TCP 连接都会关闭。

每当您执行以下操作时,连接排空过程即会开始:

在指定的超时持续时间过后,系统可能需要长达 60 秒的时间才会终止实例。

如果在多项共享相同实例组或 NEG 的后端服务中启用连接排空功能,系统会使用最大超时值。例如,假设两项后端服务使用同一实例组或可用区 NEG 作为后端,其中一项后端服务的连接排空超时时间为 100 秒,另一项后端服务的连接排空超时时间为 200 秒。Google Cloud 会使用 200 秒作为有效连接排空超时时间,这样现有连接就可以在被 Google Cloud 终止之前保留 200 秒。如果后端是托管实例组,则删除实例的操作至少延迟 200 秒。

以下是有关连接排空的规范列表:

如需启用连接排空,请完成以下步骤。

控制台

更新负载均衡器

  1. 转到 Google Cloud 控制台中的“负载均衡”页面。
    转到“负载均衡”
  2. 点击您的负载均衡器对应的修改 按钮,或者创建新的负载均衡器。
  3. 点击后端配置
  4. 点击后端服务底部的高级配置
  5. 连接排空超时时间字段中,输入一个介于 03600 之间的值。将此值设为 0 表示停用连接排空。

更新 Cloud Service Mesh

  1. 前往 Google Cloud 控制台中的 Cloud Service Mesh 页面。
    前往 Cloud Service Mesh
  2. 点击您的服务的名称
  3. 点击服务底部的高级配置
  4. 连接排空超时时间字段中,输入一个介于 03600 之间的值。将此值设为 0 表示停用连接排空。
  5. 点击保存

gcloud

您可以使用 --connection-draining-timeout 标志,为新的或现有的后端服务启用连接排空。以下示例演示了如何更改连接排空超时时间:

  • 对于现有全球或跨区域负载均衡器

    gcloud compute backend-services update BACKEND_SERVICE \
        --global \
        --connection-draining-timeout=CONNECTION_TIMEOUT_SECS
    
  • 对于现有区域级负载均衡器:请运行以下命令:

    gcloud compute backend-services update BACKEND_SERVICE \
        --region=REGION \
        --connection-draining-timeout=CONNECTION_TIMEOUT_SECS
    

请将占位符替换为有效值:

  • BACKEND_SERVICE:要更新的后端服务。
  • REGION:要更新的后端服务的区域(如果适用)
  • CONNECTION_TIMEOUT_SECS:与实例或端点的现有连接终止前等待的秒数,介于 03600 秒之间(含边界值)。将此值设为 0 表示停用连接排空。 连接排空超时时间设置适用于后端服务的所有后端。

    您还可以使用 gcloud compute backend-services edit 命令更新现有后端服务。

API

如需在创建或更新实例或端点时在 API 中启用连接排空,请向相应的 API URI 发出请求,以在请求正文中添加 connectionDraining 字段。以下示例演示了如何通过修改现有后端服务来设置该属性。如需了解其他必需属性,请参阅每个负载均衡器对应的文档。

对于现有全球或跨区域负载均衡器

PATCH https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices

对于现有区域级负载均衡器:请运行以下命令:

PATCH https://www.googleapis.com/compute/v1/projects/PROJECT_ID/region/REGION/backendServices

{
   "name": "BACKEND_SERVICE",
   "connectionDraining": {
     "drainingTimeoutSec": CONNECTION_TIMEOUT_SECS
   }
}

其中:

  • PROJECT_ID 是包含负载均衡器或 Cloud Service Mesh 部署的项目的 ID。
  • BACKEND_SERVICE 是负载均衡器或 Cloud Service Mesh 部署使用的后端服务。
  • CONNECTION_TIMEOUT_SECS 是实例或端点从实例组或 NEG 移除前等待的秒数,介于 0 到 3600 秒之间(含边界值)。此超时持续时间适用于后端服务引用的所有实例组或 NEG。

后续步骤

如需了解后端服务的一般信息,请参阅后端服务概览