本文說明如何將應用程式負載平衡器資源和後端從「僅限 IPv4」(單一堆疊) 轉換為「IPv4 和 IPv6」(雙重堆疊)。使用 IPv6 的主要優點是可分配的 IP 位址集區更大。您可以設定負載平衡器終止傳入的 IPv6 流量,並根據偏好設定,透過 IPv4 或 IPv6 連線將流量傳送到後端。詳情請參閱「應用程式負載平衡器和 Proxy 網路負載平衡器的 IPv6」。
本文中的「僅限 IPv4 (單一堆疊)」是指僅使用 IPv4 位址的資源,「IPv4 和 IPv6 (雙重堆疊)」是指同時使用 IPv4 和 IPv6 位址的資源。
事前準備
開始轉換程序前,請注意下列條件:
您必須使用下列其中一種應用程式負載平衡器:
- 全域外部應用程式負載平衡器
- 區域性外部應用程式負載平衡器
- 跨區域內部應用程式負載平衡器
- 區域性內部應用程式負載平衡器
傳統版應用程式負載平衡器不支援雙重堆疊後端或子網路。如要進一步瞭解 IPv6 支援,請參閱「應用程式負載平衡器和 Proxy 網路負載平衡器的 IPv6」。
負載平衡器必須具備 VM 執行個體群組後端,或具有
GCE_VM_IP_PORT端點的區域網路端點群組 (NEG) 後端。其他後端類型不支援雙堆疊。
此外,轉換程序會因負載平衡器類型而異。
如果是全域外部應用程式負載平衡器,請將後端轉換為雙重堆疊,並建立可處理傳入 IPv6 流量的 IPv6 轉送規則。
如果是跨區域內部應用程式負載平衡器、區域外部應用程式負載平衡器和區域內部應用程式負載平衡器,您只需要將後端轉換為雙堆疊。這些負載平衡器不支援 IPv6 轉送規則。
如要瞭解如何設定應用程式負載平衡器,請參閱下列說明文件:
- 設定全域外部應用程式負載平衡器:VM 執行個體群組後端、區域網路端點群組後端
- 設定區域外部應用程式負載平衡器:VM 執行個體群組後端、可用區 NEG 後端
- 設定跨區域內部應用程式負載平衡器:VM 執行個體群組後端、區域網路端點群組後端
- 設定區域性內部應用程式負載平衡器:VM 執行個體群組後端、可用區 NEG 後端
找出要轉換的資源
記下負載平衡器相關聯的資源名稱。您稍後需要提供這些名稱。
如要列出所有子網路,請使用
gcloud compute networks subnets list指令:gcloud compute networks subnets list
請記下要轉換為雙堆疊的子網路名稱 (僅含 IPv4 位址)。這個名稱稍後會稱為
SUBNET。這個虛擬私有雲網路稍後會稱為NETWORK。如要列出所有後端服務,請使用
gcloud compute backend-services list指令:gcloud compute backend-services list
記下要轉換為雙堆疊的後端服務名稱。這個名稱稍後會稱為
BACKEND_SERVICE。如要列出所有網址對應,請使用
gcloud compute url-maps list指令:gcloud compute url-maps list
記下與負載平衡器相關聯的網址對應名稱。這個名稱稍後會稱為
URL_MAP。如果您已有負載平衡器,如要查看後端的 IP 堆疊類型,請使用
gcloud compute instances list指令:gcloud compute instances list \ --format= \ "table( name, zone.basename(), networkInterfaces[].stackType.notnull().list(), networkInterfaces[].ipv6AccessConfigs[0].externalIpv6.notnull().list():label=EXTERNAL_IPV6, networkInterfaces[].ipv6Address.notnull().list():label=INTERNAL_IPV6)"如要列出所有 VM 執行個體和執行個體範本,請使用
gcloud compute instances list指令和gcloud compute instance-templates list指令:gcloud compute instances list
gcloud compute instance-templates list
記下要轉換為雙堆疊的執行個體和執行個體範本名稱。這個名稱稍後會稱為
VM_INSTANCE和INSTANCE_TEMPLATES。如要列出所有執行個體群組,請使用
gcloud compute instance-groups list指令:gcloud compute instance-groups list
記下要轉換為雙堆疊的網路端點群組名稱。這個名稱稍後會稱為
INSTANCE_GROUP。如要列出所有區域網路端點群組 (NEG),請使用
gcloud compute network-endpoint-groups list指令:gcloud compute network-endpoint-groups list
請記下要轉換為雙堆疊的區域 NEG 後端名稱。這個名稱稍後會稱為
ZONAL_NEG。如要列出所有目標 Proxy,請使用
gcloud compute target-http-proxies list指令:gcloud compute target-http-proxies list
記下與負載平衡器相關聯的目標 Proxy 名稱。這個名稱稍後會稱為
TARGET_PROXY。
從單一堆疊轉換為雙重堆疊後端
本節說明如何將僅使用 IPv4 (單一堆疊) 位址的負載平衡器資源和後端,轉換為使用 IPv4 和 IPv6 (雙重堆疊) 位址。
更新子網路
雙重堆疊子網路僅支援自訂模式的虛擬私有雲網路。自動模式虛擬私有雲網路或舊版網路不支援雙重堆疊子網路。雖然自動模式網路非常適合用於提早探索,但是大部分的實際工作環境更適合使用自訂模式虛擬私有雲。建議您使用自訂模式的 VPC。
如要將 VPC 更新為雙堆疊設定,請按照下列步驟操作:
如果您使用自動模式虛擬私有雲網路,請先將自動模式虛擬私有雲網路轉換為自訂模式。
如果您使用
default網路,必須將其轉換為自訂模式虛擬私有雲網路。如要啟用 IPv6,請參閱 將子網路的堆疊類型變更為雙重堆疊。
確認子網路的 IPv6 存取權類型已設為
External。選用:如要在這個網路的子網路上設定內部 IPv6 位址範圍,請完成下列步驟:
- 在「虛擬私有雲網路 ULA 內部 IPv6 範圍」部分,選取「已啟用」。
在「Allocate internal IPv6 range」(分配內部 IPv6 範圍) 部分,選取「Automatically」(自動) 或「Manually」(手動)。
如果選取「手動」,請在
fd20::/20範圍內輸入/48範圍。如果該範圍正在使用中,系統會提示您提供其他範圍。
更新僅限 Proxy 的子網路
如果您使用以 Envoy 為基礎的負載平衡器,建議將僅限 Proxy 的子網路堆疊類型變更為雙重堆疊。如要瞭解支援僅限 Proxy 子網路的負載平衡器,請參閱支援的負載平衡器。
您無法以更新一般子網路的方式 (使用 subnets update command),更新僅限 Proxy 子網路 (purpose=REGIONAL_MANAGED_PROXY) 的堆疊類型。您必須建立雙重堆疊類型的備用僅限 Proxy 子網路,然後將其升級為活動角色。這是因為每個地區和每個虛擬私有雲網路只能啟用一個僅限 Proxy 的子網路。
在虛擬私有雲網路上指派內部 IPv6 範圍後,請按照下列步驟將僅限 Proxy 的子網路堆疊類型變更為雙重堆疊。
控制台
在與活動的僅限 Proxy 子網路相同的區域中,建立備份的僅限 Proxy 子網路,並將 IP 堆疊類型指定為雙堆疊。
- 前往 Google Cloud 控制台的「VPC Networks」(虛擬私有雲網路) 頁面。
前往「VPC networks」(VPC 網路) 頁面 - 按一下要新增僅限 Proxy 子網路的虛擬私有雲網路名稱。
- 按一下 [新增子網路]。
- 輸入名稱。
- 請選取區域。
- 在「用途」部分,選取「區域受管理 Proxy」。
- 在「角色」部分,選取「備份」。
- 在「IP stack type」(IP 堆疊類型),選取「IPv4 and IPv6 (dual-stack)」(IPv4 和 IPv6 (雙重堆疊))。
- 輸入「IP address range」(IP 位址範圍)。
- 按一下「新增」。
- 前往 Google Cloud 控制台的「VPC Networks」(虛擬私有雲網路) 頁面。
建立或修改適用於後端 VM 或端點的防火牆允許輸入規則,以包括備份僅限 Proxy 子網路的主要 IP 位址範圍。
將備份的僅限 Proxy 子網路升級為活動角色。這項動作也會將先前活動的僅限 Proxy 子網路降級為備份角色:
- 前往 Google Cloud 控制台的「VPC Networks」(虛擬私有雲網路) 頁面。
前往「VPC networks」(VPC 網路) 頁面 - 按一下要修改的虛擬私有雲網路名稱。
- 在「為負載平衡預留的僅限 Proxy 子網路」下方,找出上一個步驟中建立的備份子網路。
- 點按「Activate」(啟用)。
- 指定選用的「排空逾時」。
- 按一下「啟用子網路」。
- 前往 Google Cloud 控制台的「VPC Networks」(虛擬私有雲網路) 頁面。
在排除連線逾時之後,或者您確認與後端 VM 或端點的連線都不是來自先前處於活動狀態 (現為備份) 的僅限 Proxy 子網路中的 Proxy 之後,可以執行以下操作:
- 修改適用於後端 VM 或端點的防火牆允許輸入規則,如此便不會包含先前活動 (現為備份) 的僅限 Proxy 子網路的主要 IP 位址範圍。
- 刪除先前活動 (現為備份) 的僅限 Proxy 子網路,以釋放該子網路用於其主要 IP 位址範圍的 IP 位址。
gcloud
下列步驟假設您已有現有的啟用中僅限 Proxy 子網路。
使用 gcloud compute networks subnets create 指令,在相同區域中建立備份的僅限 Proxy 子網路,並指定雙堆疊 (
--stack-type=IPV4_IPV6) 的堆疊類型。這個子網路會以--role=BACKUP旗標指派為備份。gcloud compute networks subnets create BACKUP_PROXY_ONLY_SUBNET_NAME \ --purpose=REGIONAL_MANAGED_PROXY \ --role=BACKUP \ --region=REGION \ --network=VPC_NETWORK_NAME \ --range=BACKUP_PROXY_ONLY_SUBNET_RANGE \ --stack-type=IPV4_IPV6
更改下列內容:
BACKUP_PROXY_ONLY_SUBNET_NAME:新建立的備份 Proxy 專用子網路名稱REGION:新建立的備份僅限 Proxy 子網路的區域。這個地區應與目前有效的僅限 Proxy 子網路位於同個地區。VPC_NETWORK_NAME:新建立的備份僅限 Proxy 子網路。這應與目前有效的 Proxy 專用子網路位於相同網路。BACKUP_PROXY_ONLY_SUBNET_RANGE:新建立的僅限 Proxy 子網路備份的 CIDR 範圍
建立或修改適用於後端 VM 或端點的防火牆允許輸入規則,以包括備份僅限 Proxy 子網路的主要 IP 位址範圍。防火牆規則應已接受來自有效子網路的連線。
gcloud compute firewall-rules update PROXY_ONLY_SUBNET_FIREWALL_RULE \ --source-ranges ACTIVE_PROXY_ONLY_SUBNET_RANGE,BACKUP_PROXY_ONLY_SUBNET_RANGE
更改下列內容:
PROXY_ONLY_SUBNET_FIREWALL_RULE:防火牆規則的名稱,允許流量從僅限 Proxy 的子網路傳送至後端執行個體或端點ACTIVE_PROXY_ONLY_SUBNET_RANGE:目前活動中僅限 Proxy 子網路的 CIDR 範圍BACKUP_PROXY_ONLY_SUBNET_RANGE:備份僅限 Proxy 子網路的 CIDR 範圍
更新新的子網路,將其設定為該區域中「活動的」僅限 Proxy 子網路,並等待系統排除舊的子網路。
ACTIVE這也會將先前活動的僅限 Proxy 子網路降級為備份角色。如要立即排除 IP 位址範圍,請將
--drain-timeout設定為0s。若 Proxy 在要排除的子網路裡有指派的位址,這會馬上停止所有連到這些 Proxy 的連線。gcloud compute networks subnets update BACKUP_PROXY_ONLY_SUBNET_NAME \ --region=REGION \ --role=ACTIVE \ --drain-timeout=CONNECTION_DRAINING_TIMEOUT
更改下列內容:
BACKUP_PROXY_ONLY_SUBNET_NAME:新建立的備份 Proxy 專用子網路名稱REGION:新建立的備份僅限 Proxy 子網路的區域。這個地區應與目前有效的僅限 Proxy 子網路位於同個地區。CONNECTION_DRAINING_TIMEOUT: Google Cloud 用來將現有連線從先前活動的僅限 Proxy 子網路中,移去 Proxy 的時間 (以秒為單位)。
使用
list或describe指令監控排除狀態。正在排除子網路時,其狀態為「DRAINING」。gcloud compute networks subnets list
等待排空除完成。當已排除舊的僅限 Proxy 子網路時,該子網路的狀態為「
READY」。更新僅限 Proxy 子網路的防火牆規則,僅允許來自新子網路的連線。
gcloud compute firewall-rules PROXY_ONLY_SUBNET_FIREWALL_RULE \ --source-ranges BACKUP_PROXY_ONLY_SUBNET_RANGE
確認與後端 VM 或端點的連線都不是來自先前處於活動狀態 (現為備份) 的僅限 Proxy 子網路中的 Proxy 之後,即可刪除舊子網路。
gcloud compute networks subnets delete ACTIVE_PROXY_ONLY_SUBNET_NAME \ --region=REGION
更新 VM 執行個體或範本
如果 VM 連線的子網路已設定 IPv6 範圍,您可以在 VM 執行個體上設定 IPv6 位址。只有下列後端可以支援 IPv6 位址:
- 執行個體群組後端:一或多個代管、非代管,或代管與非代管執行個體群組後端的組合。
- 區域性 NEG:一或多個
GCE_VM_IP_PORT類型的區域性 NEG。
更新 VM 執行個體
您無法編輯屬於代管或非代管執行個體群組的 VM 執行個體。如要將 VM 執行個體更新為雙堆疊,請按照下列步驟操作:
更新 VM 執行個體範本
您無法更新現有的執行個體範本。如需變更,可以建立具有類似屬性的其他範本。如要將 VM 執行個體範本更新為雙堆疊,請按照下列步驟操作:
控制台
前往 Google Cloud 控制台的「Instance templates」(執行個體範本) 頁面。
前往「Instance templates」(執行個體範本)
- 按一下要複製及更新的執行個體範本。
- 按一下「建立類似的報表」。
- 展開「Advanced options」(進階選項) 區段。
- 在「Network tags」(網路標記) 部分,輸入
allow-health-check-ipv6。 - 在「網路介面」部分中,按一下「新增網路介面」。
- 在「Network」(網路) 清單中,選取自訂模式虛擬私有雲網路。
- 在「Subnetwork」(子網路) 清單中選取「
SUBNET」。 - 在「IP stack type」(IP 堆疊類型),選取「IPv4 and IPv6 (dual-stack)」(IPv4 和 IPv6 (雙重堆疊))。
- 點選「建立」。
更新可用區 NEG
無法編輯區域 NEG 端點。您必須刪除 IPv4 端點,並建立新的雙堆疊端點,同時包含 IPv4 和 IPv6 位址。
如要在 REGION_A 區域中設定區域性 NEG (含 GCE_VM_IP_PORT 類型端點),請先在 GCP_NEG_ZONE 可用區中建立 VM。然後將 VM 網路端點新增至區域 NEG。
建立 VM
控制台
前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面。
點選「建立執行個體」。
將「Name」(名稱) 設為
vm-a1。在「Region」(區域) 中選取
REGION_A,然後在「Zone」(可用區) 欄位中選取任意值。這個區域在本程序中稱為GCP_NEG_ZONE。在「Boot disk」(開機磁碟) 專區中,確認已為開機磁碟選項選取「Debian GNU/Linux 12 (bookworm)」。如有需要,請按一下「Choose」(選擇),以變更映像檔。
展開「Advanced options」(進階選項) 區段,然後進行下列變更:
- 展開「Networking」(網路) 區段。
- 在「Network tags」(網路標記) 欄位中輸入
allow-health-check。 - 在「Network interfaces」(網路介面) 區段中,進行下列變更:
- Network (網路):
NETWORK - Subnet (子網路):
SUBNET - IP stack type (IP 堆疊類型):IPv4 和 IPv6 (雙重堆疊)
- Network (網路):
- 按一下 [完成]。
按一下 [Management] (管理)。在「Startup script」(開機指令碼) 欄位中,複製並貼上下列指令碼內容。
#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2
點選「建立」。
使用下列名稱和區域組合,重複下列步驟來建立第二個 VM:
- 名稱:
vm-a2,區域:GCP_NEG_ZONE
- 名稱:
gcloud
使用下列 VM 名稱和區域的組合,執行以下指令兩次來建立 VM。兩個 VM 的指令碼內容完全相同。
VM_NAME的vm-a1和您選擇的任何GCP_NEG_ZONE區域。VM_NAME的vm-a2和相同GCP_NEG_ZONE區域。gcloud compute instances create VM_NAME \ --zone=GCP_NEG_ZONE \ --stack-type=IPV4_IPV6 \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=allow-health-check \ --subnet=SUBNET \ --metadata=startup-script='#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2'
將端點新增至可用區性 NEG
控制台
如要將端點新增至區域 NEG,請按照下列步驟操作:
前往 Google Cloud 控制台的「網路端點群組」頁面。
在「名稱」清單中,按一下網路端點群組的名稱 (
ZONAL_NEG)。畫面上會顯示「網路端點群組詳細資料」頁面。在「Network endpoints in this group」(這個群組中的網路端點) 區段中,選取先前建立的 NEG 端點。按一下「移除端點」。
在「這個群組中的網路端點」區段中,按一下「新增網路端點」。
選取 VM 執行個體。
「網路介面」部分會顯示 VM 的名稱、區域和子網路。
在「IPv4 位址」欄位中,輸入新網路端點的 IPv4 位址。
在「IPv6 address」(IPv6 位址) 欄位中,輸入新網路端點的 IPv6 位址。
選擇「Port type」(通訊埠類型)。
- 如果您選取「預設」,則端點會使用網路端點群組中所有端點的預設通訊埠
80。由於 Apache 伺服器會在通訊埠80處理要求,因此這個範例已足夠。 - 如果您選取「Custom」(自訂),請輸入端點要使用的「Port number」(通訊埠編號)。
- 如果您選取「預設」,則端點會使用網路端點群組中所有端點的預設通訊埠
如要新增更多端點,請按一下「新增網路端點」,然後重複上述步驟。
新增所有端點後,按一下「建立」。
gcloud
將端點 (
GCE_VM_IP_PORT個端點) 新增至ZONAL_NEG。gcloud compute network-endpoint-groups update ZONAL_NEG \ --zone=GCP_NEG_ZONE \ --add-endpoint='instance=vm-a1,ip=IPv4_ADDRESS, \ ipv6=IPv6_ADDRESS,port=80' \ --add-endpoint='instance=vm-a2,ip=IPv4_ADDRESS, \ ipv6=IPv6_ADDRESS,port=80'
更改下列內容:
IPv4_ADDRESS:
網路端點的 IPv4 位址。IPv4 必須屬於 Compute Engine 中的 VM (主要 IP 或別名 IP 範圍的一部分)。如果未指定 IP 位址,系統會使用網路端點群組所屬網路中 VM 執行個體的主要 IP 位址。
IPv6_ADDRESS:
網路端點的 IPv6 位址。IPv6 位址必須屬於網路端點群組所屬網路中的 VM 執行個體 (外部 IPv6 位址)。
為 IPv6 健康狀態檢查探測器建立防火牆規則
您必須建立防火牆規則,以允許從 Google Cloud 探測系統的 IP 範圍進行健康狀態檢查。詳情請參閱探測 IP 範圍。
確認輸入規則適用於要進行負載平衡的執行個體,且允許來自 Google Cloud 健康狀態檢查系統的流量。這個範例會使用目標標記 allow-health-check-ipv6 來辨識套用規則的 VM 執行個體。
如果沒有這項防火牆規則,預設拒絕輸入規則會封鎖傳入至後端執行個體的 IPv6 流量。
控制台
前往 Google Cloud 控制台的「Firewall policies」(防火牆政策) 頁面。
如要允許 IPv6 子網路流量,請再次按一下「建立防火牆規則」,然後輸入下列資訊:
- Name (名稱):
fw-allow-lb-access-ipv6 - Network (網路):
NETWORK - Priority (優先順序):
1000 - 「Direction of traffic」(流量方向):ingress
- 目標:指定的目標標記
- 「Target tags」(目標標記):
allow-health-check-ipv6 - Source filter (來源篩選器):「IPv6 ranges」(IPv6 範圍)
來源 IPv6 範圍:
如果是全域外部應用程式負載平衡器和全域外部 Proxy 網路負載平衡器,請輸入
2600:2d00:1:b029::/64、2600:2d00:1:1::/64如果是跨區域內部應用程式負載平衡器、區域外部應用程式負載平衡器、 區域內部應用程式負載平衡器、跨區域內部 Proxy 網路負載平衡器、 區域外部 Proxy 網路負載平衡器和區域內部 Proxy 網路負載平衡器,請輸入
2600:2d00:1:b029::/64
「Protocols and ports」(通訊協定和通訊埠):全部允許
- Name (名稱):
點選「建立」。
gcloud
建立
fw-allow-lb-access-ipv6防火牆規則,允許與子網路進行通訊。如果是全域外部應用程式負載平衡器和全域外部 Proxy 網路負載平衡器,請使用下列指令:
gcloud compute firewall-rules create fw-allow-lb-access-ipv6 \ --network=NETWORK \ --action=allow \ --direction=ingress \ --target-tags=allow-health-check-ipv6 \ --source-ranges=2600:2d00:1:b029::/64,2600:2d00:1:1::/64 \ --rules=all如要使用跨區域內部應用程式負載平衡器、區域性外部應用程式負載平衡器、區域性內部應用程式負載平衡器、跨區域內部 Proxy 網路負載平衡器、區域性外部 Proxy 網路負載平衡器和區域性內部 Proxy 網路負載平衡器,請使用下列指令:
gcloud compute firewall-rules create fw-allow-lb-access-ipv6 \ --network=NETWORK \ --action=allow \ --direction=ingress \ --target-tags=allow-health-check-ipv6 \ --source-ranges=2600:2d00:1:b029::/64 \ --rules=all
建立僅限 Proxy 子網路的防火牆規則
如果您使用區域性外部應用程式負載平衡器或內部應用程式負載平衡器,請務必更新 Ingress 防火牆規則fw-allow-lb-access-ipv6,允許流量從僅限 Proxy 的子網路傳輸至後端。
如要取得僅限 Proxy 的子網路 IPv6 位址範圍,請執行下列指令:
gcloud compute networks subnets describe PROXY_ONLY_SUBNET \
--region=REGION \
--format="value(internalIpv6Prefix)"
請記下內部 IPv6 位址範圍,稍後這個範圍會稱為 IPV6_PROXY_ONLY_SUBNET_RANGE。
如要更新僅限 Proxy 子網路的防火牆規則 fw-allow-lb-access-ipv6,請按照下列步驟操作:
控制台
前往 Google Cloud 控制台的「Firewall policies」(防火牆政策) 頁面。
在「VPC firewall rules」(VPC 防火牆規則) 面板中,按一下
fw-allow-lb-access-ipv6。- 來源 IPv6 範圍:
2600:2d00:1:b029::/64、IPV6_PROXY_ONLY_SUBNET_RANGE
- 來源 IPv6 範圍:
按一下 [儲存]。
gcloud
更新
fw-allow-lb-access-ipv6防火牆規則,允許與僅限 Proxy 子網路通訊:gcloud compute firewall-rules update fw-allow-lb-access-ipv6 \ --source-ranges=2600:2d00:1:b029::/64,IPV6_PROXY_ONLY_SUBNET_RANGE
為 IPv6 建立新的後端服務和轉送規則
本節說明如何建立新的後端服務和 IPv6 轉送規則。請注意,IPv6 轉送規則只能為全域外部應用程式負載平衡器建立。跨區域內部應用程式負載平衡器、區域外部應用程式負載平衡器和區域內部應用程式負載平衡器,都不支援 IPv6 轉送規則。
在此程序中,BACKEND_SERVICE 和 BACKEND_SERVICE_IPV6 都能提供流量。為避免流量中斷,請建立新的後端服務,並將 IP 位址選取政策設為 Prefer IPv6。建立新的後端服務後,即可將流量轉送至新的 IPv6 後端服務。
控制台
前往 Google Cloud 控制台的「Load balancing」(負載平衡) 頁面。
按一下負載平衡器名稱。
按一下 [編輯]。
設定後端服務:
- 按一下「後端設定」。
- 在「後端服務」欄位中,選取「建立後端服務」。
- 將「Name」(名稱) 設為 BACKEND_SERVICE_IPV6。
- 將「Backend type」(後端類型) 設為「Zonal network endpoint group」(可用區網路端點群組)。
- 在「IP address selection policy」(IP 位址選擇政策) 清單中,選取「Prefer IPv6」(偏好使用 IPv6)。
- 在「Protocol」(通訊協定) 欄位中,選取「HTTP」。
- 在「New Backend」(新增後端) 面板中,執行下列步驟:
- 在「網路端點群組」清單中,選取 ZONAL_NEG。
- 在「Maximum RPS」(每秒要求數上限) 部分輸入
10。
- 在「健康狀態檢查」清單中,選取 HTTP 健康狀態檢查。
- 按一下 [完成]。
設定 IPv6 前端:
跨區域內部應用程式負載平衡器、區域外部應用程式負載平衡器和區域內部應用程式負載平衡器,都不支援使用 IPv6 的轉送規則。
- 按一下「前端設定」。
- 按一下 [Add frontend IP and port] (新增前端 IP 和通訊埠)。
- 在「Name」(名稱) 欄位中,輸入轉送規則的名稱。
- 在「Protocol」(通訊協定) 欄位中選取
HTTP。 - 將「IP version」(IP 版本) 設為
IPv6。 - 按一下 [完成]。
- 按一下「Update」。
設定轉送規則
- 按一下「轉送規則」。
- 按一下「進階主機與路徑規則」。
- 按一下「Update」。
gcloud
建立健康狀態檢查:
gcloud compute health-checks create http HEALTH_CHECK \ --port 80針對 HTTP 流量建立後端服務:
全球
如果是全域外部應用程式負載平衡器,請使用下列指令:
gcloud compute backend-services create BACKEND_SERVICE_IPV6 \ --load-balancing-scheme=EXTERNAL_MANAGED \ --protocol=HTTP \ --ip-address-selection-policy=PREFER_IPV6 \ --health-checks=HEALTH_CHECK \ --global跨區域
如要使用跨區域內部應用程式負載平衡器,請使用下列指令:
gcloud compute backend-services create BACKEND_SERVICE_IPV6 \ --load-balancing-scheme=INTERNAL_MANAGED \ --protocol=HTTP \ --ip-address-selection-policy=PREFER_IPV6 \ --health-checks=HEALTH_CHECK \ --global區域
如為區域性外部應用程式負載平衡器,請使用下列指令:
gcloud compute backend-services create BACKEND_SERVICE_IPV6 \ --load-balancing-scheme=EXTERNAL_MANAGED \ --protocol=HTTP \ --ip-address-selection-policy=PREFER_IPV6 \ --health-checks=HEALTH_CHECK \ --region=REGION如要使用區域性內部應用程式負載平衡器,請使用下列指令:
gcloud compute backend-services create BACKEND_SERVICE_IPV6 \ --load-balancing-scheme=INTERNAL_MANAGED \ --protocol=HTTP \ --ip-address-selection-policy=PREFER_IPV6 \ --health-checks=HEALTH_CHECK \ --region=REGION將雙堆疊區域 NEG 新增至後端服務,做為後端使用。
全球
如果是全域外部應用程式負載平衡器,請使用下列指令:
gcloud compute backend-services add-backend BACKEND_SERVICE_IPV6 \ --network-endpoint-group=ZONAL_NEG \ --network-endpoint-group-zone=ZONE \ --max-rate-per-endpoint=10 \ --global跨區域
如要使用跨區域內部應用程式負載平衡器,請使用下列指令:
gcloud compute backend-services add-backend BACKEND_SERVICE_IPV6 \ --network-endpoint-group=ZONAL_NEG \ --network-endpoint-group-zone=ZONE \ --max-rate-per-endpoint=10 \ --global區域
如要使用區域性外部應用程式負載平衡器和區域性內部應用程式負載平衡器,請使用下列指令:
gcloud compute backend-services add-backend BACKEND_SERVICE_IPV6 \ --network-endpoint-group=ZONAL_NEG \ --network-endpoint-group-zone=ZONE \ --max-rate-per-endpoint=10 \ --region=REGION將雙堆疊執行個體群組新增至後端服務,做為後端使用。
全球
如果是全域外部應用程式負載平衡器,請使用下列指令:
gcloud compute backend-services add-backend BACKEND_SERVICE_IPV6 \ --instance-group=INSTANCE_GROUP \ --global跨區域
如要使用跨區域內部應用程式負載平衡器,請使用下列指令:
gcloud compute backend-services add-backend BACKEND_SERVICE_IPV6 \ --instance-group=INSTANCE_GROUP \ --global區域
如要使用區域性外部應用程式負載平衡器和區域性內部應用程式負載平衡器,請使用下列指令:
gcloud compute backend-services add-backend BACKEND_SERVICE_IPV6 \ --instance-group=INSTANCE_GROUP \ --region=REGION僅適用於全域外部應用程式負載平衡器。為全域外部應用程式負載平衡器建立 IPv6 轉送規則。使用以下指令:
gcloud compute forwarding-rules create FORWARDING_RULE_IPV6 \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network-tier=PREMIUM \ --global \ --target-http-proxy=TARGET_PROXY \ --ports=443
將流量轉送至新的 IPv6 後端服務
更新網址對應,將部分用戶端流量導向新的 IPv6 後端服務 BACKEND_SERVICE_IPV6。
使用下列指令編輯網址對應:
全球
如果是全域外部應用程式負載平衡器,請使用下列指令:
gcloud compute url-maps edit URL_MAP \ --global跨區域
如要使用跨區域內部應用程式負載平衡器,請使用下列指令:
gcloud compute url-maps edit URL_MAP \ --global區域
如要使用區域性外部應用程式負載平衡器和區域性內部應用程式負載平衡器,請使用下列指令:
gcloud compute url-maps edit URL_MAP \ --region=REGION在顯示的文字編輯器中,新增
routeRule,並加入weightedBackendServices動作,將一定比例的 IPv6 流量導向BACKEND_SERVICE_IPV6。defaultService: global/backendServices/BACKEND_SERVICE hostRules: - hosts: - '*' pathMatcher: matcher1 name: URL_MAP pathMatchers: - defaultService: global/backendServices/BACKEND_SERVICE name: matcher1 routeRules: - matchRules: - prefixMatch: '' priority: 1 routeAction: weightedBackendServices: - backendService: global/backendServices/BACKEND_SERVICE weight: 95 - backendService: global/backendServices/BACKEND_SERVICE_IPV6 weight: 5
如要逐步遷移至 IPv6,請多次編輯網址對應,逐步將新後端服務的權重百分比 BACKEND_SERVICE_IPV6 提高至 100%。
設定 IP 位址選擇政策
將資源和後端轉換為雙堆疊後,您可以使用 IP 位址選取政策,指定從後端服務傳送至後端的流量類型。
將 IP_ADDRESS_SELECTION_POLICY 取代為下列任一值:
| IP 位址選擇政策 | 說明 |
|---|---|
| 僅限 IPv4 | 無論從用戶端到 GFE 的流量為何,都只將 IPv4 流量傳送至後端服務的後端。系統只會使用 IPv4 健康狀態檢查,檢查後端的健康狀態。 |
| 偏好使用 IPv6 | 優先使用後端的 IPv6 連線,而非 IPv4 連線 (前提是後端有正常的 IPv6 位址)。 健康狀態檢查會定期監控後端的 IPv6 和 IPv4 連線。GFE 會先嘗試 IPv6 連線;如果 IPv6 連線中斷或速度緩慢,GFE 會使用happy eyeballs來回復並連線至 IPv4。 即使其中一個 IPv6 或 IPv4 連線不正常,後端仍會視為正常,GFE 可以嘗試這兩個連線,最終由 Happy Eyeballs 選取要使用的連線。 |
| 僅限 IPv6 | 無論從用戶端到 Proxy 的流量為何,都只將 IPv6 流量傳送至後端服務的後端。系統只會使用 IPv6 健康狀態檢查,檢查後端的健康狀態。 系統不會進行驗證,檢查後端流量類型是否符合 IP 位址選擇政策。舉例來說,如果您只有 IPv4 後端,並選取 |
控制台
前往 Google Cloud 控制台的「Load balancing」(負載平衡) 頁面。
按一下負載平衡器名稱。
按一下 [編輯]。
按一下「後端設定」。
在「Backend service」(後端服務) 欄位中,選取「BACKEND_SERVICE_IPV6」。
「後端類型」必須是「區域性網路端點群組」或「執行個體群組」。
在「IP address selection policy」(IP 位址選擇政策) 清單中,選取「IP_ADDRESS_SELECTION_POLICY」。
按一下 [完成]。
gcloud
更新後端服務的 IP 位址選擇政策:
全球
如果是全域外部應用程式負載平衡器,請使用下列指令:
gcloud compute backend-services update BACKEND_SERVICE_IPV6 \
--load-balancing-scheme=EXTERNAL_MANAGED \
--protocol=HTTP \
--ip-address-selection-policy=IP_ADDRESS_SELECTION_POLICY \
--global
跨區域
如要使用跨區域內部應用程式負載平衡器,請使用下列指令:
gcloud compute backend-services update BACKEND_SERVICE_IPV6 \
--load-balancing-scheme=INTERNAL_MANAGED \
--protocol=HTTP \
--ip-address-selection-policy=IP_ADDRESS_SELECTION_POLICY \
--global
區域
如為區域性外部應用程式負載平衡器,請使用下列指令:
gcloud compute backend-services update BACKEND_SERVICE_IPV6 \
--load-balancing-scheme=EXTERNAL_MANAGED \
--protocol=HTTP \
--ip-address-selection-policy=IP_ADDRESS_SELECTION_POLICY \
--region=REGION
如要使用區域性內部應用程式負載平衡器,請使用下列指令:
gcloud compute backend-services update BACKEND_SERVICE_IPV6 \
--load-balancing-scheme=INTERNAL_MANAGED \
--protocol=HTTP \
--ip-address-selection-policy=IP_ADDRESS_SELECTION_POLICY \
--region=REGION
測試負載平衡器
您必須驗證所有必要資源是否已更新為雙堆疊。 更新所有資源後,流量必須自動流向後端。您可以檢查記錄,確認轉換作業是否完成。
測試負載平衡器,確認遷移作業是否成功,以及連入流量是否如預期抵達後端。
查詢負載平衡器 IP 位址
控制台
前往 Google Cloud 控制台的「Load balancing」(負載平衡) 頁面。
按一下負載平衡器名稱。
「Frontend」(前端) 部分會顯示兩個負載平衡器 IP 位址。在本程序中,IPv4 位址稱為 IP_ADDRESS_IPV4,IPv6 位址則稱為 IP_ADDRESS_IPV6。
在「後端」區段中,如果 IP 位址選取政策為
Prefer IPv6,系統會顯示後端的兩種健康狀態檢查狀態。
將流量傳送至負載平衡器
在本例中,curl 指令的要求會隨機分配給後端。
外部負載平衡器
重複執行下列指令幾次,直到所有後端 VM 都回應為止:
curl -m1 IP_ADDRESS_IPV4:PORT
curl -m1 IP_ADDRESS_IPV6:PORT
舉例來說,如果 IPv6 位址為
[fd20:1db0:b882:802:0:46:0:0]:80,指令會類似於:curl -m1 [fd20:1db0:b882:802:0:46:0:0]:80
內部負載平衡器
在與負載平衡器相同的虛擬私有雲網路和區域中,建立測試用戶端 VM。不一定要位於相同子網路或可用區。
gcloud compute instances create client-vm \ --zone=ZONE \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=allow-ssh \ --subnet=SUBNET使用 SSH 連線至用戶端執行個體。
gcloud compute ssh client-vm \ --zone=ZONE重複執行下列指令幾次,直到所有後端 VM 都回應為止:
curl -m1 IP_ADDRESS_IPV4:PORT
curl -m1 IP_ADDRESS_IPV6:PORT
舉例來說,如果 IPv6 位址為
[fd20:1db0:b882:802:0:46:0:0]:80,指令會類似於:curl -m1 [fd20:1db0:b882:802:0:46:0:0]:80
檢查記錄
每筆記錄項目都會擷取後端的目的地 IPv4 和 IPv6 位址。由於我們支援雙堆疊,因此請務必觀察後端使用的 IP 位址。
您可以查看記錄,確認流量是否傳輸至 IPv6,或是否回復至 IPv4。
HttpRequest 包含與後端相關聯的 backend_ip 位址。檢查記錄並比較 backend_ip 的目的地 IPv4 和 IPv6 位址,即可確認使用的 IP 位址。