本指南提供使用區域後端服務建立外部直通式網路負載平衡器部署作業的操作說明。這個範例會建立外部直通式網路負載平衡器,支援 TCP 或 UDP 流量。如要建立外部直通網路負載平衡器,以便負載平衡 TCP、UDP、ESP、GRE、ICMP 和 ICMPv6 流量 (而非僅限於 TCP 或 UDP),請參閱「為多個 IP 通訊協定設定外部直通網路負載平衡器」。
本範例使用負載平衡器,在 us-central1
地區的兩個區域代管執行個體群組中,跨後端 VM 分配 TCP 流量。同樣有效的方法是針對 us-central1
區域使用單一地區代管執行個體群組。
這個情境會將 TCP 流量分散至健康狀態良好的執行個體。為了支援這個範例,我們已設定 TCP 健康狀態檢查,確保流量只會傳送至健康的執行個體。請注意,TCP 健康狀態檢查僅支援後端服務型負載平衡器。目標集區型負載平衡器只能使用舊版 HTTP 健康狀態檢查。
這個範例會對 TCP 流量進行負載平衡,但您可以使用以後端服務為基礎的外部轉送網路負載平衡器,對 TCP、UDP、ESP、GRE、ICMP 和 ICMPv6 流量進行負載平衡。
外部直通式網路負載平衡器是一種區域負載平衡器。所有負載平衡器元件 (後端 VM、後端服務和轉送規則) 都必須位於同一個地區。
事前準備
安裝 Google Cloud CLI。如需工具的完整總覽,請參閱 gcloud CLI 總覽。您可以在 API 和 gcloud 參考資料中找到與負載平衡相關的指令。
如果您之前沒有執行過 Google Cloud CLI,請先執行 gcloud init
進行驗證。
本指南假設您已熟悉 bash。
設定網路和子網路
本頁範例使用名為 lb-network
的自訂模式虛擬私有雲網路。如果您只想處理 IPv4 流量,可以使用自動模式虛擬私有雲網路。不過,IPv6 流量需要自訂模式子網路。
IPv6 流量也需要雙重堆疊子網路 (stack-type
設為 IPv4_IPv6
)。在自訂模式虛擬私有雲網路中建立雙重堆疊子網路時,您可以為子網路選擇 IPv6 存取類型。在這個範例中,我們將子網路的 ipv6-access-type
參數設為 EXTERNAL
。也就是說,這個子網路中的新 VM 可同時指派外部 IPv4 位址和外部 IPv6 位址。轉送規則也可以同時指派外部 IPv4 位址和外部 IPv6 位址。
本例中使用的後端和負載平衡器元件位於以下地區和子網路:
- 區域:
us-central1
- 子網路:
lb-subnet
,主要 IPv4 位址範圍為 10.1.2.0/24。雖然您可以選擇在子網路上設定哪個 IPv4 位址範圍,但系統會自動指派 IPv6 位址範圍。Google 提供固定大小 (/64) 的 IPv6 CIDR 區塊。
如要建立範例網路和子網路,請按照以下步驟操作。
主控台
如要同時支援 IPv4 和 IPv6 流量,請按照下列步驟操作:
在 Google Cloud 控制台中,前往「VPC Networks」(虛擬私有雲網路) 頁面。
按一下「建立虛擬私有雲網路」。
輸入
lb-network
的「Name」。在「Subnets」(子網路) 區段中:
- 將「Subnet creation mode」(子網路建立模式) 設為 [Custom] (自訂)。
- 在「New subnet」(新的子網路) 區段中,設定下列欄位,然後按一下「Done」:
- Name (名稱):
lb-subnet
- Region (區域):
us-central1
- IP 堆疊類型:IPv4 和 IPv6 (雙重堆疊)
- IPv4 範圍:
10.1.2.0/24
雖然您可以為子網路設定 IPv4 位址範圍,但無法選擇子網路的 IPv6 位址範圍。Google 提供固定大小 (/64) 的 IPv6 CIDR 區塊。 - IPv6 存取權類型:外部
- Name (名稱):
按一下 [建立]。
如要支援僅 IPv4 流量,請按照下列步驟操作:
在 Google Cloud 控制台中,前往「VPC Networks」(虛擬私有雲網路) 頁面。
按一下「建立虛擬私有雲網路」。
輸入
lb-network
的「Name」。在「Subnets」(子網路) 區段中:
- 將「Subnet creation mode」(子網路建立模式) 設為 [Custom] (自訂)。
- 在「New subnet」(新的子網路) 區段中,設定下列欄位,然後按一下「Done」:
- Name (名稱):
lb-subnet
- Region (區域):
us-central1
- IP stack type (IP 堆疊類型):IPv4 (單一堆疊)
- IPv4 範圍:
10.1.2.0/24
- Name (名稱):
按一下 [建立]。
gcloud
建立自訂模式虛擬私有雲網路:
gcloud compute networks create lb-network \ --subnet-mode=custom
在
lb-network
網路中,為us-central1
地區的後端建立子網路。如要同時支援 IPv4 和 IPv6 流量,請使用下列指令建立雙重堆疊子網路:
gcloud compute networks subnets create lb-subnet \ --stack-type=IPV4_IPv6 \ --ipv6-access-type=EXTERNAL \ --network=lb-network \ --range=10.1.2.0/24 \ --region=us-central1
如要只測試 IPv4 流量,請使用下列指令:
gcloud compute networks subnets create lb-subnet \ --network=lb-network \ --range=10.1.2.0/24 \ --region=us-central1
建立區域代管執行個體群組
針對這個負載平衡情境,您將建立兩個 Compute Engine 區域管理執行個體群組,並在每個執行個體上安裝 Apache 網路伺服器。
如要同時處理 IPv4 和 IPv6 流量,請將後端 VM 設為雙重堆疊。將 VM 的 stack-type
設為 IPv4_IPv6
。這些 VM 也會從子網路繼承 ipv6-access-type
設定 (在本例中為 EXTERNAL
)。如要進一步瞭解 IPv6 需求,請參閱外部直通式網路負載平衡器總覽中的「轉送規則」。
如要將現有 VM 用做後端,請使用 gcloud compute instances network-interfaces
update
指令將 VM 更新為雙堆疊。
做為外部直通式網路負載平衡器的後端 VM 的執行個體,必須執行適當的 Linux 訪客環境、Windows 訪客環境或其他提供等效功能的處理程序。
設定執行個體
主控台
Google Cloud 控制台無法用於建立支援 IPv6 連線的雙堆疊執行個體群組。請改用 gcloud CLI 或 REST API。
建立執行個體範本
前往 Google Cloud 控制台的「Instance Templates」(執行個體範本) 頁面。
點選「建立執行個體範本」。
在「Name」(名稱) 中輸入
ig-us-template
。在「Boot disk」(開機磁碟) 專區中,確認「Image」(映像檔) 已設為 Debian 映像檔,例如 Debian GNU/Linux 12 (bookworm)。這些操作說明使用僅在 Debian 上可用的指令,例如
apt-get
。點選「進階選項」。
點選「網路」。
- 在「網路標記」中輸入
lb-tag
。 - 在「網路介面」部分,按一下「預設」介面,然後設定下列欄位:
- Network (網路):
lb-network
- Subnetwork (子網路):
lb-subnet
- 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按一下 [建立]。
建立代管執行個體群組
前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。
點選「建立執行個體群組」。
選取「New managed instance group (stateless)」(新增代管執行個體群組 (無狀態))。詳情請參閱「無狀態或有狀態的 MIG」。
在「Name」(名稱) 中輸入
ig-us-1
。在「Instance template」(執行個體範本) 中選取
ig-us-template
。在「Location」(位置) 中,選取「Single zone」(單一可用區)。
在「Region」(區域) 中選取
us-central1
。在「Zone」(可用區) 中選取
us-central1-a
。指定要在群組中建立的執行個體數量。
在本例中,請在「Autoscaling」(自動調度資源) 區段中指定下列選項:
- 針對「Autoscaling mode」(自動調度資源模式),選取
Off:do not autoscale
。 - 在「Maximum number of instances」(執行個體數量上限) 中輸入
2
。
- 針對「Autoscaling mode」(自動調度資源模式),選取
按一下 [建立]。
重複執行上述步驟,在 us-central1-c
區域中建立第二個代管執行個體群組,並加入下列規格:
* 名稱:ig-us-2
* 區域:us-central1-c
* 執行個體範本:使用上一節建立的 ig-us-template
範本。
gcloud
本指南的 gcloud
操作說明假設您使用 Cloud Shell 或已安裝 bash 的其他環境。
使用
gcloud compute instance-templates create
指令,建立含有 HTTP 伺服器的 VM 執行個體範本。如要同時處理 IPv4 和 IPv6 流量,請使用下列指令。
只有在子網路中建立 VM 時,
--ipv6-network-tier
才會設為PREMIUM
,且ipv6-access-type
設為EXTERNAL
。如果子網路的ipv6-access-type
是INTERNAL
,請省略標記。gcloud compute instance-templates create ig-us-template \ --region=us-central1 \ --network=lb-network \ --subnet=lb-subnet \ --ipv6-network-tier=PREMIUM \ --stack-type=IPv4_IPv6 \ --tags=lb-tag \ --image-family=debian-12 \ --image-project=debian-cloud \ --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'
如要處理 僅 IPv4 流量,請使用下列指令。
gcloud compute instance-templates create ig-us-template \ --region=us-central1 \ --network=lb-network \ --subnet=lb-subnet \ --tags=lb-tag \ --image-family=debian-12 \ --image-project=debian-cloud \ --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'
使用
gcloud compute instance-groups managed create
指令,在區域中建立代管執行個體群組。gcloud compute instance-groups managed create ig-us-1 \ --zone us-central1-a \ --size 2 \ --template ig-us-template
在
us-central1-c
區域中建立第二個代管執行個體群組:gcloud compute instance-groups managed create ig-us-2 \ --zone us-central1-c \ --size 2 \ --template ig-us-template
設定防火牆規則
建立防火牆規則,允許外部流量 (包括健康狀態檢查探測器) 傳送至後端執行個體。
本範例會建立防火牆規則,允許來自「所有」來源範圍的 TCP 流量,透過通訊埠 80 存取後端執行個體。如要為健康狀態檢查探測器建立專屬的防火牆規則,請使用「健康狀態檢查」總覽的「探測器 IP 範圍和防火牆規則」部分所述的來源 IP 位址範圍。
主控台
在 Google Cloud 控制台中,前往「Firewall policies」(防火牆政策) 頁面。
如要允許 IPv4 流量,請執行下列步驟:
- 點按「建立防火牆規則」。
- 在「Name」(名稱) 中輸入
allow-network-lb-ipv4
。 - 在「Network」(網路) 清單中選取「
lb-network
」。 - 在「Targets」(目標) 中選取 Specified target tags。
- 在「Target tags」(目標標記) 欄位中輸入
lb-tag
。 - 在「Source filter」中選取「IPv4 ranges」。
- 將「Source IPv4 ranges」(來源 IPv4 範圍) 設為
0.0.0.0/0
。這可允許來自任何來源的 IPv4 流量。這也讓 Google 的健康狀態檢查探針可連線至後端執行個體。 - 在「Specified protocols and ports」(指定的通訊協定和通訊埠) 中,選取「TCP」核取方塊,然後輸入
80
。 - 按一下「建立」,新的防火牆規則可能需要一些時間才會顯示在Google Cloud 主控台中,或者您可能需要按一下「Refresh」才能看到規則。
如要允許 IPv6 流量,請執行下列步驟:
- 再次按一下「建立防火牆規則」。
- 在「Name」(名稱) 中輸入
allow-network-lb-ipv6
。 - 在「Network」(網路) 清單中選取「
lb-network
」。 - 在「Targets」(目標) 中選取 Specified target tags。
- 在「Target tags」(目標標記) 欄位中輸入
lb-tag
。 - 在「Source filter」中選取「IPv6 範圍」。
- 將「Source IPv6 ranges」(來源 IPv6 範圍) 設為
::/0
。這會允許來自任何來源的 IPv6 流量。這也讓 Google 的健康狀態檢查探針可連線至後端執行個體。 - 在「Specified protocols and ports」(指定的通訊協定和通訊埠) 中,選取「TCP」TCP* 核取方塊,然後輸入
80
。 - 按一下「建立」,新的防火牆規則可能需要一些時間才會顯示在主控台中,或者您可能需要按一下「Refresh」才能看到規則。
gcloud
如要允許 IPv4 流量,請執行下列指令:
gcloud compute firewall-rules create allow-network-lb-ipv4 \ --network=lb-network \ --target-tags=lb-tag \ --allow=tcp:80 \ --source-ranges=0.0.0.0/0
如要允許 IPv6 流量,請執行下列指令:
gcloud compute firewall-rules create allow-network-lb-ipv6 \ --network=lb-network \ --target-tags=lb-tag \ --allow=tcp:80 \ --source-ranges=::/0
設定負載平衡器
接下來,請設定負載平衡器。
設定負載平衡器時,虛擬機器 (VM) 執行個體會收到預定傳送至您設定之靜態外部 IP 位址的封包。如果您是使用 Compute Engine 提供的映像檔,則會將執行個體自動設定為處理這個 IP 位址。如果您是使用任何其他映像檔,則必須將這個位址設定為 eth0
上的別名,或每個執行個體上的回送。
如要設定負載平衡器,請按照下列操作說明操作。
主控台
開始設定
前往 Google Cloud 控制台的「Load balancing」(負載平衡)頁面。
- 點選「建立負載平衡器」。
- 在「負載平衡器類型」部分,選取「網路負載平衡器 (TCP/UDP/SSL)」,然後點選「下一步」。
- 在「直通或使用 Proxy」部分,選取「直通式負載平衡器」,然後點選「下一步」。
- 在「公開或內部」部分,選取「公開 (外部)」,然後點選「下一步」。
- 按一下 [設定]。
後端設定
- 在「Create external passthrough Network Load Balancer」(建立外部直通式網路負載平衡器) 頁面中,輸入新負載平衡器的名稱
tcp-network-lb
。 - 在「Region」(區域) 中選取
us-central1
。 - 按一下「後端設定」。
- 在「Backend configuration」(後端設定) 頁面中進行以下變更:
- 針對「New Backend」,選取「IP stack type」。如果您建立雙重堆疊後端來處理 IPv4 和 IPv6 流量,請選取「IPv4 和 IPv6 (雙重堆疊)」。如要只處理 IPv4 流量,請選取「IPv4(單一堆疊)」。
- 在「Instance group」清單中選取
ig-us-1
,然後按一下「Done」。 - 按一下「Add backend」(新增後端),然後重複執行這項步驟來新增
ig-us-2
。 - 在「Health check」(健康狀態檢查) 部分,按一下「Create a health check」(建立健康狀態檢查) 或「Create another health check」(建立其他健康狀態檢查),然後輸入下列資訊:
- Name (名稱):
tcp-health-check
- Protocol (通訊協定):
TCP
- Port (通訊埠):
80
- Name (名稱):
- 按一下 [儲存]。
- 繼續操作之前,請先確認「後端設定」旁是否有藍色勾號。
前端設定
- 按一下「前端設定」。
- 在「Name」(名稱) 中輸入
network-lb-forwarding-rule
。 - 如要處理 IPv4 流量,請按照下列步驟操作:
- 在「IP 版本」部分,選取「IPv4」。
- 在「Internal IP purpose」(內部 IP 用途) 區段的「IP address」(IP 位址) 清單中,選取「Create IP address」(建立 IP 位址)。
- 在「Reserve a new static IP address」頁面中,輸入「Name」的值
network-lb-ipv4
。 - 按一下「保留」。
- 在「Reserve a new static IP address」頁面中,輸入「Name」的值
- 在「Ports」(通訊埠) 部分,選擇「Single」(單一)。在「Port number」(通訊埠編號) 中輸入
80
。 - 按一下 [完成]。
如要處理 IPv6 流量,請按照下列步驟操作:
- 在「IP 版本」中,選取「IPv6」。
- 在「Subnetwork」(子網路) 中,選取「lb-subnet」。
- 在「IPv6 range」(IPv6 範圍) 清單中,選取「Create IP address」(建立 IP 位址)。
- 在「Reserve a new static IP address」頁面中,輸入「Name」的值
network-lb-ipv6
。 - 按一下「保留」。
- 在「Reserve a new static IP address」頁面中,輸入「Name」的值
- 在「Ports」(通訊埠) 部分,選取「Single」(單一)。在「Port number」(通訊埠編號) 中輸入
80
。 - 按一下 [完成]。
繼續操作之前,請先確認「Frontend configuration」(前端設定) 左邊有無藍色勾號圓圈,以驗證設定是否成功。
檢閱設定
- 按一下「檢查並完成」。
- 查看負載平衡器設定。
- 選用:按一下「等效程式碼」,查看用於建立負載平衡器的 REST API 要求。
按一下 [建立]。
在負載平衡頁面的新負載平衡器的「Backend」欄中,確認有綠色勾號,表示新負載平衡器健康狀態良好。
gcloud
保留靜態外部 IP 位址。
適用於 IPv4 流量
為負載平衡器建立靜態外部 IPv4 位址。
gcloud compute addresses create network-lb-ipv4 \ --region us-central1
針對 IPv6 流量
為負載平衡器建立靜態外部 IPv6 位址範圍。使用的子網路必須是具有外部 IPv6 範圍的雙重堆疊子網路。
gcloud compute addresses create network-lb-ipv6 \ --region us-central1 \ --subnet lb-subnet \ --ip-version IPV6 \ --endpoint-type NETLB
建立 TCP 健康狀態檢查。
gcloud compute health-checks create tcp tcp-health-check \ --region us-central1 \ --port 80
建立後端服務。
gcloud compute backend-services create network-lb-backend-service \ --protocol TCP \ --health-checks tcp-health-check \ --health-checks-region us-central1 \ --region us-central1
將執行個體群組新增至後端服務。
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
請根據要處理的 IPv4 流量或 IPv6 流量建立轉送規則。建立這兩種轉送規則,以便處理這兩種流量。
適用於 IPv4 流量
建立轉送規則,將傳入的 TCP 流量轉送至後端服務。使用步驟 1 中保留的 IPv4 位址,做為負載平衡器的靜態外部 IP 位址。
gcloud compute forwarding-rules create network-lb-forwarding-rule-ipv4 \ --load-balancing-scheme EXTERNAL \ --region us-central1 \ --ports 80 \ --address network-lb-ipv4 \ --backend-service network-lb-backend-service
針對 IPv6 流量
建立轉送規則來處理 IPv6 流量。使用步驟 1 中保留的 IPv6 位址範圍,做為負載平衡器的靜態外部 IP 位址。使用的子網路必須是具有外部 IPv6 子網路範圍的雙重堆疊子網路。
gcloud compute forwarding-rules create network-lb-forwarding-rule-ipv6 \ --load-balancing-scheme EXTERNAL \ --region us-central1 \ --network-tier PREMIUM \ --ip-version IPV6 \ --subnet lb-subnet \ --address network-lb-ipv6 \ --ports 80 \ --backend-service network-lb-backend-service
測試負載平衡器
負載平衡服務已設定完成,您現在可以開始將流量傳送至負載平衡器的外部 IP 位址,並觀察流量是否分散到後端執行個體。
查詢負載平衡器的外部 IP 位址
主控台
前往 Google Cloud 控制台的「負載平衡元件」負載平衡頁面。
在「Forwarding Rules」分頁中,找出負載平衡器使用的轉送規則。
在「外部 IP 位址」欄中,請注意列出的外部 IP 位址。
gcloud:IPv4
輸入下列指令,查看負載平衡器所用 network-lb-forwarding-rule
轉送規則的外部 IPv4 位址。
gcloud compute forwarding-rules describe network-lb-forwarding-rule-ipv4 \ --region us-central1
gcloud:IPv6
輸入下列指令,查看負載平衡器所用 network-lb-forwarding-rule
轉送規則的外部 IPv6 位址。
gcloud compute forwarding-rules describe network-lb-forwarding-rule-ipv6 \ --region us-central1
將流量傳送至負載平衡器
使用 curl
聯絡負載平衡器的 IP 位址,向負載平衡器發出網路要求。
在具備 IPv4 連線能力的用戶端上,執行下列指令:
while true; do curl -m1 IPV4_ADDRESS; done
在具備 IPv6 連線能力的用戶端上執行下列指令:
while true; do curl -m1 http://IPV6_ADDRESS; done
舉例來說,如果指派的 IPv6 位址為
[2001:db8:1:1:1:1:1:1/96]:80
,指令會類似以下:while true; do curl -m1 http://[2001:db8:1:1:1:1:1:1]:80; done
請注意 curl
指令傳回的文字。產生回應的後端 VM 的名稱會顯示在該文字中;例如:Page served
from: VM_NAME
curl
指令的回應會在後端執行個體之間隨機輪流出現。如果一開始的回應失敗,在您重試之前,可能需要等候大約 30 秒,設定才會完整載入且執行個體才會標示為健康狀態良好。
其他設定選項
本節會延伸說明設定範例,提供進一步自訂外部直通式網路負載平衡器的操作說明。這些工作為選用項目。您可以按任何順序執行這些工作。
設定工作階段相依性
範例設定會建立後端服務,並停用工作階段相依性 (值設為 NONE
)。本節說明如何更新後端服務,以變更負載平衡器的工作階段相依性設定。
如要瞭解支援的工作階段相依性類型,請參閱「工作階段相依性選項」。
為 UDP 負載平衡器設定工作階段相依性。主控台
前往 Google Cloud 控制台的「Load balancing」(負載平衡)頁面。
在「負載平衡器」分頁中,按一下後端服務的名稱,然後點選「編輯」。
在「Edit external passthrough Network Load Balancer」(編輯外部直通式網路負載平衡器) 頁面上,按一下「Backend configuration」(後端設定)。
從「工作階段相依性」清單中選取所需選項。
按一下 [Update]。
gcloud
使用下列 gcloud
指令更新後端服務的工作階段相依性:
gcloud compute backend-services update BACKEND_SERVICE \ --region=REGION \ --session-affinity=SESSION_AFFINITY_OPTION
將預留位置替換為有效值:
BACKEND_SERVICE
:您要更新的後端服務SESSION_AFFINITY_OPTION
:您要設定的工作階段相依性選項如需外部直通式網路負載平衡器支援的值清單,請參閱工作階段親和力選項。
設定連線追蹤政策
範例設定會建立後端服務,並為其連線追蹤政策設定預設值。本節說明如何更新後端服務,以變更負載平衡器的預設連線追蹤政策。
連線追蹤政策包含下列設定:
- 連線追蹤模式
- 持續連線至健康狀態不良的後端
- 閒置逾時 (60 秒,無法設定)
gcloud
使用下列 gcloud compute backend-services
指令更新後端服務的連線追蹤政策:
gcloud compute backend-services update BACKEND_SERVICE \ --region=REGION \ --tracking-mode=TRACKING_MODE \ --connection-persistence-on-unhealthy-backends=CONNECTION_PERSISTENCE_BEHAVIOR
將預留位置替換為有效值:
BACKEND_SERVICE
:您要更新的後端服務TRACKING_MODE
:用於處理傳入封包的連線追蹤模式。如需支援的值清單,請參閱「追蹤模式」。CONNECTION_PERSISTENCE_BEHAVIOR
:後端健康狀態不佳時的連線持續性行為。如需支援的值清單,請參閱「持續連線至健康狀態不良的後端」。
設定流量導向
本節說明如何更新負載平衡器的前端設定,以便設定以來源 IP 為準的流量導向。如要進一步瞭解流量引導的運作方式,請參閱「流量引導」。
這些操作說明假設您已建立父項基本轉送規則。這個範例會建立第二個轉送規則 (即轉向轉送規則),其 IP 位址、IP 通訊協定和通訊埠都與父項相同。這個轉向轉送規則會使用來源 IP 範圍進行設定,讓您自訂來自這些來源 IP 範圍的封包轉送方式。
gcloud
使用下列指令建立指向後端服務的轉送規則:
gcloud compute forwarding-rules create STEERING_FORWARDING_RULE_BS \ --load-balancing-scheme=EXTERNAL \ --backend-service=BACKEND_SERVICE \ --address=LOAD_BALANCER_VIP \ --ip-protocol=IP_PROTOCOL \ --ports=PORTS \ --region=REGION \ --source-ip-ranges=SOURCE_IP_ADDRESS_RANGES
使用下列指令建立指向目標執行個體的轉向轉送規則:
gcloud compute forwarding-rules create STEERING_FORWARDING_RULE_TI \ --load-balancing-scheme=EXTERNAL \ --target-instance=TARGET_INSTANCE \ --address=LOAD_BALANCER_VIP \ --ip-protocol=IP_PROTOCOL \ --ports=PORTS \ --region=REGION \ --source-ip-ranges=SOURCE_IP_ADDRESS_RANGES
將預留位置替換為有效值:
STEERING_FORWARDING_RULE_BS
或STEERING_FORWARDING_RULE_TI
:要建立的轉送規則名稱。BACKEND_SERVICE
或TARGET_INSTANCE
:這個轉向轉送規則會將流量傳送至的後端服務或目標執行個體名稱。即使父項轉送規則指向後端服務,您還是可以建立指向目標執行個體的轉送規則。LOAD_BALANCER_VIP
、IP_PROTOCOL
、PORTS
:分別為您建立的轉向轉送規則的 IP 位址、IP 通訊協定和通訊埠。這些設定必須與現有的基礎轉送規則相符。REGION
:您要建立的轉送規則所在的區域。SOURCE_IP_ADDRESS_RANGES
:以半形逗號分隔的 IP 位址或 IP 位址範圍清單。只有在傳入封包的來源 IP 位址落在此處設定的 IP 範圍之一時,此轉送規則才會轉送流量。
使用下列指令刪除轉送規則,您必須先刪除負載平衡器使用的所有轉向轉送規則,才能刪除負載平衡器本身。
gcloud compute forwarding-rules delete STEERING_FORWARDING_RULE \ --region=REGION
設定容錯移轉政策
如要設定容錯移轉政策,請參閱「設定外部直通式網路負載平衡器的容錯移轉功能」。
設定加權負載平衡
如要設定加權負載平衡,請參閱「設定加權負載平衡」。
使用 BYOIP 建立 IPv6 轉送規則
在前面步驟中建立的負載平衡器會設定轉送規則,其中 IP version
為 IPv4
或 IPv6
。本節提供使用自備 IP (BYOIP) 位址建立 IPv6 轉送規則的操作說明。
自備 IP 位址可讓您為 Google Cloud 資源設定及使用自己的公開 IPv6 位址。詳情請參閱「自備 IP 位址」。
開始設定使用 BYOIP 位址的 IPv6 轉送規則前,您必須完成下列步驟:
如要建立新的轉送規則,請按照下列步驟操作:
控制台
前往 Google Cloud 控制台的「Load balancing」(負載平衡)頁面。
- 按一下要修改的負載平衡器名稱。
- 按一下「編輯」圖示 。
- 按一下「前端設定」。
- 按一下 [Add frontend IP and port] (新增前端 IP 和通訊埠)。
- 在「New Frontend IP and port」(新增的前端 IP 和通訊埠) 區段中,指定下列項目:
- 選取所需的「Protocol」(通訊協定)。
- 在「IP 版本」欄位中,選取「IPv6」。
- 在「IPv6 範圍來源」欄位中,選取「BYOIP」。
- 在「IP collection」清單中,選取先前步驟中建立的子前置字串,並啟用轉送規則選項。
- 在「IPv6 範圍」欄位中輸入 IPv6 位址範圍。IPv6 位址範圍的前置字串必須與 相關聯子前置字串指定的可分配前置字串長度相符。
- 在「Ports」(通訊埠) 欄位中輸入通訊埠號碼。
- 按一下 [完成]。
- 按一下 [Update]。
gcloud
使用
gcloud compute forwarding-rules create
指令建立轉送規則:
gcloud compute forwarding-rules create FWD_RULE_NAME \ --load-balancing-scheme EXTERNAL \ --ip-protocol PROTOCOL \ --ports ALL \ --ip-version IPV6 \ --region REGION_A \ --address IPV6_CIDR_RANGE \ --backend-service BACKEND_SERVICE \ --ip-collection PDP_NAME
更改下列內容:
FWD_RULE_NAME
:轉送規則的名稱PROTOCOL
:轉送規則的 IP 通訊協定。預設為TCP
。在這個範例中,IP 通訊協定可以是TCP
或UDP
其中之一。REGION_A
:轉送規則的區域IPV6_CIDR_RANGE
:轉送規則提供的 IPv6 位址範圍。IPv6 位址範圍的前置字串必須與 相關聯子前置字串指定的可分配前置字串長度相符。BACKEND_SERVICE
:後端服務名稱PDP_NAME
:公開委派前置碼的名稱。PDP 必須是 EXTERNAL_IPV6_FORWARDING_RULE_CREATION 模式中的子前置字串
後續步驟
- 如要瞭解如何將外部直通式網路負載平衡器從目標集區後端遷移至區域性後端服務,請參閱「將外部直通式網路負載平衡器從目標集區遷移至後端服務」。
- 如要針對多個 IP 通訊協定 (支援 IPv4 和 IPv6 流量) 設定外部直通式網路負載平衡器,請參閱「針對多個 IP 通訊協定設定外部直通式網路負載平衡器」。
- 如要設定具備區域網路端點群組 (NEG) 後端的外部直通式網路負載平衡器,以便將封包轉送至 VM 執行個體的非
nic0
網路介面,請參閱「使用區域 NEG 設定外部直通式網路負載平衡器」。 - 如要使用 Google Cloud Armor 為外部直通式網路負載平衡器設定進階網路分散式阻斷服務防護功能,請參閱「設定進階網路分散式阻斷服務防護功能」。
- 如要刪除資源,請參閱「清除負載平衡器設定」一文。