本文說明如何將 Proxy 網路負載平衡器資源和後端,從「僅限 IPv4」(單一堆疊) 轉換為「IPv4 和 IPv6」(雙重堆疊)。使用 IPv6 的主要優點,是可以為負載平衡器分配更大的 IP 位址集區。您可以設定負載平衡器,終止傳入的 IPv6 流量,並根據偏好設定,透過 IPv4 或 IPv6 連線將流量傳送至後端。詳情請參閱「應用程式負載平衡器和 Proxy 網路負載平衡器的 IPv6」。
在本文中,「僅限 IPv4 (單一堆疊)」是指僅使用 IPv4 位址的資源,「IPv4 和 IPv6 (雙重堆疊)」則是指同時使用 IPv4 和 IPv6 位址的資源。
本文操作說明適用於 TCP 和 SSL Proxy 網路負載平衡器。
事前準備
開始轉換程序前,請注意下列條件:
您必須使用下列其中一種 Proxy 網路負載平衡器:
- 全域外部 Proxy 網路負載平衡器
- 區域性外部 Proxy 網路負載平衡器
- 跨區域內部 Proxy 網路負載平衡器
- 區域性內部 Proxy 網路負載平衡器
傳統版 Proxy 網路負載平衡器不支援雙堆疊後端或子網路。如要進一步瞭解 IPv6 支援,請參閱「應用程式負載平衡器和 Proxy 網路負載平衡器的 IPv6」。
負載平衡器使用的是 VM 執行個體群組後端,或具有
GCE_VM_IP_PORT端點的可用區網路端點群組 (NEG)。其他後端類型不支援雙堆疊。對於所有支援的 Proxy 網路負載平衡器,如要支援端對端 IPv6 後端流量,您必須將後端轉換為雙重堆疊。如要僅支援用戶端 IPv6 流量,則不需要轉換後端,只要建立可處理傳入 IPv6 流量的 IPv6 轉送規則即可。
如要瞭解如何設定 Proxy 網路負載平衡器,請參閱下列說明文件:
- 設定全域外部 Proxy 網路負載平衡器:VM 執行個體群組後端、可用區 NEG 後端
- 設定區域性外部 Proxy 網路負載平衡器:VM 執行個體群組後端、可用區 NEG 後端
- 設定跨區域內部 Proxy 網路負載平衡器:VM 執行個體群組後端、可用區 NEG 後端
- 設定區域性內部 Proxy 網路負載平衡器: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 instances list指令查看後端的 IP 堆疊類型: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
記下要轉換為雙堆疊的網路端點群組名稱。這個名稱稍後會稱為
ZONAL_NEG。如要列出所有目標 SSL Proxy,請使用
gcloud compute target-ssl-proxies list指令:gcloud compute target-ssl-proxies list
記下與負載平衡器相關聯的目標 Proxy 名稱。這個名稱稍後會稱為
TARGET_PROXY。如要列出所有目標 TCP Proxy,請使用
gcloud compute target-tcp-proxies list指令:gcloud compute target-tcp-proxies list
記下與負載平衡器相關聯的目標 Proxy 名稱。這個名稱稍後會稱為
TARGET_PROXY。
從單一堆疊轉換為雙重堆疊後端
本節說明如何將僅使用 IPv4 (單一堆疊) 位址的負載平衡器資源和後端,轉換為 IPv4 和 IPv6 (雙重堆疊) 位址。
更新後端子網路
雙協定子網路僅支援自訂模式虛擬私有雲網路。自動模式虛擬私有雲網路或舊版網路不支援雙協定子網路。雖然自動模式網路適合用於早期探索,但自訂模式虛擬私有雲更適合大多數正式環境。建議您使用自訂模式的虛擬私有雲。
如要將虛擬私有雲更新為雙堆疊設定,請按照下列步驟操作:
如果您使用的是自動模式虛擬私有雲網路,則必須先將自動模式虛擬私有雲網路轉換為自訂模式。
如果您使用的是
default網路,則必須將其轉換為自訂模式虛擬私有雲網路。如果您使用的是跨區域、區域性外部或區域性內部負載平衡器,則必須先在虛擬私有雲網路啟用內部 IPv6,才能更新子網路。詳情請參閱「建立具有雙協定子網路的自訂模式虛擬私有雲網路」。
如要啟用 IPv6,請參閱「將子網路的堆疊類型變更為雙重堆疊」。
全球
如果是全域外部負載平衡器,請使用下列指令:
gcloud compute networks subnets update SUBNET \ --stack-type=IPV4_IPV6 \ --ipv6-access-type=EXTERNAL \ --region=REGION跨區域
如為跨區域內部負載平衡器,請使用下列指令:
gcloud compute networks subnets update SUBNET \ --stack-type=IPV4_IPV6 \ --subnet-mode=custom \ --enable-ula-internal-ipv6 \ --ipv6-access-type=INTERNAL \ --region=REGION區域
如果是區域性外部和區域性內部負載平衡器,請使用下列指令:
外部
gcloud compute networks subnets update SUBNET \ --stack-type=IPV4_IPV6 \ --subnet-mode=custom \ --enable-ula-internal-ipv6 \ --ipv6-access-type=EXTERNAL \ --region=REGION內部
gcloud compute networks subnets update SUBNET \ --stack-type=IPV4_IPV6 \ --subnet-mode=custom \ --enable-ula-internal-ipv6 \ --ipv6-access-type=INTERNAL \ --region=REGION將
REGION替換為子網路的區域。選用:如要為這個網路中的子網路設定內部 IPv6 位址範圍,請完成下列步驟:
- 在「虛擬私有雲網路 ULA 內部 IPv6 範圍」部分,選取「已啟用」。
在「Allocate internal IPv6 range」(分配內部 IPv6 範圍) 部分,選取「Automatically」(自動) 或「Manually」(手動)。
如果選取「Manually」(手動),請輸入
fd20::/20範圍內的/48範圍。如果該範圍已在使用中,系統會提示您提供其他範圍。
選用:更新 Proxy 專用子網路
如果您使用 Envoy 負載平衡器,建議將僅限 Proxy 子網路堆疊類型變更為雙重堆疊,讓 Proxy 能夠連線至 IPv6 後端。如果只想支援用戶端 IPv6 流量,可以使用單一堆疊 (IPV4_ONLY) 或雙重堆疊 (IPV4_IPV6) 僅限 Proxy 子網路。如要瞭解支援僅限 Proxy 子網路的負載平衡器,請參閱「支援的負載平衡器」。
您無法像一般子網路一樣 (使用 subnets update command),更新僅限 Proxy 子網路 (purpose=REGIONAL_MANAGED_PROXY) 的堆疊類型。您必須建立雙堆疊類型的僅限 Proxy 備份子網路,然後將其升級為作用中角色。這是因為每個虛擬私有雲網路的每個區域,只能有一個有效的僅限 Proxy 子網路。
在虛擬私有雲網路指派內部 IPv6 範圍後,請按照下列步驟操作,將僅限 Proxy 子網路的堆疊類型變更為雙堆疊。
控制台
在與有效僅限 Proxy 子網路相同的區域中,建立僅限 Proxy 的備份子網路,並將 IP 堆疊類型指定為雙重堆疊。
- 前往 Google Cloud 控制台的「VPC networks」(虛擬私有雲網路) 頁面。
前往「VPC networks」(虛擬私有雲網路) 頁面 - 按一下要新增僅限 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」(虛擬私有雲網路) 頁面 - 按一下要修改的虛擬私有雲網路名稱。
- 在「Reserved proxy-only subnets for load balancing」(為負載平衡預留的僅限 Proxy 子網路) 下方,找出上一步建立的備份子網路。
- 點按「Activate」(啟用)。
- 視需要指定「Drain timeout」(排出逾時)。
- 按一下「啟用子網路」。
- 前往 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 專用子網路相同。VPC_NETWORK_NAME:虛擬私有雲網路名稱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 範圍
更新新的子網路,將其設為該區域中的
ACTIVE僅限 Proxy 子網路,並等待舊子網路清空。同時將先前啟用的僅限 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 子網路後,即可刪除舊子網路。
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 interfaces」(網路介面) 部分,按一下「Add a network interface」(新增網路介面)。
- 在「Network」(網路) 清單中,選取自訂模式虛擬私有雲網路。
- 在「Subnetwork」(子網路) 清單中,選取「
SUBNET」。 - 在「IP stack type」(IP 堆疊類型),選取「IPv4 and IPv6 (dual-stack)」(IPv4 和 IPv6 (雙重堆疊))。
- 點選「建立」。
對與負載平衡器相關聯的代管執行個體群組
MIG啟動基本滾動式更新。
更新可用區 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)」。如有需要,請按一下「選擇」來變更映像檔。
展開「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-a1的VM_NAME,以及您選擇的任何GCP_NEG_ZONE可用區。vm-a2的VM_NAME和相同的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 控制台的「Network endpoint groups」(網路端點群組) 頁面。
在「Name」(名稱) 清單中,按一下網路端點群組的名稱 (
ZONAL_NEG)。系統會顯示「Network endpoint group details」(網路端點群組詳細資料) 頁面。在「Network endpoints in this group」(這個群組中的網路端點) 區段,選取先前建立的 NEG 端點。按一下「移除端點」。
在「Network endpoints in this group」(這個群組中的網路端點) 專區,按一下「Add network endpoint」(新增網路端點)。
選取「VM instance」(VM 執行個體)。
「Network interface」(網路介面) 區段會顯示 VM 的名稱、可用區和子網路。
在「IPv4 address」(IPv4 位址) 欄位中,輸入新網路端點的 IPv4 位址。
在「IPv6 address」(IPv6 位址) 欄位中,輸入新網路端點的 IPv6 位址。
選擇「Port type」(通訊埠類型)。
- 如果選取「Default」(預設),端點會使用網路端點群組中所有端點的預設通訊埠
80。這對我們的範例來說已足夠,因為 Apache 伺服器會在通訊埠80提供要求。 - 如果選取「Custom」(自訂),請輸入端點要使用的通訊埠編號。
- 如果選取「Default」(預設),端點會使用網路端點群組中所有端點的預設通訊埠
如要新增更多端點,請按一下「Add network endpoint」(新增網路端點),然後重複上述步驟。
新增所有端點後,按一下「Create」(建立)。
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 子網路流量,請再次點選「Create firewall rule」(建立防火牆規則),然後輸入下列資訊:
- 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 範圍:
2600:2d00:1:b029::/64 - 「通訊協定和通訊埠」:「全部允許」
- Name (名稱):
點選「建立」。
gcloud
建立
fw-allow-lb-access-ipv6防火牆規則,允許與子網路通訊。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 的子網路建立防火牆規則
如果您按照本文「更新僅限 Proxy 的子網路」一節所述,將僅限 Proxy 的子網路更新為雙堆疊 (IPV4_IPV6),則適用本節。如果僅限 Proxy 的子網路仍為單一堆疊 (IPV4_ONLY),則不需更新這項防火牆規則,因為從 Proxy 傳送至後端的流量會繼續使用 IPv4。
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」(防火牆政策) 頁面。
在「虛擬私有雲防火牆規則」面板中,點選
fw-allow-lb-access-ipv6。- Source IPv6 ranges (來源 IPv6 範圍):
2600:2d00:1:b029::/64、IPV6_PROXY_ONLY_SUBNET_RANGE
- Source IPv6 ranges (來源 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 轉送規則。
控制台
前往 Google Cloud 控制台的「Load balancing」(負載平衡) 頁面。
按一下負載平衡器名稱。
按一下 [編輯]。
設定 IPv6 的後端服務
- 按一下「後端設定」。
- 將「Backend type」(後端類型) 設為「Zonal network endpoint group」(可用區網路端點群組)。
- 在「IP address selection policy」(IP 位址選擇政策) 清單中,選取「Prefer IPv6」(偏好使用 IPv6)。
- 在「Protocol」(通訊協定) 欄位中:
- 如為 TCP Proxy,請選取「TCP」TCP。
- 如要使用 SSL Proxy,請選取「SSL」SSL。
- 可用區 NEG:
- 在「後端」部分,按一下「新增後端」。
- 在「New Backend」(新增後端) 面板中,執行下列操作:
- 在「network endpoint group」(網路端點群組) 清單中,選取
ZONAL_NEG。 - 在「連線數量上限」欄位中輸入 10。
- 在「network endpoint group」(網路端點群組) 清單中,選取
- 執行個體群組:如果您已將 VM 執行個體或範本更新為雙堆疊,則不需更新。
- 按一下「完成」。
- 在「Health check」(健康狀態檢查) 清單中,選取 HTTP 健康狀態檢查。
設定 IPv6 轉送規則
- 點選「前端設定」。
- 按一下 [Add frontend IP and port] (新增前端 IP 和通訊埠)。
- 在「Name」(名稱) 欄位中,輸入轉送規則的名稱。
- 在「Protocol」(通訊協定) 欄位中:
- 如為 TCP Proxy,請選取「TCP」TCP。
- 如要使用 SSL Proxy,請選取「SSL」SSL。
- 將「IP version」(IP 版本) 設為
IPv6。 - 如果是 SSL Proxy,請在「Certificates」(憑證) 清單中選取憑證。
- 按一下「完成」。
- 按一下「Update」。
gcloud
將雙堆疊可用區 NEG 新增為後端服務的後端。
全球
如果是全域外部 Proxy 網路負載平衡器,請使用下列指令:
gcloud compute backend-services add-backend BACKEND_SERVICE \ --network-endpoint-group=ZONAL_NEG \ --max-rate-per-endpoint=10 \ --global跨區域
如為跨區域內部 Proxy 網路負載平衡器,請使用下列指令:
gcloud compute backend-services add-backend BACKEND_SERVICE \ --network-endpoint-group=ZONAL_NEG \ --max-rate-per-endpoint=10 \ --global區域
如果是區域性外部 Proxy 網路負載平衡器和區域性內部 Proxy 網路負載平衡器,請使用下列指令:
gcloud compute backend-services add-backend BACKEND_SERVICE \ --network-endpoint-group=ZONAL_NEG \ --max-rate-per-endpoint=10 \ --region=REGION將雙堆疊執行個體群組新增至後端服務,做為後端。由於您已將 VM 執行個體或範本更新為雙重堆疊,因此無須採取任何行動。
使用目標 SSL Proxy,為全域外部 Proxy 網路負載平衡器建立 IPv6 轉送規則:
gcloud compute forwarding-rules create FORWARDING_RULE_IPV6 \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network-tier=PREMIUM \ --address=lb-ipv6-1 \ --global \ --target-ssl-proxy=TARGET_PROXY \ --ports=80
使用目標 TCP Proxy,為全域外部 Proxy 網路負載平衡器建立 IPv6 轉送規則:
全球
如果是全域外部 Proxy 網路負載平衡器,請使用下列指令:
gcloud compute forwarding-rules create FORWARDING_RULE_IPV6 \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network-tier=PREMIUM \ --global \ --target-tcp-proxy=TARGET_PROXY \ --ports=80
跨區域
如為跨區域內部 Proxy 網路負載平衡器,請使用下列指令:
gcloud compute forwarding-rules create FORWARDING_RULE_IPV6 \ --load-balancing-scheme=INTERNAL_MANAGED \ --network-tier=PREMIUM \ --network=NETWORK --subnet=SUBNET --subnet-region=REGION --global \ --target-tcp-proxy=TARGET_PROXY \ --ports=443 \ --ip-version=IPV6區域
如果是區域性外部 Proxy 網路負載平衡器和區域性內部 Proxy 網路負載平衡器,請使用下列指令:
區域性外部
gcloud compute forwarding-rules create FORWARDING_RULE_IPV6 \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network-tier=PREMIUM \ --network=NETWORK --subnet=SUBNET --subnet-region=REGION --global \ --target-tcp-proxy=TARGET_PROXY \ --ports=443 \ --ip-version=IPV6區域型內部
gcloud compute forwarding-rules create FORWARDING_RULE_IPV6 \ --load-balancing-scheme=INTERNAL_MANAGED \ --network-tier=PREMIUM \ --network=NETWORK --subnet=SUBNET --subnet-region=REGION --global \ --target-tcp-proxy=TARGET_PROXY \ --ports=443 \ --ip-version=IPV6
設定 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。「Backend type」(後端類型) 必須是「Zonal network endpoint group」(可用區網路端點群組) 或「Instance group」(執行個體群組)。
在「IP address selection policy」(IP 位址選擇政策) 清單中,選取「
IP_ADDRESS_SELECTION_POLICY」。按一下「完成」。
gcloud
更新後端服務的 IP 位址選擇政策:
全球
如果是全域外部 Proxy 網路負載平衡器,請使用下列指令:
gcloud compute backend-services update BACKEND_SERVICE_IPV6 \
--load-balancing-scheme=EXTERNAL_MANAGED \
--protocol=SSL | TCP \
--ip-address-selection-policy=IP_ADDRESS_SELECTION_POLICY \
--global
跨區域
如為跨區域內部 Proxy 網路負載平衡器,請使用下列指令:
gcloud compute backend-services update BACKEND_SERVICE_IPV6 \
--load-balancing-scheme=INTERNAL_MANAGED \
--protocol=TCP \
--ip-address-selection-policy=IP_ADDRESS_SELECTION_POLICY \
--global
區域
如果是區域性外部 Proxy 網路負載平衡器,請使用下列指令:
gcloud compute backend-services update BACKEND_SERVICE_IPV6 \
--load-balancing-scheme=EXTERNAL_MANAGED \
--protocol=TCP \
--ip-address-selection-policy=IP_ADDRESS_SELECTION_POLICY \
--region=REGION
如為區域性內部 Proxy 網路負載平衡器,請使用下列指令:
gcloud compute backend-services update BACKEND_SERVICE_IPV6 \
--load-balancing-scheme=INTERNAL_MANAGED \
--protocol=TCP \
--ip-address-selection-policy=IP_ADDRESS_SELECTION_POLICY \
--region=REGION
測試負載平衡器
您必須驗證所有必要資源是否已更新為雙堆疊。更新所有資源後,流量必須自動流向後端。您可以查看記錄,確認轉換作業已完成。
測試負載平衡器,確認轉換成功,且連入流量如預期到達後端。
查詢負載平衡器 IP 位址
控制台
前往 Google Cloud 控制台的「Load balancing」(負載平衡) 頁面。
按一下負載平衡器名稱。
「前端」部分會顯示兩個負載平衡器 IP 位址。在本程序中,IPv4 位址稱為
IP_ADDRESS_IPV4,IPv6 位址則稱為IP_ADDRESS_IPV6。在「Backends」(後端) 區段中,如果 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 \ --stack-type=IPV4_IPV6使用 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。
記錄檔包含與後端相關聯的 backend_ip 位址。您可以檢查記錄並比較 backend_ip 的目的地 IPv4 或 IPv6 位址,確認使用的 IP 位址。