連線排除是一項程序,可確保執行個體群組中的虛擬機器 (VM) 執行個體遭到移除時,或區域範圍內的網路端點群組 (NEG) 移除端點時,系統有充足的時間能夠完成處理中的現有要求。
本頁面的資訊僅適用於執行個體群組,以及下列範圍為區域的 NEG 類型:
如要啟用連線排除功能,請在後端服務中設定「連線排除逾時」。逾時時間長度必須介於 0 至 3, 600 秒之間 (含首尾)。
VM 或端點遭到移除之後,系統盡可能會在指定的逾時時間長度內完成傳送至該 VM 或端點的現有要求。負載平衡器不會將新連線傳送至已移除的 VM 或端點。逾時時間長度屆滿之後,負載平衡器就會停止將所有流量傳送至已移除的 VM 或端點。
只要執行下列操作,連線排除就會開始:
- 您手動從執行個體群組中移除 VM。
- 如要從代管執行個體群組中移除執行個體,請執行
resize()
、deleteInstances()
、recreateInstances()
或abandonInstances()
呼叫。 - 從屬於執行個體群組後端的 VM 移除動態 NIC。
- 您從後端服務中移除執行個體群組或 NEG。內部直通式網路負載平衡器和外部直通式網路負載平衡器不支援這項功能。
- Google Cloud 透過自動調度資源功能刪除執行個體。
- 您使用 Managed Instance Group Updater 更新代管的執行個體群組。
- 您手動從區域 NEG 移除端點。
您指定的逾時時間長度屆滿之後,執行個體最多可能需要 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 最終遭到刪除時發生連線錯誤。
如要啟用連線排空,請完成下列步驟。
主控台
更新負載平衡器
- 前往 Google Cloud 控制台的「Load balancing」(負載平衡) 頁面。
前往「Load balancing」(負載平衡) 頁面 - 在「Load Balancers」(負載平衡器) 分頁中,找到要更新的負載平衡器,然後依序點選 more_vert 和「Edit」(編輯) 。
- 按一下「後端設定」。
- 在「後端設定」窗格中,按一下 。
- 在「編輯後端服務」窗格底部,按一下「進階設定」。
- 在「Connection draining timeout」(連線排除逾時) 欄位中,輸入介於
0
至3600
之間的值。如果設定值為0
,系統會停用連線排除功能。
更新 Cloud Service Mesh
- 前往 Google Cloud 控制台的 Cloud Service Mesh 頁面。
前往 Cloud Service Mesh - 按一下服務的「名稱」。
- 在「服務詳細資料」頁面中,按一下「編輯」圖示 。
- 按一下服務底部的「Advanced configurations」(進階設定)。
- 在「Connection draining timeout」(連線排除逾時) 欄位中,輸入介於
0
至3600
之間的值。如果設定值為0
,系統會停用連線排除功能。 - 按一下 [儲存]。
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
:終止執行個體或端點的現有連線前等待的秒數,這個值必須介於0
至3600
之間 (含首尾)。如果設定值為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- :負載平衡器或 Cloud Service Mesh 部署作業使用的後端服務
BACKEND_SERVICE
CONNECTION_TIMEOUT_SECS
:從執行個體群組或 NEG 移除執行個體或端點前的等待秒數,這個值必須介於 0 至 3,600 之間 (含首尾)。這項逾時時間長度設定會套用至後端服務參照的所有執行個體群組或 NEG。
後續步驟
如需後端服務的一般性資訊,請參閱後端服務總覽。