啟用連線排除功能

連線排除是一項程序,可確保執行個體群組中的虛擬機器 (VM) 執行個體遭到移除時,系統有充足的時間能夠完成處理中的現有要求。如果在區域範圍內,網路端點群組 (NEG) 中的端點遭到移除,連線排除程序也會啟動。

本頁資訊僅適用於執行個體群組,以及下列區域性 NEG 類型:

如要啟用連線排除功能,請在後端服務中設定「連線排除逾時」。逾時時間長度必須介於 0 至 3600 秒之間。

VM 遭到移除之後,系統盡可能會在指定的逾時時間長度內完成傳送至該 VM 或端點的現有要求。負載平衡器不會將新連線傳送至已移除的 VM 或端點。逾時時間長度屆滿後,負載平衡器就會停止將所有流量傳送至已移除的 VM 或端點。

當您執行下列操作時,連線就會開始耗盡:

您指定的逾時時間長度屆滿之後,執行個體最多可能需要 60 秒才能終止。

如果您為共用相同執行個體群組或 NEG 的不同後端服務啟用連線排除功能,系統會採用最大的逾時值。舉例來說,假設同一個執行個體群組或區域 NEG 是兩個後端服務的後端,其中一個後端服務的連線排除逾時時間為 100 秒,另一個後端服務的連線排除逾時時間為 200 秒。 Google Cloud 會使用 200 秒做為有效的連線排除逾時時間,因此現有連線可存在 200 秒,之後再由 Google Cloud 終止。如果後端是代管執行個體群組,刪除執行個體的作業會延遲至少 200 秒。

以下是連線耗盡功能的規格清單:

  • 連線排除功能適用於隸屬於下列負載平衡器的後端服務:

    內部直通式網路負載平衡器和外部直通式網路負載平衡器都支援 TCP、UDP 和其他非 TCP 通訊協定的連線耗盡。

  • 連線排除功能也適用於Cloud Service Mesh 部署作業的後端服務。

  • 設定連線排除逾時時間後,如果從執行個體群組移除執行個體,或是從區域 NEG 移除端點,Google Cloud 負載平衡器和 Cloud Service Mesh 的行為如下:

    • 系統不會將任何新連線傳送至已移除的執行個體或端點。

    • 支援與移除的執行個體或端點建立現有連線的有效工作階段,可持續存在,直到設定的連線排除逾時時間到期為止。逾時期限結束後, Google Cloud 會結束已移除的執行個體或端點上的現有連線。

  • 如果您未設定連線排除逾時值,或是將連線排除逾時值設為零 (0), Google Cloud 會盡快結束已移除的執行個體或端點上的現有連線。

  • 如果您使用連線共用功能,可能會發現在正在排空的 VM 上,仍會收到使用先前建立連線的新要求,導致這些 VM 最終遭到刪除時發生連線錯誤。

如要啟用連線耗盡功能,請完成下列步驟。

主控台

更新負載平衡器

  1. 前往 Google Cloud 控制台的「負載平衡」頁面。
    前往「負載平衡」
  2. 按一下所需負載平衡器的「Edit」,或是建立新的負載平衡器。
  3. 按一下「後端設定」
  4. 按一下後端服務底部的 [Advanced configurations] (進階設定)
  5. 在「Connection draining timeout」(連線排除逾時) 欄位中,輸入介於 03600 之間的值。如果設定值為 0,系統會停用連線排除功能。

更新 Cloud Service Mesh

  1. 前往 Google Cloud 控制台的「Cloud Service Mesh」頁面。
    前往 Cloud Service Mesh
  2. 按一下服務的「名稱」
  3. 按一下服務底部的「Advanced configurations」
  4. 在「Connection draining timeout」(連線排除逾時) 欄位中,輸入介於 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。

後續步驟

如需後端服務的一般性資訊,請參閱後端服務總覽