GSP157

總覽
本實驗室說明如何建立 HTTP(S) 負載平衡器,將流量轉送至兩個不同區域的執行個體。在本實驗室中,您將建立四個 Compute Engine 執行個體 (每個區域兩個)。接著設定系統的其餘部分,確保傳入連線會傳送至適當的執行個體。
您建立的資源會如圖所示相互連結:

設定
瞭解以下事項後,再點選「Start Lab」按鈕
請詳閱以下操作說明。實驗室活動會計時,且中途無法暫停。點選「Start Lab」後就會開始計時,顯示可使用 Google Cloud 資源的時間。
您將在真正的雲端環境完成實作實驗室活動,而不是模擬或示範環境。為此,我們會提供新的暫時憑證,供您在實驗室活動期間登入及存取 Google Cloud。
為了順利完成這個實驗室,請先確認:
- 可以使用標準的網際網路瀏覽器 (Chrome 瀏覽器為佳)。
注意事項:請使用無痕模式 (建議選項) 或私密瀏覽視窗執行此實驗室,這可以防止個人帳戶和學員帳戶之間的衝突,避免個人帳戶產生額外費用。
- 是時候完成實驗室活動了!別忘了,活動一旦開始將無法暫停。
注意事項:務必使用實驗室專用的學員帳戶。如果使用其他 Google Cloud 帳戶,可能會產生額外費用。
如何開始研究室及登入 Google Cloud 控制台
-
點選「Start Lab」按鈕。如果實驗室會產生費用,畫面上會出現選擇付款方式的對話方塊。左側的「Lab Details」窗格會顯示下列項目:
- 「Open Google Cloud console」按鈕
- 剩餘時間
- 必須在這個研究室中使用的臨時憑證
- 完成這個實驗室所需的其他資訊 (如有)
-
點選「Open Google Cloud console」;如果使用 Chrome 瀏覽器,也能按一下滑鼠右鍵,選取「在無痕視窗中開啟連結」。
接著,實驗室會啟動相關資源,並開啟另一個分頁,顯示「登入」頁面。
提示:您可以在不同的視窗中並排開啟分頁。
注意:如果頁面中顯示「選擇帳戶」對話方塊,請點選「使用其他帳戶」。
-
如有必要,請將下方的 Username 貼到「登入」對話方塊。
{{{user_0.username | "Username"}}}
您也可以在「Lab Details」窗格找到 Username。
-
點選「下一步」。
-
複製下方的 Password,並貼到「歡迎使用」對話方塊。
{{{user_0.password | "Password"}}}
您也可以在「Lab Details」窗格找到 Password。
-
點選「下一步」。
重要事項:請務必使用實驗室提供的憑證,而非自己的 Google Cloud 帳戶憑證。
注意:如果使用自己的 Google Cloud 帳戶來進行這個實驗室,可能會產生額外費用。
-
按過後續的所有頁面:
- 接受條款及細則。
- 由於這是臨時帳戶,請勿新增救援選項或雙重驗證機制。
- 請勿申請免費試用。
Google Cloud 控制台稍後會在這個分頁開啟。
注意:如要使用 Google Cloud 產品和服務,請點選「導覽選單」,或在「搜尋」欄位輸入服務或產品名稱。
啟動 Cloud Shell
Cloud Shell 是搭載多項開發工具的虛擬機器,提供永久的 5 GB 主目錄,而且在 Google Cloud 中運作。Cloud Shell 提供指令列存取權,方便您使用 Google Cloud 資源。
-
點按 Google Cloud 控制台頂端的「啟用 Cloud Shell」圖示
。
-
系統顯示視窗時,請按照下列步驟操作:
- 繼續操作 Cloud Shell 視窗。
- 授權 Cloud Shell 使用您的憑證發出 Google Cloud API 呼叫。
連線建立完成即代表已通過驗證,而且專案已設為您的 Project_ID:。輸出內容中有一行文字,宣告本工作階段的 Project_ID:
Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}
gcloud
是 Google Cloud 的指令列工具,已預先安裝於 Cloud Shell,並支援 Tab 鍵自動完成功能。
- (選用) 您可以執行下列指令來列出使用中的帳戶:
gcloud auth list
- 點按「授權」。
輸出內容:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- (選用) 您可以使用下列指令來列出專案 ID:
gcloud config list project
輸出內容:
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
注意:如需 gcloud
的完整說明,請前往 Google Cloud 參閱 gcloud CLI 總覽指南。
這些操作說明假設您使用自動模式虛擬私有雲網路或舊版網路。如果您使用自訂模式虛擬私有雲網路,則在執行下列部分步驟 (例如建立執行個體) 時必須指定子網路範圍。
工作 1:設定執行個體
在兩個不同區域建立虛擬機器執行個體,接收負載平衡器轉送的流量。設定用於測試的機器執行個體,並為所有執行個體提供相同的標記,防火牆規則稍後會使用該標記來允許連入流量。
開機指令碼會安裝 Apache,並為每個執行個體建立專屬首頁。
- 在 區域建立兩個執行個體:
gcloud compute instances create www-1 \
--image-family debian-11 \
--image-project debian-cloud \
--machine-type e2-micro \
--zone {{{project_0.default_zone |ZONE}}} \
--tags http-tag \
--metadata startup-script="#! /bin/bash
apt-get update
apt-get install apache2 -y
service apache2 restart
{{{project_0.startup_script.index_html1_code|Code}}}"
gcloud compute instances create www-2 \
--image-family debian-11 \
--image-project debian-cloud \
--machine-type e2-micro \
--zone {{{project_0.default_zone |ZONE}}} \
--tags http-tag \
--metadata startup-script="#! /bin/bash
apt-get update
apt-get install apache2 -y
service apache2 restart
{{{project_0.startup_script.index_html_code|Code}}}"
點選「Check my progress」確認目標已達成。
設定主要區域的執行個體
- 在 區域建立兩個執行個體:
gcloud compute instances create www-3 \
--image-family debian-11 \
--image-project debian-cloud \
--machine-type e2-micro \
--zone {{{project_0.default_zone_2 |ZONE 2}}} \
--tags http-tag \
--metadata startup-script="#! /bin/bash
apt-get update
apt-get install apache2 -y
service apache2 restart
{{{project_0.startup_script.index_html2_code|Code}}}"
gcloud compute instances create www-4 \
--image-family debian-11 \
--image-project debian-cloud \
--machine-type e2-micro \
--zone {{{project_0.default_zone_2 |ZONE 2}}} \
--tags http-tag \
--metadata startup-script="#! /bin/bash
apt-get update
apt-get install apache2 -y
service apache2 restart
{{{project_0.startup_script.index_html3_code|Code}}}"
點選「Check my progress」確認目標已達成。
設定次要區域的執行個體
- 建立防火牆規則,允許外部流量傳送至虛擬機器執行個體。這項規則允許所有來源的流量,在設定及測試設定時非常實用。
防火牆規則會使用您先前建立的 http-tag
標記,允許流量通過指定通訊埠傳送至帶有此標記的執行個體:
gcloud compute firewall-rules create www-firewall \
--target-tags http-tag --allow tcp:80
- 確認執行個體正在執行。列出執行個體清單,從 EXTERNAL_IP 欄取得其 IP 位址:
gcloud compute instances list
- 複製每個執行個體的
外部 IP
,並貼到新的瀏覽器分頁,測試執行個體是否正在執行,以及網路伺服器是否已正確設定,能夠透過開啟的防火牆通訊埠,以預設首頁回應。
工作 2:設定負載平衡服務
現在已設定好執行個體並開始執行,請設定負載平衡所需的服務。請建立下列項目:
- 全域靜態外部 IP 位址,也就是客戶用於連上負載平衡器的外部 IP 位址。
- 用於容納執行個體的執行個體群組。
- 健康狀態檢查,這項服務會輪詢您的執行個體,查看其健康狀態是否良好。負載平衡器只會將流量傳送至健康的執行個體。
如要設定這些服務,請按照下列步驟操作:
- 為負載平衡器建立
IPv4
全域靜態外部 IP 位址:
gcloud compute addresses create lb-ip-cr \
--ip-version=IPV4 \
--global
- 為每個可用區建立執行個體群組:
gcloud compute instance-groups unmanaged create {{{project_0.default_region |REGION}}}-resources-w --zone {{{project_0.default_zone |ZONE}}}
gcloud compute instance-groups unmanaged create {{{project_0.default_region_2 |REGION 2}}}-resources-w --zone {{{project_0.default_zone_2 |ZONE 2}}}
- 將先前建立的執行個體新增至執行個體群組:
gcloud compute instance-groups unmanaged add-instances {{{project_0.default_region |REGION}}}-resources-w \
--instances www-1,www-2 \
--zone {{{project_0.default_zone |ZONE}}}
gcloud compute instance-groups unmanaged add-instances {{{project_0.default_region_2 |REGION 2}}}-resources-w \
--instances www-3,www-4 \
--zone {{{project_0.default_zone_2 |ZONE 2}}}
- 建立健康狀態檢查:
gcloud compute health-checks create http http-basic-check
工作 3:設定負載平衡服務
負載平衡作業涉及多個連線的服務。在本節中,您將設定這些服務並為其建立連線:
- 已命名的通訊埠:負載平衡器用來將流量導向您的執行個體群組。
- 後端服務:監控執行個體的使用情況和健康狀態。後端服務知道執行個體群組中的執行個體是否可以接收流量。如果無法,且其他地方有未充分利用的執行個體,負載平衡器會將流量重新導向這些執行個體。
- 網址對應:這項服務會剖析要求的網址,並根據要求網址的主機和路徑,將特定要求轉送至特定的後端服務。在這個範例中,由於我們未使用內容式轉送功能,因此網址對應僅包含預設對應。
- SSL 憑證資源:如果使用 HTTPS,則需要一或多個 SSL 憑證資源,其中包含負載平衡器的 SSL 憑證資訊。您可以使用多個 SSL 憑證,但必須為每個憑證建立 SSL 憑證資源。
- SSL 政策 (選用):使用 HTTPS 時可視需要搭配使用。
- 目標 Proxy:接收來自使用者的要求,並將其轉送至網址對應。目標 Proxy 是使用 SSL 憑證資源解密 SSL 流量的服務,可透過 HTTP 或 HTTPS 將流量轉送至您的執行個體。
- 兩個全域轉送規則:分別用於 IPv4 和 IPv6,可保存全域外部 IP 位址資源。全域轉送規則可將傳入要求轉送至目標 Proxy。
- 針對每個執行個體群組定義一個 HTTP 服務,並將通訊埠名稱對應至相關的通訊埠:
gcloud compute instance-groups unmanaged set-named-ports {{{project_0.default_region |REGION}}}-resources-w \
--named-ports http:80 \
--zone {{{project_0.default_zone |ZONE}}}
gcloud compute instance-groups unmanaged set-named-ports {{{project_0.default_region_2 |REGION 2}}}-resources-w \
--named-ports http:80 \
--zone {{{project_0.default_zone_2 |ZONE 2}}}
點選「Check my progress」確認目標已達成。
保留 IPV4 位址、建立執行個體群組和健康狀態檢查
- 建立後端服務並指定參數。將
--protocol
欄位設定為 HTTP
,因為我們要使用 HTTP 前往執行個體。請使用我們先前建立的 http-basic-check
健康狀態檢查做為健康狀態檢查:
gcloud compute backend-services create web-map-backend-service \
--protocol HTTP \
--health-checks http-basic-check \
--global
- 將您的執行個體群組新增至後端服務,以做為後端使用。後端內執行個體群組的能力 (CPU 使用率上限或每秒查詢次數上限),由後端決定。在這個範例中,請將平衡模式設為 CPU 使用率、最大使用率設為 80%,並將容量調整係數設為 1。如要排空後端服務,請將容量調整係數設為 0:
gcloud compute backend-services add-backend web-map-backend-service \
--balancing-mode UTILIZATION \
--max-utilization 0.8 \
--capacity-scaler 1 \
--instance-group {{{project_0.default_region |REGION}}}-resources-w \
--instance-group-zone {{{project_0.default_zone |ZONE}}} \
--global
gcloud compute backend-services add-backend web-map-backend-service \
--balancing-mode UTILIZATION \
--max-utilization 0.8 \
--capacity-scaler 1 \
--instance-group {{{project_0.default_region_2 |REGION 2}}}-resources-w \
--instance-group-zone {{{project_0.default_zone_2 |ZONE 2}}} \
--global
點選「Check my progress」確認目標已達成。
建立後端服務並在其中新增執行個體群組
- 建立預設網址對應,將所有連入要求導向您的所有執行個體:
gcloud compute url-maps create web-map \
--default-service web-map-backend-service
- 建立目標 HTTP Proxy,將要求轉送至網址對應:
gcloud compute target-http-proxies create http-lb-proxy \
--url-map web-map
- 請查詢您為負載平衡器建立的靜態 IP 位址。您將在下一個步驟中使用這些值。
gcloud compute addresses list
- 建立一個 IPv4 全域轉送規則,將連入要求轉送至 Proxy。將指令中的
[LB_IP_ADDRESS]
替換為您建立的靜態 IPv4 位址:
gcloud compute forwarding-rules create http-cr-rule \
--address [LB_IP_ADDRESS] \
--global \
--target-http-proxy http-lb-proxy \
--ports 80
注意:建立全域轉送規則後,可能需要幾分鐘時間,才能讓您的設定傳播完畢。
點選「Check my progress」確認目標已達成。
建立網址對應,並將目標 HTTP Proxy 指向該網址對應
工作 4:將流量傳送至執行個體
您已設定好負載平衡服務,現在可以開始傳送流量至轉送規則,您會看到流量分散至不同的執行個體。
- 找出全域轉送規則的 IP 位址:
gcloud compute forwarding-rules list
- 在控制台搜尋「負載平衡」,然後選取第一筆搜尋結果。在「負載平衡」頁面,您會在
web-map
這一行看到綠色圓圈和勾號。

-
點選「負載平衡器」(web-map
) 查看詳細資料。在頁面的「後端」區段中查看「健康狀態」欄位,確認執行個體健康狀態是否良好。可能需要一些時間,螢幕才會顯示執行個體的健康狀態良好。
-
當螢幕顯示執行個體的健康狀態良好時,請點選「進階選單」,存取負載平衡器的詳細資訊。
-
在「前端」部分,複製 IP 位址並貼到瀏覽器中,即可顯示執行個體群組中離您最近的執行個體預設內容。

負載平衡器會將要求轉送至最近的可用執行個體。
在本實驗室中,您在 和 區域建立了實驗室執行個體。執行個體的回應取決於您進行實驗的地點與這些區域的距離。
舉例來說,如果您的地理位置離 us-central1 區域較近,就會收到 us-central1 區域執行個體的回覆。
如要進一步瞭解 Google Cloud 的可用區和區域,請前往地區和可用區。
- 請重新載入頁面數次,因為負載平衡器在執行個體群組的兩個執行個體之間轉送要求,頁面會出現不一樣的內容。舉例來說 (執行個體順序可能不同):
第 1 次重新載入

第 2 次重新載入

第 3 次重新載入

第 4 次重新載入

如果您使用自行簽署的憑證進行測試,瀏覽器將顯示警告訊息,您必須明確指示瀏覽器接受憑證。
注意:您應該會看到離您最近的區域傳來的回應。如果一開始的回應失敗,可能需要稍候幾分鐘,等系統完整載入設定且將執行個體標示為健康狀態良好,然後再重試一次。每次重新載入時,頁面可能會顯示另一個執行個體。如要模擬不同地理位置的使用者,請嘗試使用網路 Proxy 提出要求。
工作 5:將 HTTP 設定成僅供負載平衡服務存取
- 確認一切正常運作後,修改防火牆規則,讓傳送至執行個體的 HTTP(S) 流量只能來自您的負載平衡服務:
gcloud compute firewall-rules create allow-lb-and-healthcheck \
--source-ranges 130.211.0.0/22,35.191.0.0/16 \
--target-tags http-tag \
--allow tcp:80
- 將允許其他 HTTP(S) 流量來源的規則移除:
gcloud compute firewall-rules delete www-firewall
測試負載平衡器可以連線至執行個體,但其他來源無法連線。
- 找出全域轉送規則的 IP 位址。
gcloud compute addresses list
-
複製 IP 位址並貼到瀏覽器,確認轉送功能正常運作。
-
接著找出個別執行個體的 IP 位址,並記下 EXTERNAL_IP
欄中的位址:
gcloud compute instances list
- 複製執行個體的位址並貼到瀏覽器。
由於您移除了允許其他來源傳送 HTTP(S) 流量的防火牆規則,因此這項作業會失敗。執行個體只接受 allow-lb-and-healthcheck
防火牆規則中來源範圍的流量。
工作 6:(選用) 移除外部 IP (除了堡壘主機)
HTTP 負載平衡會使用目標的內部 IP,而非外部 IP。負載平衡功能開始運作後,您可以移除負載平衡目標的外部 IP,然後透過中介執行個體連線,在負載平衡的執行個體執行工作,進而提升安全性。這樣一來,除了透過負載平衡器,虛擬私有雲網路外部的任何人都無法存取這些執行個體。
虛擬私有雲網路需要至少一個具備外部 IP 位址的執行個體,通常會指定一個執行個體做為此用途。
如果不慎刪除所有外部 IP 位址,可以使用 Cloud 控制台建立新的 IP 位址。
移除執行個體的外部 IP 位址
- 執行下列指令,移除執行個體的外部 IP 位址。記下
NAME
欄位中顯示的執行個體名稱:
gcloud compute instances list
- 執行下列指令,將
NAME
換成執行個體的名稱,即可刪除執行個體的存取設定:
gcloud compute instances delete-access-config NAME
恭喜!
恭喜!在本實驗室中,您已設定並測試跨區域負載平衡功能。經過本實驗室的實作體驗,您已瞭解如何使用 HTTP(S) 負載平衡功能設定跨區域負載平衡。透過在兩個區域成功部署執行個體,並設定負載平衡器來分配流量,您已具備實務知識,瞭解 Google Cloud 如何確保應用程式的高可用性和容錯能力。
Google Cloud 教育訓練與認證
協助您瞭解如何充分運用 Google Cloud 的技術。我們的課程會介紹專業技能和最佳做法,讓您可以快速掌握要領並持續進修。我們提供從基本到進階等級的訓練課程,並有隨選、線上和虛擬課程等選項,方便您抽空參加。認證可協助您驗證及證明自己在 Google Cloud 技術方面的技能和專業知識。
使用手冊上次更新日期:2024 年 11 月 7 日
實驗室上次測試日期:2024 年 11 月 7 日
Copyright 2025 Google LLC 保留所有權利。Google 和 Google 標誌是 Google LLC 的商標,其他公司和產品名稱則有可能是其關聯公司的商標。