在您依循這份指南之前,請先熟悉 Internet NEG 總覽說明文件,包括限制。
下圖架構顯示區域性外部 Proxy 網路負載平衡器前端,以及外部後端。
權限
如要按照本指南操作,您必須建立網際網路 NEG,並在專案中建立或修改代理網路負載平衡器。您必須是專案擁有者或編輯者 (roles/owner
或 roles/editor
),或是應具有以下兩個 Compute Engine 身分與存取權管理角色:
工作 | 必要角色 |
---|---|
建立及修改負載平衡器元件 | Compute Network Admin ( roles/compute.networkAdmin )
|
建立及修改 NEG | Compute 執行個體管理員 ( roles/compute.instanceAdmin )
|
在 Google Cloud外部設定外部後端環境
如要設定外部後端環境,請參閱下列章節。
設定網路端點
設定網路端點,將外部後端公開給Google Cloud。請確認端點 (IP:Port 組合或完整網域名稱 (FQDN) 和通訊埠) 可透過網際網路存取。這個端點稍後會從網際網路 NEG 參照。
如要瞭解網際網路 NEG 端點的詳細設定需求,請參閱「網際網路 NEG 總覽」。
允許外部後端接收來自 Google Cloud的流量
完成建立僅限 Proxy 的子網路並設定 Cloud NAT 閘道後,即可完成這個步驟。
如要讓來自 Google Cloud 的請求連上外部後端,您必須執行下列步驟:
- 使用用於 Google Cloud外向流量的 IP 位址,設定 Cloud NAT 閘道。閘道會將僅限 Proxy 的子網路範圍對應至外部 IP 位址。如需步驟說明,請參閱「設定 Cloud NAT 閘道」。
- 請確認外部後端環境已設定為允許來自 Google Cloud 的流量傳送至外部後端。舉例來說,如果您為 NAT 閘道使用預先保留的 IP 位址,就會在外部環境中將這些 IP 位址加入許可清單。您可能需要與外部環境的網路或安全性管理員合作,才能完成這項設定。
設定 Google Cloud 環境
您需要具有兩個子網路的虛擬私有雲網路:一個用於負載平衡器元件,另一個用於區域的僅限 Proxy 子網路。接著,您將建立具有網際網路 NEG 後端的負載平衡器。
建立虛擬私有雲網路和子網路
這個子網路用於建立負載平衡器的元件。
Cloud 控制台
- 在 Google Cloud 控制台中,前往「VPC Networks」(虛擬私有雲網路) 頁面。
前往「VPC networks」(虛擬私有雲網路) - 按一下「建立虛擬私有雲網路」。
- 輸入「名稱」:LB_NETWORK。
- 在「Subnets」(子網路) 區段中:
- 將「Subnet creation mode」(子網路建立模式) 設為 [Custom] (自訂)。
- 在「New subnet」(新的子網路) 區段中,輸入以下資訊:
- Name (名稱):LB_SUBNET_NAME
- Region (區域):REGION
- IP address range (IP 位址範圍):LB_SUBNET_RANGE
- 按一下 [完成]。
- 點選「建立」。
gcloud
使用
gcloud compute networks create
指令建立自訂虛擬私有雲網路:gcloud compute networks create LB_NETWORK \ --subnet-mode=custom
在 LB_NETWORK 網路中建立子網路。
gcloud compute networks subnets create LB_SUBNET_NAME \ --network=LB_NETWORK \ --range=LB_SUBNET_RANGE \ --region=REGION
設定僅限 Proxy 的子網路
REGION 區域內所有區域 Envoy 型負載平衡器都會使用這個 Proxy 專用子網路。
主控台
- 在 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=LB_NETWORK \ --range=PROXY_ONLY_SUBNET_RANGE
設定 Cloud NAT 閘道
設定 Cloud NAT 閘道前,請務必詳閱相關限制和定價考量。詳情請參閱「區域 NEG:使用 Cloud NAT 閘道」。下列指令說明如何設定 Cloud NAT 閘道。Cloud NAT 閘道可設定為使用自動 NAT 外部 IP 位址 (分配方式是根據需求),或使用手動預先保留的外部 IP 位址組合。閘道會將僅限 Proxy 的子網路範圍對應至外部 IP 位址。
設定自動 NAT 分配 IP 位址
建立 Cloud NAT 閘道時,如果要使用自動 NAT IP 位址分配功能,您可以指定 Cloud NAT 閘道分配 IP 位址的網路服務級別 (進階級或標準級)。
主控台
前往 Google Cloud 控制台的「Cloud NAT」頁面。
按一下「開始使用」或「建立 Cloud NAT 閘道」。
輸入閘道名稱 LB_NAT_CONFIG。
在「NAT 類型」中,選取「Public」。
在「Network」(網路) 清單中選取「LB_NETWORK」。
在「Region」(區域) 清單中選取「REGION」。
在該地區建立 Cloud Router。
在「Source endpoint type」中,選取「Managed proxy load balancers」。
在「Source」(來源) 清單中,選取「Custom」(自訂)。
- 在「子網路」中,選取 PROXY_ONLY_SUBNET_NAME。
在「Cloud NAT IP 位址」清單中,選取「自動 (建議)」。
在「Network service tier」(網路服務級別) 部分,選擇「Premium」(進階級) 或「Standard」(標準)。
點選「建立」。
gcloud
如果外部後端環境不需要您將可將流量傳送至外部後端的特定 IP 位址加入許可清單,請使用動態分配的 IP 位址。 Google Cloud
建立 Cloud Router:
gcloud beta compute routers create ROUTER_NAME \ --network=LB_NETWORK \ --region=REGION
設定 Cloud NAT 閘道。
gcloud beta compute routers nats create LB_NAT_CONFIG \ --router=ROUTER_NAME \ --endpoint-types=ENDPOINT_TYPE_MANAGED_PROXY_LB \ --nat-custom-subnet-ip-ranges=PROXY_ONLY_SUBNET_NAME \ --auto-allocate-nat-external-ips \ --region=REGION
更改下列內容:
LB_NAT_CONFIG
:NAT 設定的名稱。ROUTER_NAME
:Cloud Router 的名稱。REGION
:要建立的 NAT 區域。如果未指定,系統可能會提示您選取區域 (僅限互動模式)。PROXY_ONLY_SUBNET_NAME
:僅限 Proxy 子網路的名稱。
設定手動分配的 IP 位址
只有在外部後端環境要求您為特定 Google Cloud IP 位址使用許可清單時,才使用手動指派的 IP 位址。如果外部後端環境不需要許可清單,請改用動態分配功能,如上文所述。
建立 Cloud NAT 閘道時,您可以選擇手動指派 NAT IP 位址 (取決於特定條件),並從進階級別或標準級別指派。
主控台
前往 Google Cloud 控制台的「Cloud NAT」頁面。
按一下「開始使用」或「建立 Cloud NAT 閘道」。
輸入閘道名稱 LB_NAT_CONFIG。
在「Network」(網路) 清單中選取「LB_NETWORK」。
在「Region」(區域) 清單中選取「REGION」。
選取或建立該區域的 Cloud Router。
在「Source endpoint type」中,選取「Managed proxy load balancers」。
在「Source」(來源) 清單中,選取「Custom」(自訂)。
- 在「子網路」中,選取 PROXY_ONLY_SUBNET_NAME。
在「Cloud NAT IP 位址」清單中,選取「手動」。
在「Network service tier」(網路服務級別) 部分,選擇「Premium」(進階級) 或「Standard」(標準)。
選取或建立要用於 NAT 的靜態預留外部 IP 位址。
如要指定其他 IP 位址,請按一下「Add IP address」(新增 IP 位址),然後選取或建立其他靜態保留外部 IP 位址。
點選「建立」。
gcloud
建立 IP 位址。由於閘道會執行一對一的 NAT 轉譯,因此您必須確保保留的 IP 位址集區足夠大,才能處理預期的流量量。如果分配的 NAT IP 位址數量不足,可能會導致流量流失。
gcloud compute addresses create IP_ADDRESS_NAME_1 IP_ADDRESS_NAME_2 [IP_ADDRESS_NAME_3 ...] \ --region=REGION
建立 Cloud Router:
gcloud compute routers create ROUTER_NAME \ --network=LB_NETWORK \ --region=REGION
設定 Cloud NAT 閘道。
gcloud beta compute routers nats create LB_NAT_CONFIG \ --router=ROUTER_NAME \ --endpoint-types=ENDPOINT_TYPE_MANAGED_PROXY_LB \ --nat-custom-subnet-ip-ranges=PROXY_ONLY_SUBNET_NAME \ --nat-external-ip-pool=IP_ADDRESS_NAME_1,IP_ADDRESS_NAME_2,[IP_ADDRESS_NAME_3 ...] \ --region=REGION
更改下列內容:
LB_NAT_CONFIG
:NAT 設定的名稱。ROUTER_NAME
:Cloud Router 的名稱。PROXY_ONLY_SUBNET_NAME
:僅限 Proxy 子網路的名稱。REGION
:要建立的 NAT 區域。如果未指定,系統可能會提示您選取區域 (僅限互動模式)。
設定動態通訊埠分配
更新 Cloud NAT 閘道,以便使用動態通訊埠分配模式,充分運用已指派的 IP 位址。
gcloud
更新 Cloud NAT 閘道。建議您將通訊埠數量下限設為 2048,上限設為 4096。
gcloud compute routers nats update LB_NAT_CONFIG \ --router=ROUTER_NAME \ --enable-dynamic-port-allocation \ --min-ports-per-vm=MIN_PORTS_PER_VM \ --max-ports-per-vm=MAX_PORTS_PER_VM \ --region=REGION
確認已啟用動態通訊埠分配功能,且已設定通訊埠的最低和最高數量。
gcloud compute routers nats describe LB_NAT_CONFIG \ --router=ROUTER_NAME \ --region=REGION
輸出結果會與下列內容相似:
enableDynamicPortAllocation: true enableEndpointIndependentMapping: false endpointTypes: ‐ ENDPOINT_TYPE_MANAGED_PROXY_LB logConfig: enable: true filter: ALL maxPortsPerVm: 4096 minPortsPerVm: 2048 name: LB_NAT_CONFIG natIpAllocateOption: MANUAL_ONLY natIps: ‐ https://www.googleapis.com/compute/projects/PROJECT_NAME/regions/REGION/addresses/ADDRESS sourceSubnetworkIpRangesToNat: ALL_SUBNETWORKS_ALL_IP_RANGES type: PUBLIC
詳情請參閱 Cloud NAT 說明文件中的「指定 NAT 的子網路範圍」。
請務必為外部後端環境的 NAT IP 位址範圍使用許可清單,以便外部後端接收來自 Google Cloud的流量。
保留負載平衡器的 IP 位址
為負載平衡器保留靜態 IP 位址。
主控台
在 Google Cloud 控制台,前往「Reserve a static address」(預約靜態位址) 頁面。
為新地址選擇「名稱」。
在「Network Service Tier」中,選取「Standard」。
在「IP 版本」部分,選取「IPv4」。IPv6 位址只限通用位址,且只適用於全球負載平衡器。
在「Type」(類型) 中,選取「Regional」(區域)。
選擇一個 [Region] (地區)。
將「Attached to」(連接至) 選項設為「None」(無)。建立負載平衡器後,這個 IP 位址就會附加至負載平衡器的轉送規則。
按一下「Reserve」,即可預留 IP 位址。
gcloud
如要使用
gcloud compute
保留靜態外部 IP 位址,請使用compute addresses create
指令。gcloud compute addresses create LB_IP_ADDRESS \ --region=REGION \ --network-tier=STANDARD
更改下列內容:
LB_IP_ADDRESS
:您要稱呼此位址的名稱。REGION
:您要保留這個位址的地區。此區域應與負載平衡器位於相同區域。所有區域 IP 位址都是IPv4
。
使用
compute addresses describe
指令查看結果:gcloud compute addresses describe LB_IP_ADDRESS
設定網際網路 NEG
您可以使用 INTERNET_FQDN_PORT
端點或 INTERNET_IP_PORT
端點建立網際網路 NEG。
主控台
建立含有 INTERNET_FQDN_PORT
端點的 NEG
在 Google Cloud 控制台中,前往「Network endpoint group」(網路端點群組) 頁面。
按一下「建立網路端點群組」。
為網際網路 NEG 指定 INTERNET_NEG_NAME。詳情請參閱「資源命名慣例」。
在「網路端點群組類型」清單中,選取「網路端點群組 (網際網路)」,然後執行下列操作:
- 在「範圍」清單中選取「區域」。
- 選用步驟:在「Region」清單中,變更此 NEG 的 REGION。
- 在「Network」(網路) 清單中選取「LB_NETWORK」。
- 在「Default port」方塊中輸入 DEFAULT_PORT_NUMBER。
- 在「透過」清單中,選取「完整網域名稱與通訊埠」。
- 選取 [Create] (建立)。
將 INTERNET_FQDN_PORT
端點新增至 NEG
在 Google Cloud 控制台中,前往「Network endpoint group」(網路端點群組) 頁面。
- 按一下「INTERNET_NEG_NAME」。
請輸入完整網域名稱,例如
myorg.example.com
。您必須使用標準 FQDN 語法指定 FQDN 物件。選用:在「Port type」(通訊埠類型) 中,選取「Custom」(自訂)。如果「通訊埠類型」為
Default
,系統會使用 NEG 的預設通訊埠。- 在「Port number」(通訊埠編號) 方塊中輸入 PORT_NUMBER_1。
- 選取 [Create] (建立)。
建立含有 INTERNET_IP_PORT
端點的 NEG
在 Google Cloud 控制台中,前往「Network endpoint group」(網路端點群組) 頁面。
按一下「建立網路端點群組」。
指定網路 NEG 的名稱 INTERNET_NEG_NAME。詳情請參閱「資源命名慣例」。
在「網路端點群組類型」清單中,選取「網路端點群組 (網際網路)」,然後執行下列操作:
- 在「範圍」清單中選取「區域」。
- 選用步驟:在「Region」清單中,變更此 NEG 的 REGION。
- 在「Network」(網路) 清單中選取「LB_NETWORK」。
- 在「Default port」方塊中輸入 DEFAULT_PORT_NUMBER。
- 在「Add endpoints through」清單中,選取「IP 和通訊埠」。
- 選取 [Create] (建立)。
將 INTERNET_IP_PORT
端點新增至 NEG
在 Google Cloud 控制台中,前往「Network endpoint group」(網路端點群組) 頁面。
- 按一下「INTERNET_NEG_NAME」。
- 在「IP 位址」欄位中輸入 IP_ADDRESS_1。
選用:在「Port type」清單中,選取「Custom」。如果「通訊埠類型」為
Default
,系統會使用 NEG 的預設通訊埠。- 在「Port number」(通訊埠編號) 欄位中輸入 PORT_NUMBER_1。
- 選取 [Create] (建立)。
gcloud
如要建立含有 INTERNET_FQDN_PORT
端點的 NEG,請按照下列步驟操作:
建立 NEG 資源。
gcloud beta compute network-endpoint-groups create INTERNET_NEG_NAME \ --network-endpoint-type=INTERNET_FQDN_PORT \ --default-port=DEFAULT_PORT_NUMBER \ --network=LB_NETWORK \ --region=REGION
將端點新增至 NEG。如果未指定通訊埠,系統會使用 NEG 的預設通訊埠。
gcloud beta compute network-endpoint-groups update INTERNET_NEG_NAME \ --add-endpoint="fqdn=FULLY_QUALIFIED_DOMAIN_NAME_1,port=PORT_NUMBER_1" \ [--add-endpoint="fqdn=FULLY_QUALIFIED_DOMAIN_NAME_2,port=PORT_NUMBER_2" \] --region=REGION
更改下列內容:
FULLY_QUALIFIED_DOMAIN_NAME
:端點的完整網域名稱PORT_NUMBER
:端點的通訊埠號碼
每個 NEG 最多可新增 256 個端點。
如果網域可透過網際網路解析,則不需要其他設定即可設定 DNS。不過,如果您使用私人 FQDN,就必須設定 Cloud DNS,以利 DNS 解析。名稱必須託管在 Cloud DNS 上,或是可透過 DNS 轉送從 Cloud DNS 解析至內部部署 DNS。
請先建立 Cloud DNS 區域,以便在專案中代管 DNS 記錄。然後新增 DNS 記錄。如需具體設定步驟,請參閱 Cloud DNS 說明文件。
如要建立含有 INTERNET_IP_PORT
端點的 NEG,請按照下列步驟操作:
建立 NEG 資源。
gcloud beta compute network-endpoint-groups create INTERNET_NEG_NAME \ --network-endpoint-type=INTERNET_IP_PORT \ --default-port=DEFAULT_PORT_NUMBER \ --network=LB_NETWORK \ --region=REGION
將端點新增至 NEG。如果未指定通訊埠,系統會使用 NEG 的預設通訊埠。
gcloud beta compute network-endpoint-groups update INTERNET_NEG_NAME \ --add-endpoint="ip=IP_ADDRESS_1,port=PORT_NUMBER_1" \ [--add-endpoint="ip=IP_ADDRESS_2,port=PORT_NUMBER_2" \] --region=REGION
更改下列內容:
IP_ADDRESS
:端點的 IP 位址PORT_NUMBER
:端點的通訊埠號碼
您可以重複執行這個步驟,最多可為每個 NEG 新增 256 個端點。
建立負載平衡器
主控台
開始設定
前往 Google Cloud 控制台的「Load balancing」(負載平衡)頁面。
- 點選「建立負載平衡器」。
- 在「負載平衡器類型」部分,選取「網路負載平衡器 (TCP/UDP/SSL)」,然後點選「下一步」。
- 在「直通或使用 Proxy」部分,選取「Proxy load balancer」,然後點選「Next」。
- 在「公開或內部」部分,選取「公開 (外部)」,然後點選「下一步」。
- 在「全域或單一區域部署」部分,選取「最適合區域工作負載」,然後點選「Next」。
- 按一下 [設定]。
基本設定
- 輸入「負載平衡器名稱」。
- 在「Region」(區域) 中選取 REGION。
- 在「Network」(網路) 中選取 LB_NETWORK。
保留僅限 Proxy 子網路
如要保留僅限 Proxy 的子網路,請按照下列步驟操作:
- 按一下「保留子網路」。
- 在「Name」(名稱) 中輸入 PROXY_ONLY_SUBNET_NAME。
- 在「IP address range」(IP 位址範圍) 中,輸入 PROXY_ONLY_SUBNET_RANGE。
- 按一下「新增」。
前端設定
- 按一下「前端設定」。
- 輸入名稱。
- 在「Network Service Tier」(網路服務級別) 部分,選取「Standard」(標準)。
- 在「IP 位址」部分,選取先前預留的 IP 位址:LB_IP_ADDRESS。
- 在「Port number」 中,指定介於 1 至 65535 之間的單一通訊埠編號。轉送規則只會轉送相符的目的地通訊埠封包。
- 按一下 [完成]。
後端設定
- 按一下「後端設定」。
- 按一下「後端服務和後端值區」。
- 按一下「建立後端服務」。
- 輸入名稱。
- 在「Backend type」部分,選取「Internet network endpoint group」。
- 在「通訊協定」中,選取「TCP」。
- 針對「後端」,請在「New backend」視窗中選取上一個步驟建立的「Regional internet network endpoint group」。
- 按一下 [完成]。
- 設定健康狀態檢查:
- 在「健康狀態檢查」部分,選取「建立健康狀態檢查」。
- 將健康狀態檢查名稱設為 TCP_HEALTH_CHECK_NAME。
- 在「通訊協定」中,選取「TCP」。
- 將「Port」(通訊埠) 設為
80
。 - 保留剩餘的預設值,然後按一下「儲存」。
- 點選「建立」。
檢查並完成
- 按一下「檢查並完成」。
- 如果沒有任何問題,請按一下「建立」。
gcloud
- 選用:建立健康狀態檢查。外部後端的健康狀態檢查探測會使用分散式 Envoy 健康狀態檢查,並在之後進行 NAT 轉譯。
gcloud compute health-checks create tcp TCP_HEALTH_CHECK_NAME \ --region=REGION \ --use-serving-port
- 建立後端服務:
gcloud compute backend-services create BACKEND_SERVICE \ --load-balancing-scheme=EXTERNAL_MANAGED \ --health-checks=TCP_HEALTH_CHECK_NAME \ --health-checks-region=REGION \ --region=REGION
- 將網際網路 NEG 新增至後端服務:
gcloud compute backend-services add-backend BACKEND_SERVICE \ --network-endpoint-group=INTERNET_NEG_NAME \ --network-endpoint-group-region=REGION \ --region=REGION
gcloud compute backend-services add-backend BACKEND_SERVICE \ --network-endpoint-group=INTERNET_NEG_NAME \ --network-endpoint-group-region=REGION \ --region=REGION
建立目標 TCP Proxy,將要求轉送至後端服務。
gcloud compute target-tcp-proxies create TARGET_TCP_PROXY_NAME \ --backend-service=BACKEND_SERVICE \ --region=REGION
建立轉送規則,將傳入要求轉送至 Proxy。針對 `--ports`,請指定單一通訊埠編號,範圍為 1 至 65535。轉送規則只會轉送相符的目的地通訊埠封包。
gcloud compute forwarding-rules create FORWARDING_RULE_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network-tier=STANDARD \ --network=LB_NETWORK \ --address=LB_IP_ADDRESS \ --target-tcp-proxy=TARGET_TCP_PROXY_NAME \ --target-tcp-proxy-region=REGION \ --region=REGION \ --ports=PORT_NUMBER
測試負載平衡器
負載平衡器設定完畢後,您可以測試將流量傳送至負載平衡器的 IP 位址。
取得負載平衡器的 IP 位址。
如要取得 IPv4 位址,請執行下列指令:
gcloud compute addresses describe LB_IP_ADDRESS
在建立負載平衡器轉送規則時指定的 IP 位址和通訊埠,將流量傳送至負載平衡器。測試網際網路 NEG 後端是否回應要求,取決於在外部端點上執行的服務。
後續步驟
- 如要為負載平衡器設定記錄和監控功能,請參閱「Proxy 網路負載平衡器記錄和監控」一文。
- 如要刪除您建立的資源,以免日後產生費用,請參閱「清除負載平衡器設定」。