本指南會說明如何將現有的外部直通式網路負載平衡器從目標集區後端遷移至區域性後端服務。
改用區域後端服務後,您就能使用非舊版健康狀態檢查 (適用於 TCP、SSL、HTTP、HTTPS 和 HTTP/2)、代管執行個體群組、連線排除和容錯移轉政策等功能。
如要直接在 Google Cloud 控制台按照逐步指南操作,請按一下「Guide me」(逐步引導):
本指南將逐步說明如何將下列以目標集區為基礎的外部直通式網路負載平衡器範例遷移至區域性後端服務。
後端服務型外部直通式網路負載平衡器部署作業的結果如下所示。
這個範例假設您有傳統的目標集區型外部直通式網路負載平衡器,其中區域 us-central-1a 有兩個執行個體,區域 us-central-1c 有兩個執行個體。
這類轉換作業所需的高階步驟如下:
- 將目標集區的執行個體分組為執行個體群組。 - 後端服務僅適用於代管或非代管的執行個體群組。雖然單一目標集區可放置的執行個體數量沒有限制,但執行個體群組有最大群組大小限制。如果目標集區的執行個體數量超過這個上限,您就需要將其後端分割到多個執行個體群組。 - 如果現有部署作業包含備份目標集區,請為這些執行個體建立個別的執行個體群組。這個執行個體群組已設為容錯移轉群組。 
- 建立區域後端服務。 - 如果部署作業包含備用目標集區,您需要在建立後端服務時指定容錯移轉率。這應與先前為目標集區部署作業所設定的容錯移轉率相符。 
- 將先前建立的執行個體群組新增至後端服務。 - 如果部署作業包含備用目標集區,請在將對應的備援執行個體群組新增至後端服務時,加上 - --failover標記。
- 設定指向新後端服務的轉送規則。 - 你可以選擇下列任一選項: - 更新現有的轉送規則,指向後端服務 (建議)。 
- 建立新的轉送規則,指向後端服務。您必須為負載平衡器的前端建立新的 IP 位址。接著,您可以修改 DNS 設定,從舊的目標集區負載平衡器 IP 位址,順利轉換至新的 IP 位址。 
 
事前準備
安裝 Google Cloud CLI。如需工具的完整總覽,請參閱 gcloud 工具指南。您可以在 gcloud compute 指令群組中找到與負載平衡相關的指令。
如果您之前沒有執行過 Google Cloud CLI,請先執行 gcloud init 進行驗證。
本指南假設您已熟悉 bash。
找出要遷移的後端和轉送規則
- 如要列出所有目標集區,請在 Cloud Shell 中執行下列指令: - gcloud compute target-pools list - 記下要遷移的目標集區名稱。這個名稱稍後會稱為 TARGET_POOL_NAME。 
- 如要列出目標集區 TARGET_POOL_NAME 中的所有 VM 執行個體,請在 Cloud Shell 中執行指令: - gcloud compute target-pools describe TARGET_POOL_NAME \ --region=us-central1 - 記下 VM 執行個體的名稱。這些名稱稍後稱為 BACKEND_INSTANCE1、BACKEND_INSTANCE2、BACKEND_INSTANCE3 和 BACKEND_INSTANCE4。 
- 如要列出外部直通式網路負載平衡器的轉送規則,請在 Cloud Shell 中執行下列指令: - gcloud compute forwarding-rules list --filter="target: ( TARGET_POOL_NAME )" - 記下轉送規則名稱這個名稱稍後會稱為 FORWARDING_RULE。 
建立區域性非代管執行個體群組
為您有後端的每個區域建立區域非代管執行個體群組。視您的設定而定,您可以視需要將執行個體分散到多個執行個體群組。在本例中,我們只使用兩個執行個體群組 (每個區域一個),並將所有後端 VM 放置在相關聯執行個體群組中特定區域。
在本例中,我們建立了兩個執行個體群組:一個位於 uc-central1-a 區域,另一個位於 us-central1-c 區域。
設定執行個體群組
主控台
- 在 Google Cloud 控制台中,前往「Instance groups」(執行個體群組) 頁面。
- 點選「建立執行個體群組」。
- 在左側窗格中,選取「New unmanaged instance group」(新增非代管的執行個體群組)。
- 在「Name」(名稱) 中輸入 ig-us-1。
- 在「Region」(區域) 中選取 us-central1。
- 在「Zone」(可用區) 中選取 us-central1-a。
- 根據執行個體位置,選取「Network」(網路) 和「Subnetwork」(子網路)。在此範例中,現有的目標集區執行個體位於 default網路和子網路。
- 如要將執行個體新增至執行個體群組,請在「VM instances」(VM 執行個體) 區段中,選取 BACKEND_INSTANCE1 和 BACKEND_INSTANCE2 這兩個執行個體。
- 按一下 [建立]。
- 重複執行這些步驟,建立第二個執行個體群組,並加入下列規格: - Name (名稱):ig-us-2
- Region (區域):us-central1
- Zone (可用區):us-central1-c
 - 將 - us-central1-c區域中的兩個執行個體 BACKEND_INSTANCE3 和 BACKEND_INSTANCE4 新增至這個執行個體群組。
- Name (名稱):
- 如果現有的負載平衡器部署也包含備份目標集區,請重複執行這些步驟,為這些執行個體建立個別的備援執行個體群組。 
gcloud
- 使用 - gcloud compute instance-groups unmanaged create指令,在- us-central1-a區域中建立非代管執行個體群組。- gcloud compute instance-groups unmanaged create ig-us-1 \ --zone us-central1-a
- 在 - us-central1-c區域中建立第二個非代管執行個體群組。- gcloud compute instance-groups unmanaged create ig-us-2 \ --zone us-central1-c
- 將執行個體新增至 - ig-us-1執行個體群組。- gcloud compute instance-groups unmanaged add-instances ig-us-1 \ --instances BACKEND_INSTANCE_1,BACKEND_INSTANCE_2 \ --zone us-central1-a
- 將執行個體新增至 - ig-us-2執行個體群組。- gcloud compute instance-groups unmanaged add-instances ig-us-2 \ --instances BACKEND_INSTANCE_3,BACKEND_INSTANCE_4 \ --zone us-central1-c
- 如果現有的負載平衡器部署也包含備份目標集區,請重複執行這些步驟,為這些執行個體建立個別的備援執行個體群組。 
建立健康狀態檢查
建立健康狀態檢查,判斷執行個體群組中的執行個體健康狀態。您現有的目標集區型外部直通式網路負載平衡器可能會連結舊版 HTTP 健康狀態檢查。
您可以建立新的健康狀態檢查,與負載平衡器將要分配的流量通訊協定相符。以後端服務為基礎的外部直通網路負載平衡器可使用 TCP、SSL、HTTP(S) 和 HTTP/2 健康檢查。
主控台
- 在 Google Cloud 控制台中,前往「Health checks」頁面。
- 按一下「建立健康狀態檢查」。
- 在「Name」(名稱) 欄位中輸入 network-lb-health-check。
- 將「範圍」設為「Regional」(區域)。
- 在「Region」(區域) 中選取 us-central1。
- 針對「Protocol」(通訊協定),選取 [HTTP]。
- 在「Port」(通訊埠) 欄中,輸入 80。
- 按一下 [建立]。
gcloud
- 在本範例中,我們會建立非舊版 HTTP 健康狀態檢查,以便與後端服務搭配使用。 - gcloud compute health-checks create http network-lb-health-check \ --region us-central1 \ --port 80 
設定後端服務
請使用其中一個下列部分建立後端服務。如果現有的外部直通式網路負載平衡器含有備用目標集區,您需要在建立後端服務時設定容錯比率。
將後端新增至後端服務時,您也需要使用 --failover 標記指定容錯移轉執行個體群組。
沒有備用目標集區的部署作業
gcloud
- 在 - us-central1地區建立區域後端服務。- gcloud compute backend-services create network-lb-backend-service \ --region us-central1 \ --health-checks network-lb-health-check \ --health-checks-region us-central1 \ --protocol TCP 
- 將兩個執行個體群組 ( - ig-us-1和- ig-us-2) 新增至後端服務,做為後端。- gcloud compute backend-services add-backend network-lb-backend-service \ --instance-group ig-us-1 \ --instance-group-zone us-central1-a \ --region us-central1 - gcloud compute backend-services add-backend network-lb-backend-service \ --instance-group ig-us-2 \ --instance-group-zone us-central1-c \ --region us-central1 
含備用目標集區的部署
gcloud
- 在 - us-central1區域中建立區域後端服務。設定後端服務容錯率,以符合先前為目標資源池設定的容錯率。- gcloud compute backend-services create network-lb-backend-service \ --region us-central1 \ --health-check network-lb-health-check \ --failover-ratio 0.5 
- 將兩個執行個體群組 ( - ig-us-1和- ig-us-2) 新增至後端服務,做為後端。- gcloud compute backend-services add-backend network-lb-backend-service \ --instance-group ig-us-1 \ --instance-group-zone us-central1-a \ --region us-central1 - gcloud compute backend-services add-backend network-lb-backend-service \ --instance-group ig-us-2 \ --instance-group-zone us-central1-c \ --region us-central1 
- 如果您建立了容錯移轉執行個體群組,請將該群組新增至後端服務。將這個後端新增到後端服務時,請使用 - --failover標記。- gcloud compute backend-services add-backend network-lb-backend-service \ --instance-group FAILOVER_INSTANCE_GROUP \ --instance-group-zone ZONE \ --region us-central1 \ --failover 
設定轉送規則
您可以透過兩種方式設定轉送規則,將流量導向新的後端服務。您可以更新現有的轉送規則,也可以使用新的 IP 位址建立新的轉送規則。
更新現有的轉送規則 (建議做法)
使用 set-target 旗標更新現有的轉送規則,以便指向新的後端服務。
gcloud compute forwarding-rules set-target FORWARDING_RULE  \
    --backend-service network-lb-backend-service \
    --region us-central1
將 FORWARDING_RULE 替換為現有轉送規則的名稱。
建立新的轉寄規則
如果您不想更新現有的轉送規則,可以使用新的 IP 位址建立新的轉送規則。由於特定 IP 位址一次只能與單一轉送規則相關聯,因此您必須手動修改 DNS 設定,將傳入流量從舊 IP 位址轉移至新 IP 位址。
使用下列指令,建立新的轉送規則和新的 IP 位址。如果您想指定在 us-central1 區域中已保留的 IP 位址,可以使用 --address 旗標。
gcloud compute forwarding-rules create network-lb-forwarding-rule \
    --load-balancing-scheme external \
    --region us-central1 \
    --ports 80 \
    --backend-service network-lb-backend-service
測試負載平衡器
測試負載平衡器,確認轉送規則正在正確導向連入流量。
查詢負載平衡器的外部 IP 位址
gcloud
輸入下列指令,查看負載平衡器所用 network-lb-forwarding-rule 轉送規則的外部 IP 位址。
gcloud compute forwarding-rules describe network-lb-forwarding-rule
    --region us-central1
使用 nc 指令存取外部 IP 位址
在本例中,我們使用預設的雜湊方法處理工作階段相依性,因此 nc 指令的請求會根據作業系統指派的來源連接埠,隨機分派至後端 VM。
- 如要測試連線,請先執行下列指令,在 Linux 上安裝 Netcat: - $ sudo apt install netcat
- 重複執行下列指令幾次,直到所有後端 VM 都回應為止: - $ nc IP_ADDRESS 80
移除與舊負載平衡器相關聯的資源
確認新版外部直通式網路負載平衡器運作正常後,即可刪除舊的目標集區資源。
- 前往 Google Cloud 控制台的「Load balancing」(負載平衡) 頁面。
- 選取與目標集區相關聯的舊負載平衡器,然後按一下「Delete」(刪除)。
- 選取您建立的健康狀態檢查,然後按一下「Delete load balancer and the selected resources」(刪除負載平衡器和所選資源)。
後續步驟
- 如要瞭解外部直通式網路負載平衡器如何與後端服務搭配運作,請參閱「後端服務型外部直通式網路負載平衡器總覽」。
- 如要設定具有後端服務的外部直通式網路負載平衡器,請參閱「設定具有後端服務的外部直通式網路負載平衡器」。
- 如要使用目標集區設定外部直通式網路負載平衡器,請參閱「使用目標集區設定外部直通式網路負載平衡器」。