區域內部 Proxy 網路負載平衡器是以 Proxy 為基礎的區域第 4 層負載平衡器,可讓您透過內部 IP 位址執行及擴充 TCP 服務流量 (您只能從相同虛擬私有雲 (VPC) 網路中的用戶端,或連線至 VPC 網路的用戶端存取這個 IP 位址)。如要讓其他虛擬私有雲網路中的用戶端使用服務,可以使用 Private Service Connect 發布服務。
本頁說明如何設定區域內部 Proxy 網路負載平衡器,以將流量負載平衡至地端或透過混合式連線連線的其他雲端環境後端。本頁面不包含設定混合式連線,將網路連線至 Google Cloud 的內容。
總覽
在本範例中,我們將使用負載平衡器,將 TCP 流量分配到位於內部部署環境或其他雲端環境的後端 VM。
在本範例中,您將設定下列部署作業:
區域性內部 Proxy 網路負載平衡器是區域性負載平衡器,所有負載平衡器元件 (後端執行個體群組、後端服務、目標 Proxy 和轉送規則) 都必須位於相同區域。
權限
如要設定混合式負載平衡,您必須具備下列權限:
開啟 Google Cloud
- 在 Google Cloud 與地端部署環境或其他雲端環境之間建立混合式連線的權限。如需必要權限清單,請參閱相關的網路連線產品說明文件。
- 具備建立混合式連線 NEG 和負載平衡器的權限。Compute 負載平衡器管理員角色 (
roles/compute.loadBalancerAdmin
) 包含執行本指南所述工作所需的權限。
地端部署環境或其他非Google Cloud 雲端環境
- 設定網路端點的權限,允許地端環境或其他雲端環境中的服務,透過Google Cloud 使用
IP:Port
組合存取。如需更多資訊,請與環境的網路管理員聯絡。 - 在內部部署環境或其他雲端環境中建立防火牆規則的權限,允許 Google 健康狀態檢查探測器連線至端點。
- 設定網路端點的權限,允許地端環境或其他雲端環境中的服務,透過Google Cloud 使用
此外,如要完成本頁的操作說明,您需要建立混合式連線 NEG、負載平衡器和區域 NEG (及其端點),做為負載平衡器的 Google Cloud型後端。
因此您必須是專案擁有者或編輯者,或是需要下列 Compute Engine 身分與存取權管理角色。
工作 | 必要角色 |
---|---|
建立網路、子網路和負載平衡器元件 | Compute 網路管理員
(roles/compute.networkAdmin ) |
新增與移除防火牆規則 | Compute 安全性管理員
(roles/compute.securityAdmin ) |
建立執行個體 | Compute 執行個體管理員
(roles/compute.instanceAdmin ) |
建立混合式連線
您的地端部署環境或其他雲端環境必須透過 Google Cloud 混合式連線連線,方法是使用 Cloud Interconnect VLAN 連結,或透過 Cloud Router 或路由器設備 VM 使用 Cloud VPN 通道。建議您使用高可用性連線。
啟用全域動態轉送的 Cloud Router 會透過邊界閘道通訊協定 (BGP) 瞭解特定端點,並將其程式化到 Google Cloud 虛擬私有雲網路中。系統不支援區域動態路由。也不支援靜態路徑。
您可以使用相同網路或相同專案中的不同虛擬私有雲網路,設定混合式網路 (Cloud Interconnect、Cloud VPN 或 Router 設備 VM) 和負載平衡器。注意事項:
如果使用不同的虛擬私有雲網路,這兩個網路必須透過虛擬私有雲網路對等互連連線,或是必須是相同 Network Connectivity Center 中樞上的 VPC 輪輻。
如果使用相同的 VPC 網路,請確保 VPC 網路的子網路 CIDR 範圍與遠端 CIDR 範圍沒有衝突。如果 IP 位址重疊,系統會優先處理子網路路徑,而非遠端連線。
如需操作說明,請參閱下列文件:
設定外部環境 Google Cloud
如要為混合式負載平衡設定地端環境或其他雲端環境,請按照下列步驟操作:
- 設定網路端點,將地端服務公開給Google Cloud (
IP:Port
)。 - 在內部部署環境或其他雲端環境中設定防火牆規則。
- 設定 Cloud Router,向您的私有環境通告特定必要路徑。
設定網路端點
設定混合式連線後,您可以使用 IP:port
組合,在內部部署環境或其他雲端環境中,設定一或多個可透過 Cloud Interconnect、Cloud VPN 或路由器設備連線的網路端點。這個IP:port
組合會設定為混合式連線 NEG 的一或多個端點,並在稍後的程序中建立。 Google Cloud
如果 IP 端點有多個路徑,路由會遵循Cloud Router 總覽中說明的行為。
設定防火牆規則
您必須在內部部署環境或其他雲端環境中建立下列防火牆規則:
- 在內部部署或其他雲端環境中建立防火牆允許輸入規則,允許來自該區域僅限 Proxy 的子網路的流量連上端點。
混合式 NEG 不必允許來自 Google 健康狀態檢查探測範圍的流量。不過,如果您在單一後端服務中同時使用混合式和區域 NEG,則必須允許區域 NEG 接收來自 Google 健康狀態檢查探測範圍的流量。
通告路徑
設定 Cloud Router,向地端部署環境或其他雲端環境通告下列自訂 IP 範圍:
- 區域僅限 Proxy 子網路的範圍。
設定 Google Cloud 環境
請務必在下列步驟中使用相同的虛擬私有雲網路 (在本程序中稱為 NETWORK),該網路用於設定環境之間的混合式連線。您可以從這個網路選取任何子網路,保留負載平衡器的 IP 位址並建立負載平衡器。這個子網路在本程序中稱為 LB_SUBNET。
此外,請確認使用的區域 (在本程序中稱為 REGION) 與建立 Cloud VPN 通道或 Cloud Interconnect VLAN 連結時使用的區域相同。
設定僅限 Proxy 的子網路
僅限 Proxy 的子網路提供一組 IP 位址,供 Google 代表您執行 Envoy Proxy。Proxy 會終止來自用戶端的連線,並建立與後端的新連線。
NETWORK 虛擬私有雲網路的 REGION 區域中,所有 Envoy 型區域負載平衡器都會使用僅限 Proxy 的子網路。
每個地區和每個虛擬私有雲網路只能有一個有效的僅限 Proxy 子網路。如果這個區域已有僅限 Proxy 的子網路,則可略過這個步驟。
主控台
如果您使用 Google Cloud 控制台,可以稍後在「Load balancing」(負載平衡) 頁面中建立僅限 Proxy 的子網路。
如要立即建立僅限 Proxy 的子網路,請按照下列步驟操作:
在 Google Cloud 控制台中,前往「VPC networks」(虛擬私有雲網路) 頁面。
前往用於設定環境間混合連線的網路。
按一下 [新增子網路]。
輸入「名稱」:PROXY_ONLY_SUBNET_NAME。
選取「區域」REGION。
將「用途」設為「區域受管理 Proxy」。
輸入「IP address range」(IP 位址範圍):PROXY_ONLY_SUBNET_RANGE。
按一下「新增」。
gcloud
使用 gcloud compute networks subnets
create
指令建立僅限 Proxy 的子網路。
gcloud compute networks subnets create PROXY_ONLY_SUBNET_NAME \ --purpose=REGIONAL_MANAGED_PROXY \ --role=ACTIVE \ --region=REGION \ --network=NETWORK \ --range=PROXY_ONLY_SUBNET_RANGE
保留負載平衡器的 IP 位址
根據預設,每個轉送規則會使用一個 IP 位址。您可以預留共用 IPv4 位址,以便透過多個轉送規則使用相同的 IPv4 位址。不過,如要使用 Private Service Connect 發布負載平衡器,請勿為轉送規則使用共用 IPv4 位址。
如要為負載平衡器保留靜態內部 IPv4 位址,請參閱「保留新的靜態內部 IPv4 或 IPv6 位址」。
設定混合式連線 NEG
建立 NEG 時,請使用 ZONE,盡量縮短 Google Cloud 與內部部署或其他雲端環境之間的地理距離。舉例來說,如果您在德國法蘭克福的內部部署環境中代管服務,建立 NEG 時可以指定 europe-west3-a
Google Cloud 可用區。
此外,用於建立 NEG 的 ZONE 應與 Cloud VPN 通道或 Cloud Interconnect VLAN 連結設定的區域相同,以利混合式連線。
如要瞭解可用的區域和可用區,請參閱 Compute Engine 說明文件:可用的區域和可用區。
主控台
如要建立混合式連線 NEG,請按照下列步驟操作:
前往 Google Cloud 控制台的「Network endpoint groups」(網路端點群組) 頁面。
按一下「建立網路端點群組」。
輸入混合式 NEG 的「名稱」。在本程序中稱為「HYBRID_NEG_NAME」。
選取「網路端點群組類型」:混合式連線網路端點群組 (可用區)。
選取「網路」:NETWORK
選取「子網路」:LB_SUBNET
選取「區域」:HYBRID_NEG_ZONE
輸入「預設通訊埠」。
按一下 [建立]。
將端點新增至混合式連線 NEG:
前往 Google Cloud 控制台的「Network endpoint groups」(網路端點群組) 頁面。
按一下上一個步驟建立的網路端點群組「名稱」 (HYBRID_NEG_NAME)。畫面上會顯示「網路端點群組詳細資料」頁面。
在「Network endpoints in this group」(這個群組中的網路端點) 區段中,按一下 [Add network endpoint] (新增網路端點]。畫面會出現「Add network endpoint」(新增網路端點) 頁面。
輸入新網路端點的「IP address」(IP 位址)。
選擇「Port type」(通訊埠類型)。
- 如果您選取「預設」,則端點會使用網路端點群組中所有端點的預設通訊埠。
- 如果選取「自訂」,您可以輸入端點要使用的其他「通訊埠編號」。
如要新增更多端點,請按一下「新增網路端點」,然後重複以上步驟。
新增所有非Google Cloud 端點後,按一下「建立」。
gcloud
使用
gcloud compute network-endpoint-groups create
指令建立混合式連線 NEG。gcloud compute network-endpoint-groups create HYBRID_NEG_NAME \ --network-endpoint-type=NON_GCP_PRIVATE_IP_PORT \ --zone=HYBRID_NEG_ZONE \ --network=NETWORK
將地端 IP:Port 端點新增至混合 NEG:
gcloud compute network-endpoint-groups update HYBRID_NEG_NAME \ --zone=HYBRID_NEG_ZONE \ --add-endpoint="ip=ENDPOINT_IP_ADDRESS,port=ENDPOINT_PORT"
您可以使用這項指令,新增先前在內部部署或雲端環境中設定的網路端點。
視需要重複執行 --add-endpoint
。
如有需要,您可以重複執行這些步驟,建立多個混合 NEG。
設定負載平衡器
主控台
開始設定
前往 Google Cloud 控制台的「Load balancing」(負載平衡)頁面。
- 點選「建立負載平衡器」。
- 在「負載平衡器類型」部分,選取「網路負載平衡器 (TCP/UDP/SSL)」,然後點選「下一步」。
- 在「Proxy or passthrough」(直通或使用 Proxy) 部分,選取「Proxy load balancer」(Proxy 負載平衡器),然後點選「Next」(下一步)。
- 在「公開或內部」部分,選取「內部」,然後點選「下一步」。
- 在「Cross-region or single region deployment」(跨區域或單一區域部署) 部分,選取「Best for regional workloads」(最適合區域工作負載),然後點選「Next」(下一步)。
- 按一下「Configure」(設定)。
基本設定
- 在「Name」(名稱) 中輸入負載平衡器的名稱。
- 選取「區域」:REGION。
- 選取「網路」:NETWORK。
保留僅限 Proxy 子網路
如要保留僅限 Proxy 的子網路,請按照下列步驟操作:
- 按一下「保留子網路」。
- 輸入「Name」(名稱):PROXY_ONLY_SUBNET_NAME。
- 輸入「IP address range」(IP 位址範圍):PROXY_ONLY_SUBNET_RANGE。
- 按一下「新增」。
後端設定
- 按一下「後端設定」。
- 在「Backend type」(後端類型) 部分,選取「Hybrid connectivity network endpoint group (Zonal)」(混合式連線網路端點群組 (可用區))。
- 在「Protocol」(通訊協定) 欄中,選取「TCP」。
- 在「健康狀態檢查」清單中,按一下「建立健康狀態檢查」,然後輸入下列資訊:
- 在「Name」(名稱) 欄位中,輸入健康狀態檢查的名稱。
- 在「通訊協定」清單中,選取「TCP」。
- 在「Port」(通訊埠) 欄位中輸入
80
。
- 點選「建立」。
- 在「New backend」(新的後端) 下方,選取先前建立的混合 NEG:HYBRID_NEG_NAME。或者,您也可以按一下「建立網路端點群組」,立即建立混合式 NEG。如需設定 NEG 的指南,請參閱「設定混合式 NEG」。
- 保留其餘預設值,然後按一下「完成」。
- 在 Google Cloud 控制台中,確認「後端設定」旁顯示勾號。如未顯示,請重新檢查一遍,確認是否已完成所有步驟。
前端設定
- 按一下「前端設定」。
- 輸入轉送規則的「Name」(名稱)。
- 在「Subnetwork」(子網路) 中,選取 LB_SUBNET。
- 在「IP address」(IP 位址) 部分,選取 LB_IP_ADDRESS。
- 在「Port number」(通訊埠編號) 中,輸入介於 1 至 65535 之間的任一通訊埠編號。轉送規則只會轉送目的地通訊埠相符的封包。
- 只有在Proxy 通訊協定可與地端或其他雲端端點上執行的服務搭配運作時,才啟用這項通訊協定。舉例來說,PROXY 通訊協定不適用於 Apache HTTP Server 軟體。詳情請參閱Proxy 通訊協定。
- 按一下 [完成]。
- 在 Google Cloud 控制台中,確認「Frontend configuration」(前端設定) 旁顯示勾號。如未顯示,請重新檢查一遍,確認您是否已完成上述所有步驟。
檢查並完成
- 按一下 [Review and finalize] (檢查並完成)。
- 重新檢查一遍您的設定。
- 點選「建立」。
gcloud
為後端建立地區健康狀態檢查。
gcloud compute health-checks create tcp TCP_HEALTH_CHECK_NAME \ --region=REGION \ --use-serving-port
混合式 NEG 後端的健康狀態檢查探測來自僅限 Proxy 子網路中的 Envoy Proxy。
建立後端服務。
gcloud compute backend-services create BACKEND_SERVICE_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --protocol=TCP \ --region=REGION \ --health-checks=TCP_HEALTH_CHECK_NAME \ --health-checks-region=REGION
將混合式 NEG 後端新增至後端服務。
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --network-endpoint-group=HYBRID_NEG_NAME \ --network-endpoint-group-zone=HYBRID_NEG_ZONE \ --region=REGION \ --balancing-mode=CONNECTION \ --max-connections=MAX_CONNECTIONS
針對
MAX_CONNECTIONS
,輸入後端應處理的並行連線數量上限。建立目標 TCP Proxy。
gcloud compute target-tcp-proxies create TARGET_TCP_PROXY_NAME \ --backend-service=BACKEND_SERVICE_NAME \ --region=REGION
建立轉寄規則。
使用
gcloud compute forwarding-rules create
指令建立轉送規則。將 FWD_RULE_PORT 替換成介於 1 至 65535 之間的單一通訊埠號碼。 轉送規則只會轉送目的地通訊埠相符的封包。
gcloud compute forwarding-rules create FORWARDING_RULE \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=NETWORK \ --subnet=LB_SUBNET \ --address=LB_IP_ADDRESS \ --ports=FWD_RULE_PORT \ --region=REGION \ --target-tcp-proxy=TARGET_TCP_PROXY_NAME \ --target-tcp-proxy-region=REGION
測試負載平衡器
如要測試負載平衡器,請在與負載平衡器相同的地區中建立用戶端 VM。然後將流量從用戶端傳送至負載平衡器。
建立用戶端 VM
在與負載平衡器相同的地區中建立用戶端 VM (client-vm
)。
主控台
前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面。
點選「建立執行個體」。
將「Name」(名稱) 設定為
client-vm
。將「Zone」(區域) 設為 CLIENT_VM_ZONE。
點選「進階選項」。
按一下「網路」並設定下列欄位:
- 在「網路標記」部分輸入
allow-ssh
。 - 在「網路介面」中,選取下列項目:
- Network (網路):NETWORK
- Subnet (子網路):LB_SUBNET
- 在「網路標記」部分輸入
點選「建立」。
gcloud
用戶端 VM 必須與負載平衡器位於相同的 VPC 網路和區域。不一定要位於相同子網路或區域。用戶端使用的子網路與後端 VM 相同。
gcloud compute instances create client-vm \ --zone=CLIENT_VM_ZONE \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=allow-ssh \ --subnet=LB_SUBNET
允許傳送到測試 VM 的 SSH 流量
在本範例中,您會建立下列防火牆規則:
fw-allow-ssh
:輸入規則,允許在 TCP 通訊埠 22 上來自任何位址的連入 SSH 連線。您可以為這項規則選擇較嚴格的來源 IP 範圍;例如,您可以僅指定要從其中啟動 SSH 工作階段之系統的 IP 範圍。本範例使用目標標記allow-ssh
來識別應該適用此規則的測試用戶端 VM。
主控台
- 在 Google Cloud 控制台中,前往「Firewall policies」(防火牆政策) 頁面。 前往「防火牆政策」頁面
- 按一下「建立防火牆規則」,建立允許連入 SSH 連線的規則:
- Name (名稱):
fw-allow-ssh
- Network (網路):NETWORK
- Priority (優先順序):
1000
- 「Direction of traffic」(流量方向):[ingress] (輸入)
- 「Action on match」(相符時執行的動作):[allow] (允許)
- 「Target」(目標):指定的目標標記
- 「Target tags」(目標標記):
allow-ssh
- 來源篩選器:IPv4 範圍
- Source IPv4 ranges (來源 IPv4 範圍):
0.0.0.0/0
- 「通訊協定和通訊埠」:選擇「指定的通訊協定和通訊埠」,然後輸入
tcp:22
。 - 點選「建立」。
- Name (名稱):
gcloud
建立
fw-allow-ssh
防火牆規則,允許與具有allow-ssh
網路標記的 VM 建立 SSH 連線。gcloud compute firewall-rules create fw-allow-ssh \ --network=NETWORK \ --action=allow \ --direction=ingress \ --target-tags=allow-ssh \ --rules=tcp:22
將流量傳送至負載平衡器
您已設定好負載平衡器,現在可以測試將流量傳送至負載平衡器的 IP 位址。
透過 SSH 連線至用戶端執行個體。
gcloud compute ssh client-vm \ --zone=CLIENT_VM_ZONE
確認負載平衡器是否正常提供後端主機名稱。
使用
compute addresses describe
指令查看負載平衡器的 IP 位址:gcloud compute addresses describe LB_IP_ADDRESS \ --region=REGION
記下 IP 位址。
將流量傳送至負載平衡器,並使用建立負載平衡器轉送規則時指定的 IP 位址和通訊埠。測試混合式 NEG 後端是否回應要求,取決於在非Google Cloud 端點上執行的服務。
選用:使用 Private Service Connect 發布服務
透過混合式連線,區域性內部 Proxy 網路負載平衡器可讓您在 VPC 網路中,向用戶端提供地端部署或其他雲端環境中代管的服務。
如要在其他虛擬私有雲網路中提供混合式服務,可以使用 Private Service Connect 發布服務。在區域內部 Proxy 網路負載平衡器前方放置服務連結,即可讓其他虛擬私有雲網路中的用戶端,連線至在內部部署或其他雲端環境中執行的混合式服務。
後續步驟
- 如要設定區域性內部 Proxy 網路負載平衡器的監控功能,請參閱「使用監控功能」。
- 如要瞭解區域性內部 Proxy 網路負載平衡器的運作方式,請參閱區域性內部 Proxy 網路負載平衡器總覽。
- 清除負載平衡器設定。