本頁說明如何部署地區內部應用程式負載平衡器,將流量平衡至可透過混合式連線存取的網路端點 (位於內部或其他公用雲端)。
如果您尚未這樣做,請參閱混合式連線 NEG 簡介,瞭解設定混合式負載平衡所需的網路需求。
設定總覽
本頁範例會設定以下部署作業:
您必須先設定混合式連線,才能設定混合式負載平衡部署作業。這個頁面不包含混合式連線設定。
請根據您選擇的混合式連線產品 (Cloud VPN 或 Cloud Interconnect (專屬或合作夥伴)) 使用相關產品說明文件。
權限
如要設定混合式負載平衡,您必須具備下列權限:
開啟 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 Router 或路由器設備 VM 搭配 Cloud Interconnect VLAN 連結或 Cloud VPN 通道。建議您使用高可用性連線。
啟用全域動態轉送功能的 Cloud Router 會透過邊界閘道通訊協定 (BGP) 瞭解特定端點,並將其編入 Google Cloud VPC 網路。不支援區域動態路由。也不支援靜態路徑。
您可以使用相同的網路或同一個專案中的不同虛擬私有雲網路,設定混合式網路 (Cloud Interconnect 或 Cloud VPN 或 Router 應用程式 VM) 和負載平衡器。請注意以下事項:
如果您使用不同的 VPC 網路,則這兩個網路必須透過 VPC 網路對等互連連線,或是必須是位於同一個 Network Connectivity Center 中樞的 VPC 輻條。
如果您使用相同的虛擬私有雲網路,請確認虛擬私有雲網路的子網路 CIDR 範圍不會與遠端 CIDR 範圍衝突。如果 IP 位址重疊,系統會優先使用子網路路徑,而不是遠端連線。
如需操作說明,請參閱下列文件:
設定外部環境 Google Cloud
請按照下列步驟設定混合式負載平衡的內部部署環境或其他雲端環境:
- 設定網路端點,將內部部署服務公開給Google Cloud (
IP:Port
)。 - 在內部部署環境或其他雲端環境中設定防火牆規則。
- 設定 Cloud Router 向私人環境通告特定必要路徑。
設定網路端點
設定混合式連線後,您可以在內部部署環境或其他雲端環境中,使用 IP:port
組合設定一或多個網路端點,以便透過 Cloud Interconnect 或 Cloud VPN 或 Router 應用程式存取。這個 IP:port
組合會設為混合式連線 NEG 的一或多個端點, Google Cloud 稍後會在這個程序中建立。
如果 IP 端點有多個路徑,路由會遵循 Cloud Router 簡介中所述的行為。
設定防火牆規則
您必須在內部部署環境或其他雲端環境中建立下列防火牆規則:
- 在內部部署或其他雲端環境中建立防火牆允許輸入規則,允許來自該區域僅限 Proxy 的子網路的流量連上端點。
混合型 NEG 不需要允許來自 Google 健康狀態檢查探測範圍的流量。不過,如果您在單一後端服務中同時使用混合式和區域性 NEG,則必須允許區域性 NEG 從 Google 健康狀態檢查探針範圍接收流量。
宣傳路線
設定 Cloud Router 向內部部署環境或其他雲端環境通告下列自訂 IP 範圍:
- 區域的僅限 Proxy 子網路範圍。
設定 Google Cloud 環境
在下列步驟中,請務必使用用於設定兩個環境之間混合式連線的相同虛擬私有雲網路 (在本程序中稱為 NETWORK)。
此外,請確認使用的區域 (在本程序中稱為 REGION) 與用於建立 Cloud VPN 通道或 Cloud Interconnect VLAN 連結的區域相同。
設定僅限 Proxy 的子網路
這個 Proxy 專用子網路會用於 REGION 區域中所有區域 Envoy 型負載平衡器。
主控台
- 在 Google Cloud 控制台中,前往「VPC Networks」(虛擬私有雲網路) 頁面。
前往「VPC networks」(虛擬私有雲網路) - 前往用於在環境之間設定混合連線的網路。
- 按一下 [新增子網路]。
- 輸入「名稱」:PROXY_ONLY_SUBNET_NAME。
- 選取「Region」(區域):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
設定負載平衡器子網路
這個子網路用於建立負載平衡器的區域 NEG 後端、前端和內部 IP 位址。
Cloud 控制台
- 在 Google Cloud 控制台中,前往「VPC Networks」(虛擬私有雲網路) 頁面。
前往「VPC networks」(虛擬私有雲網路) - 前往用於設定環境間混合式連線的網路。
- 在「Subnets」(子網路) 區段中:
- 將「Subnet creation mode」(子網路建立模式) 設為 [Custom] (自訂)。
- 在「New subnet」(新的子網路) 區段中,輸入以下資訊:
- Name (名稱):LB_SUBNET_NAME
- 區域:REGION
- IP address range (IP 位址範圍):LB_SUBNET_RANGE
- 按一下 [完成]。
- 按一下 [建立]。
gcloud
在用於在環境之間設定混合式連線的網路中建立子網路。
gcloud compute networks subnets create LB_SUBNET_NAME \ --network=NETWORK \ --range=LB_SUBNET_RANGE \ --region=REGION
保留負載平衡器的 IP 位址
根據預設,每個轉送規則都會使用一個 IP 位址。您可以預留共用 IP 位址,讓您在多個轉送規則中使用相同的 IP 位址。不過,如果您想使用 Private Service Connect 發布負載平衡器,請勿將共用 IP 位址用於轉送規則。
主控台
您可以使用Google Cloud 主控台保留獨立的內部 IP 位址。
- 前往「VPC networks」(VPC 網路) 頁面。
- 按一下用於設定環境之間混合式連線的網路。
- 按一下「Static internal IP addresses」(靜態內部 IP 位址),然後點選「Reserve static address」(預留靜態位址)。
- 輸入「名稱」:LB_IP_ADDRESS。
- 在「子網路」中,選取 LB_SUBNET_NAME。
- 如要指定要保留的 IP 位址,請在「Static IP address」(靜態 IP 位址) 下方選取「Let me choose」(自行選擇),然後填入「Custom IP address」(自訂 IP 位址)。否則,系統會自動在子網路中指派 IP 位址。
- 如果您想將這個 IP 位址用於多個轉送規則,請在「用途」下方選擇「共用」。
- 按一下「預訂」,即可完成程序。
gcloud
使用 gcloud CLI 執行
compute addresses create
指令:gcloud compute addresses create LB_IP_ADDRESS \ --region=REGION \ --subnet=LB_SUBNET_NAME \
使用
compute addresses describe
指令查看已分配的 IP 位址:gcloud compute addresses describe LB_IP_ADDRESS \ --region=REGION
如果您想使用相同的 IP 位址搭配多個轉送規則,請指定
--purpose=SHARED_LOADBALANCER_VIP
。
為區域性 NEG 建立防火牆規則
在本範例中,您會為 Google Cloud上的區域 NEG 後端建立下列防火牆規則:
fw-allow-health-check
:輸入規則,適用於要進行負載平衡的執行個體,可允許來自Google Cloud 健康狀態檢查系統 (130.211.0.0/22
和35.191.0.0/16
) 的流量。本範例會使用目標標記allow-health-check
來識別應套用此規則的後端 VM。混合型 NEG 不需要允許來自 Google 健康狀態檢查探測範圍的流量。不過,如果您在單一後端服務中同時使用混合式和區域性 NEG,則必須允許區域性 NEG 從 Google 健康狀態檢查探針範圍接收流量。fw-allow-ssh
:輸入規則,可在 TCP 通訊埠 22 上允許來自任何位址的連入 SSH 連線。您可以為這項規則選擇較嚴格的來源 IP 範圍;例如,您可以僅指定要從其中啟動 SSH 工作階段之系統的 IP 範圍。本範例會使用目標標記allow-ssh
來識別應套用此規則的 VM。fw-allow-proxy-only-subnet
:輸入規則,允許來自僅限 Proxy 子網路的連線傳送至後端。
主控台
- 在 Google Cloud 控制台中,前往「Firewall policies」(防火牆政策) 頁面。
前往「防火牆政策」頁面 - 按一下「Create firewall rule」(建立防火牆規則),建立允許健康狀態檢查探針流量的規則:
- 輸入
fw-allow-health-check
的「Name」。 - 在「Network」下方選取 NETWORK。
- 在「Targets」(目標) 下方,選取 [Specified target tags] (指定的目標標記)。
- 在「Target tags」(目標標記) 欄位填入
allow-health-check
。 - 將「Source filter」(來源篩選器) 設為「IPv4 ranges」(IPv4 範圍)。
- 將「Source IPv4 ranges」(來源 IPv4 範圍) 設為
130.211.0.0/22
和35.191.0.0/16
。 - 在「Protocols and ports」(通訊協定和通訊埠) 下方,選取「Specified protocols and ports」(指定的通訊協定和通訊埠)。
- 選取「TCP」TCP,然後輸入
80
做為「Port number」(通訊埠編號)。 - 按一下 [建立]。
- 輸入
- 再次按一下「Create firewall rule」(建立防火牆規則),建立允許連入 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
- Protocols and ports:選擇「Specified protocols and ports」。
- 選取「TCP」TCP,然後輸入
22
做為「Port number」(通訊埠編號)。 - 按一下 [建立]。
- Name (名稱):
- 再次按一下「Create firewall rule」(建立防火牆規則),以建立允許來自僅限 Proxy 子網路的連線規則:
- Name (名稱):
fw-allow-proxy-only-subnet
- Network (網路):NETWORK
- Priority (優先順序):
1000
- 「Direction of traffic」(流量方向):[ingress] (輸入)
- 「Action on match」(相符時執行的動作):[allow] (允許)
- 「Target」(目標):指定的目標標記
- 「Target tags」(目標標記):
allow-proxy-only-subnet
- 來源篩選器:IPv4 範圍
- Source IPv4 ranges (來源 IPv4 範圍):PROXY_ONLY_SUBNET_RANGE
- Protocols and ports (通訊協定和通訊埠):選擇「Specified protocols and ports」(指定的通訊協定和通訊埠)
- 選取「TCP」TCP,然後輸入
80
做為「Port number」(通訊埠編號)。 - 按一下 [建立]。
- Name (名稱):
gcloud
建立
fw-allow-health-check-and-proxy
規則,允許 Google Cloud 健康檢查在 TCP 通訊埠80
上存取後端執行個體:gcloud compute firewall-rules create fw-allow-health-check \ --network=NETWORK \ --action=allow \ --direction=ingress \ --target-tags=allow-health-check \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --rules=tcp:80
建立
fw-allow-ssh
防火牆規則,允許與具有allow-ssh
網路標記的 VM 建立 SSH 連線。若省略source-ranges
,Google Cloud 會將規則解讀為任何來源。gcloud compute firewall-rules create fw-allow-ssh \ --network=NETWORK \ --action=allow \ --direction=ingress \ --target-tags=allow-ssh \ --rules=tcp:22
為僅限 Proxy 的子網路建立允許輸入的防火牆規則,以便負載平衡器與 TCP 通訊埠
80
上的後端執行個體通訊:gcloud compute firewall-rules create fw-allow-proxy-only-subnet \ --network=NETWORK \ --action=allow \ --direction=ingress \ --target-tags=allow-proxy-only-subnet \ --source-ranges=PROXY_ONLY_SUBNET_RANGE \ --rules=tcp:80
設定可用區 NEG
針對以 Google Cloud為基礎的後端,建議您在設定混合式連線的相同區域中,設定多個區域 NEG。
在本例中,我們會在 REGION 地區中設定區域性 NEG (含 GCE_VM_IP_PORT
類型端點)。首先,請在 GCP_NEG_ZONE 區域中建立 VM。接著,請在相同的 GCP_NEG_ZONE 中建立區域 NEG,並將 VM 的網路端點新增至 NEG。
建立 VM
主控台
- 前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面。
前往「VM instances」(VM 執行個體) - 點選「建立執行個體」。
- 將「Name」(名稱) 設為
vm-a1
。 - 在「區域」部分,選擇 REGION,然後選擇任何「可用區」。這個值在本程序中會稱為 GCP_NEG_ZONE。
- 在「Boot disk」(開機磁碟) 專區中,確認已為開機磁碟選項選取「Debian GNU/Linux 12 (bookworm)」。如有需要,請按一下「Choose」(選擇),以變更圖片。
按一下「進階選項」,然後進行下列變更:
- 按一下「Networking」(網路),然後新增下列「Network tags」(網路標記):
allow-ssh
、allow-health-check
和allow-proxy-only-subnet
。 - 按一下「Network interfaces」下方的「Edit」圖示
- Network (網路):NETWORK
- Subnet (子網路):LB_SUBNET_NAME
- 「Primary internal IP」(主要內部 IP):臨時 (自動)
- External IP (外部 IP):臨時
,進行下列變更,然後按一下「Done」:
按一下 [Management] (管理)。在「Startup script」(開機指令碼) 欄位中,複製並貼上下列指令碼內容。四個 VM 的指令碼內容完全相同:
#! /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
- 按一下「Networking」(網路),然後新增下列「Network tags」(網路標記):
按一下 [建立]。
使用下列名稱和區域組合,重複執行以下步驟來建立第二個 VM:
- 名稱:
vm-a2
,區域:GCP_NEG_ZONE
- 名稱:
gcloud
使用下列組合建立 VM 的名稱和區域,執行以下指令兩次來建立 VM。兩個 VM 的指令碼內容皆相同。
vm-a1
的 VM_NAME 和您選擇的任一 GCP_NEG_ZONE 區vm-a2
和相同 GCP_NEG_ZONE 區域的 VM_NAMEgcloud compute instances create VM_NAME \ --zone=GCP_NEG_ZONE \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=allow-ssh,allow-health-check,allow-proxy-only-subnet \ --subnet=LB_SUBNET_NAME \ --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
主控台
如何建立可用區網路端點群組:
- 前往 Google Cloud 控制台的「Network Endpoint Groups」(網路端點群組) 頁面。
前往「Network Endpoint Groups」(網路端點群組) 頁面 - 按一下「建立網路端點群組」。
- 輸入區域 NEG 的名稱。在本程序中稱為 GCP_NEG_NAME。
- 選取「網路端點群組類型」:「網路端點群組 (區域性)」。
- 選取「網路」:NETWORK
- 選取「子網路」:LB_SUBNET_NAME
- 選取「區域」:GCP_NEG_ZONE
- 輸入「預設通訊埠」:
80
。 - 按一下 [建立]。
將端點新增至區域性 NEG:
- 前往 Google Cloud 控制台的「Network Endpoint Groups」(網路端點群組) 頁面。
前往「Network endpoint groups」(網路端點群組) - 按一下在前一個步驟中建立的網路端點群組「名稱」 (GCP_NEG_NAME)。您會看到「Network endpoint group details」頁面。
- 在「Network endpoints in this group」(這個群組中的網路端點) 區段中,按一下 [Add network endpoint] (新增網路端點]。畫面上即會出現「Add network endpoint」(新增網路端點) 頁面。
- 選取某個 VM 執行個體,將其內部 IP 位址新增為網路端點。在「Network interface」部分,系統會顯示 VM 的名稱、區域和子網路。
- 在「IPv4 位址」欄位中,輸入新網路端點的 IPv4 位址。
- 選取「Port type」(通訊埠類型)。
- 如果您選取「預設」,則端點會使用網路端點群組中所有端點的預設通訊埠
80
。這對我們的範例來說已足夠,因為 Apache 伺服器會透過通訊埠80
提供要求。 - 如果您選取「Custom」(自訂),請輸入端點要使用的「Port number」(通訊埠編號)。
- 如果您選取「預設」,則端點會使用網路端點群組中所有端點的預設通訊埠
- 如要新增更多端點,請按一下「Add network endpoint」(新增網路端點),然後重複執行上述步驟。
- 新增所有端點後,按一下「建立」。
gcloud
使用
gcloud compute network-endpoint-groups create
指令建立區域性 NEG (含GCE_VM_IP_PORT
端點):gcloud compute network-endpoint-groups create GCP_NEG_NAME \ --network-endpoint-type=GCE_VM_IP_PORT \ --zone=GCP_NEG_ZONE \ --network=NETWORK \ --subnet=LB_SUBNET_NAME
您可以在建立 NEG 時指定
--default-port
,或是為每個端點指定通訊埠號碼,如下一個步驟所示。將端點新增至 GCP_NEG_NAME。
gcloud compute network-endpoint-groups update GCP_NEG_NAME \ --zone=GCP_NEG_ZONE \ --add-endpoint='instance=vm-a1,port=80' \ --add-endpoint='instance=vm-a2,port=80'
設定混合式連線 NEG
建立 NEG 時,請使用 ZONE,盡可能縮短 Google Cloud 與地端部署或其他雲端環境之間的地理距離。舉例來說,如果您在德國法蘭克福的內部環境中代管服務,則可以在建立 NEG 時指定 europe-west3-a
Google Cloud 區域。
此外,如果您使用 Cloud Interconnect,用於建立 NEG 的 ZONE 應位於設定 Cloud Interconnect 連結點的相同區域。
如要瞭解可用的地區和區域,請參閱 Compute Engine 說明文件:可用的地區和區域。
主控台
如何建立混合式連線網路端點群組:
- 前往 Google Cloud 控制台的「Network Endpoint Groups」(網路端點群組) 頁面。
前往網路端點群組 - 按一下「建立網路端點群組」。
- 輸入混合 NEG 的「名稱」。在本程序中稱為 ON_PREM_NEG_NAME。
- 選取網路端點群組類型:混合式連線網路端點群組 (可用區)。
- 選取「網路」:NETWORK
- 選取「子網路」:LB_SUBNET_NAME
- 選取「區域」:ON_PREM_NEG_ZONE
- 輸入「預設通訊埠」。
- 按一下 [建立]。
將端點新增至混合式連線 NEG:
- 前往 Google Cloud 控制台的「Network Endpoint Groups」(網路端點群組) 頁面。
前往「Network Endpoint Groups」(網路端點群組) 頁面 - 按一下在前一個步驟建立的網路端點群組的「名稱」 (ON_PREM_NEG_NAME)。您會看到「Network endpoint group detail」頁面。
- 在「Network endpoints in this group」(這個群組中的網路端點) 區段中,按一下 [Add network endpoint] (新增網路端點]。畫面上即會出現「Add network endpoint」(新增網路端點) 頁面。
- 輸入新網路端點的「IP 位址」。
- 選取「Port type」(通訊埠類型)。
- 如果您選取「預設」,則端點會使用網路端點群組中所有端點的預設通訊埠。
- 如果您選取「Custom」(自訂),可以輸入端點要使用的不同「Port number」(通訊埠編號)。
- 如要新增更多端點,請按一下「Add network endpoint」(新增網路端點),然後重複執行上述步驟。
- 新增所有非Google Cloud 端點後,請按一下「建立」。
gcloud
使用
gcloud compute network-endpoint-groups create
指令建立混合式連線 NEG。gcloud compute network-endpoint-groups create ON_PREM_NEG_NAME \ --network-endpoint-type=NON_GCP_PRIVATE_IP_PORT \ --zone=ON_PREM_NEG_ZONE \ --network=NETWORK
將內部部署後端 VM 端點新增至 ON_PREM_NEG_NAME:
gcloud compute network-endpoint-groups update ON_PREM_NEG_NAME \ --zone=ON_PREM_NEG_ZONE \ --add-endpoint="ip=ON_PREM_IP_ADDRESS_1,port=PORT_1" \ --add-endpoint="ip=ON_PREM_IP_ADDRESS_2,port=PORT_2"
您可以使用這個指令,新增先前在內部部署環境或雲端環境中設定的網路端點。視需要重複執行 --add-endpoint
。
如有需要,您可以重複執行這些步驟來建立多個混合型 NEG。
設定負載平衡器
主控台
gcloud
- 為後端建立健康狀態檢查。
混合 NEG 後端的健康狀態檢查探測來自僅限 Proxy 的子網路中的 Envoy Proxy,而區域 NEG 後端的探測來自 [Google 的中央探測 IP 範圍](/load-balancing/docs/health-check-concepts#ip-ranges)。gcloud compute health-checks create http HTTP_HEALTH_CHECK_NAME \ --region=REGION \ --use-serving-port
- 為以 Google Cloud為基礎的後端建立後端服務。您同時將區域 NEG 和混合式連線 NEG 新增為此後端服務的後端。
gcloud compute backend-services create BACKEND_SERVICE \ --load-balancing-scheme=INTERNAL_MANAGED \ --protocol=HTTP \ --health-checks=HTTP_HEALTH_CHECK_NAME \ --health-checks-region=REGION \ --region=REGION
- 將區域 NEG 新增至後端服務,做為後端使用。
如要進一步瞭解如何設定平衡模式,請參閱 gcloud CLI 說明文件中的gcloud compute backend-services add-backend BACKEND_SERVICE \ --region=REGION \ --balancing-mode=RATE \ --max-rate-per-endpoint=MAX_REQUEST_RATE_PER_ENDPOINT \ --network-endpoint-group=GCP_NEG_NAME \ --network-endpoint-group-zone=GCP_NEG_ZONE
--max-rate-per-endpoint
參數。 - 將混合 NEG 新增至後端服務,做為後端使用。
如要進一步瞭解如何設定平衡模式,請參閱 gcloud CLI 說明文件中的gcloud compute backend-services add-backend BACKEND_SERVICE \ --region=REGION \ --balancing-mode=RATE \ --max-rate-per-endpoint=MAX_REQUEST_RATE_PER_ENDPOINT \ --network-endpoint-group=ON_PREM_NEG_NAME \ --network-endpoint-group-zone=ON_PREM_NEG_ZONE
--max-rate-per-endpoint
參數。 - 建立網址對應,將連入的要求轉送至後端服務:
gcloud compute url-maps create URL_MAP_NAME \ --default-service BACKEND_SERVICE \ --region=REGION
- 選用步驟:如果您在用戶端和負載平衡器之間使用 HTTPS,請執行這個步驟。但 HTTP 負載平衡器不需要這項資訊。
您可以建立 Compute Engine 或憑證管理工具憑證。請使用下列任一方法,透過憑證管理工具建立憑證:
- 區域性自行管理憑證。如要進一步瞭解如何建立及使用區域性自行管理憑證,請參閱「部署區域性自行管理憑證」一文。不支援憑證對應。
區域性 Google 代管憑證。不支援憑證對應。
Certificate Manager 支援下列類型的區域性 Google 代管憑證:
- 區域性 Google 代管憑證,並具備個別專案 DNS 授權。詳情請參閱「部署區域性 Google 代管憑證」。
- 區域性 Google 代管 (私人) 憑證 (搭配憑證授權單位服務)。 詳情請參閱「透過 CA 服務部署區域性 Google 代管憑證」。
建立憑證後,請直接將憑證附加至目標 Proxy。
建立 Compute Engine 自行管理的 SSL 憑證資源:gcloud compute ssl-certificates create SSL_CERTIFICATE_NAME \ --certificate CRT_FILE_PATH \ --private-key KEY_FILE_PATH
- 建立目標 HTTP(S) Proxy,將要求轉送至您的網址對應。
如要建立 HTTP 負載平衡器,請建立 HTTP 目標 Proxy: 如要建立 HTTPS 負載平衡器,請建立 HTTPS 目標 Proxy。Proxy 是負載平衡器的一部分,用於保存 HTTPS 負載平衡的 SSL 憑證,因此您還可以在此步驟中載入憑證。gcloud compute target-http-proxies create TARGET_HTTP_PROXY_NAME \ --url-map=URL_MAP_NAME \ --url-map-region=REGION \ --region=REGION
gcloud compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \ --ssl-certificates=SSL_CERTIFICATE_NAME \ --url-map=URL_MAP_NAME \ --url-map-region=REGION \ --region=REGION
- 建立轉送規則,將傳入要求轉送至 Proxy。請勿使用僅限 Proxy 的子網路建立轉送規則。
HTTP 負載平衡器: HTTPS 負載平衡器:gcloud compute forwarding-rules create HTTP_FORWARDING_RULE_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=NETWORK \ --subnet=LB_SUBNET_NAME \ --address=LB_IP_ADDRESS \ --ports=80 \ --region=REGION \ --target-http-proxy=TARGET_HTTP_PROXY_NAME \ --target-http-proxy-region=REGION
gcloud compute forwarding-rules create HTTPS_FORWARDING_RULE_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=NETWORK \ --subnet=LB_SUBNET_NAME \ --address=LB_IP_ADDRESS \ --ports=443 \ --region=REGION \ --target-https-proxy=TARGET_HTTPS_PROXY_NAME \ --target-https-proxy-region=REGION
將網域連結至負載平衡器
建立負載平衡器後,請記下與負載平衡器相關聯的 IP 位址,例如 30.90.80.100
。如要將網域指向負載平衡器,請使用網域註冊服務建立 A
記錄。如果您在 SSL 憑證中新增了多個網域,則必須為每個網域新增 A
記錄,並全部指向負載平衡器的 IP 位址。舉例來說,如要為 www.example.com
和 example.com
建立 A
記錄,請使用以下方法:
NAME TYPE DATA www A 30.90.80.100 @ A 30.90.80.100
如果您使用 Cloud DNS 做為 DNS 供應商,請參閱「新增、修改及刪除記錄」。
測試負載平衡器
如要測試負載平衡器,請在與負載平衡器相同的地區中建立用戶端 VM。然後將流量從用戶端傳送至負載平衡器。
建立用戶端 VM
這個範例會在與後端 NEG 相同的地區中建立用戶端 VM (vm-client
)。該用戶端用於驗證負載平衡器的設定,以及示範測試一節中所述的預期行為。
主控台
- 前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面。
前往「VM instances」(VM 執行個體) - 點選「建立執行個體」。
- 將「Name」(名稱) 設為
vm-client
。 - 將「可用區」設為 CLIENT_VM_ZONE。
- 按一下「進階選項」,然後進行以下變更:
- 按一下「Networking」(網路),然後將
allow-ssh
新增至「Network tags」(網路標記)。 - 按一下「Network interfaces」下方的編輯按鈕,進行下列變更,然後按一下「Done」:
- Network (網路):NETWORK
- Subnet (子網路):LB_SUBNET_NAME
- 「Primary internal IP」(主要內部 IP):臨時 (自動)
- 「External IP」(外部 IP):[Ephemeral] (臨時)
- 按一下「Networking」(網路),然後將
- 按一下 [建立]。
gcloud
用戶端 VM 可以位於與負載平衡器相同地區的任何區域中,也可以使用該地區中的任何子網路。在本範例中,用戶端位於 CLIENT_VM_ZONE 區域,並使用與後端 VM 相同的子網路。
gcloud compute instances create vm-client \ --zone=CLIENT_VM_ZONE \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=allow-ssh \ --subnet=LB_SUBNET_NAME
將流量傳送至負載平衡器
負載平衡器已設定完成,您可以開始將流量傳送至負載平衡器的 IP 位址。
使用 SSH 連線至用戶端執行個體。
gcloud compute ssh client-vm \ --zone=CLIENT_VM_ZONE
取得負載平衡器的 IP 位址。使用
compute addresses describe
指令查看已分配的 IP 位址:gcloud compute addresses describe l7-ilb-ip-address \ --region=us-west1
確認負載平衡器是否如預期提供後端主機名稱。將 IP_ADDRESS 替換為負載平衡器的 IP 位址。
如要進行 HTTP 測試,請執行:
curl IP_ADDRESS
如要測試 HTTPS,請執行:
curl -k -s 'https://DOMAIN_NAME:443' --connect-to DOMAIN_NAME:443:IP_ADDRESS:443
將 DOMAIN_NAME 替換為應用程式網域名稱,例如 test.example.com
。
-k
標記會讓 curl 略過憑證驗證。
測試非Google Cloud 端點取決於您透過混合 NEG 端點公開的服務。
額外設定選項
本節會延伸說明設定範例,並提供替代和其他設定選項。所有工作都是選填項目。您可以按任何順序執行這些工作。
更新用戶端 HTTP 保持運作逾時時間
在先前步驟中建立的負載平衡器已設定 用戶端 HTTP keepalive 逾時 的預設值。如要更新用戶端 HTTP keepalive 逾時值,請按照下列操作說明操作。
控制台
前往 Google Cloud 控制台的「Load balancing」(負載平衡)頁面。
- 按一下要修改的負載平衡器名稱。
- 按一下「編輯」圖示 。
- 按一下「前端設定」。
- 展開「進階功能」。在「HTTP 保持運作逾時」中,輸入逾時值。
- 按一下「更新」。
- 如要查看變更內容,請依序按一下「Review and finalize」和「Update」。
gcloud
對於 HTTP 負載平衡器,請使用 gcloud compute target-http-proxies update
指令更新目標 HTTP Proxy。
gcloud compute target-http-proxies update TARGET_HTTP_PROXY_NAME \ --http-keep-alive-timeout-sec=HTTP_KEEP_ALIVE_TIMEOUT_SEC \ --region=REGION
針對 HTTPS 負載平衡器,請使用 gcloud compute target-https-proxies update
指令更新目標 HTTPS Proxy。
gcloud compute target-https-proxies update TARGET_HTTP_PROXY_NAME \ --http-keep-alive-timeout-sec=HTTP_KEEP_ALIVE_TIMEOUT_SEC \ --region REGION
更改下列內容:
TARGET_HTTP_PROXY_NAME
:目標 HTTP Proxy 的名稱。TARGET_HTTPS_PROXY_NAME
:目標 HTTPS Proxy 的名稱。HTTP_KEEP_ALIVE_TIMEOUT_SEC
:HTTP 保持運作逾時值,介於 5 到 600 秒。