Google Cloud 提供健康狀態檢查機制,可判斷後端執行個體能否妥善回應流量。本文說明如何為負載平衡器和 Cloud Service Mesh 建立及使用健康狀態檢查。
本頁面假設您已熟悉下列概念:
建立健康狀態檢查
Google Cloud 可讓您在 Google Cloud 控制台中完成負載平衡器的後端設定時,建立或選取健康狀態檢查。
您也可以在 Google Cloud 控制台中,獨立於負載平衡器設定建立健康狀態檢查。如果您需要先建立健康狀態檢查,或是需要為多個負載平衡器使用健康狀態檢查,這就非常實用。您可以使用 Google Cloud 控制台、Google Cloud CLI 或 REST API 建立健康狀態檢查。
控制台
- 前往 Google Cloud 控制台的「健康狀態檢查」頁面。
前往「Health checks」(健康狀態檢查) 頁面 - 按一下 [Create a health check] (建立健康狀態檢查)。
- 在「建立健康狀態檢查」頁面中,提供下列資訊:
- 「Name」(名稱):提供健康狀態檢查的名稱。
- 「Description」(說明):(選用) 提供說明。
- 範圍:選取「全域」或「區域」,視負載平衡器類型而定。
- 如果選取「區域」,請從下拉式選單中選擇「區域」。
- 通訊協定:選擇健康狀態檢查通訊協定。
- 通訊埠:提供通訊埠編號。在 Google Cloud 控制台中建立健康狀態檢查時,必須使用通訊埠號碼指定通訊埠。
- 「Proxy protocol」(Proxy 通訊協定):(選用) 您可以將 Proxy 標頭附加到健康狀態檢查探測系統所發出的要求上。
- 「Request path and Response」(要求路徑和回應):(選用) 針對 HTTP、HTTPS 和 HTTP2 通訊協定,您可以提供能讓健康狀態檢查探測系統用來聯絡的網址路徑。詳情請參閱「HTTP、HTTPS 和 HTTP/2 健康狀態檢查的其他標記」。
- 要求和回應:如果是 TCP 和 SSL 通訊協定,您可以指定要傳送的 ASCII 文字字串,以及預期的文字回應字串。詳情請參閱「安全資料傳輸層 (SSL) 和傳輸控制通訊協定 (TCP) 健康狀態檢查的其他標記」。
- 檢查間隔:定義從一次探測作業開始到下一次探測作業開始之間的時間長度。
- 逾時:定義等待探測回應的時間長度。 Google Cloud 這個值必須小於或等於檢查時間間隔。
- 良好健康狀態判定門檻:定義 VM 執行個體必須連續成功探測的次數,才能判定為健康狀態良好。
- 不良健康狀態判定門檻:定義 VM 執行個體必須連續探測失敗的次數,才能判定為健康狀態不良。
- 點選「建立」。
gcloud
如要建立全域健康狀態檢查,請使用適當的
compute health-checks create指令:gcloud compute health-checks create PROTOCOL NAME \ --global \ --description=DESCRIPTION \ --check-interval=CHECK_INTERVAL \ --timeout=TIMEOUT \ --healthy-threshold=HEALTHY_THRESHOLD \ --unhealthy-threshold=UNHEALTHY_THRESHOLD \ PORT_SPECIFICATION \ ADDITIONAL_FLAGS如要建立區域性健康狀態檢查,請使用適當的
compute health-checks create指令:gcloud compute health-checks create PROTOCOL NAME \ --region=REGION \ --description=DESCRIPTION \ --check-interval=CHECK_INTERVAL \ --timeout=TIMEOUT \ --healthy-threshold=HEALTHY_THRESHOLD \ --unhealthy-threshold=UNHEALTHY_THRESHOLD \ PORT_SPECIFICATION \ ADDITIONAL_FLAGS
更改下列內容:
PROTOCOL:定義健康狀態檢查所用的通訊協定。有效選項為grpc、grpc-with-tls、http、https、http2、ssl和tcp。NAME:健康狀態檢查的名稱。在特定專案中,每個全域健康狀態檢查都必須有不重複的名稱,而區域健康狀態檢查在特定區域內則必須有不重複的名稱。REGION:健康狀態檢查的區域。如果是區域性負載平衡器,健康狀態檢查區域必須與後端服務的區域相符。DESCRIPTION:(選用) 提供說明。CHECK_INTERVAL是指從某個健康狀態檢查探測系統的連線開始時,到下一個健康狀態檢查探測系統的連線開始時的時間間隔。單位為秒。如果省略, Google Cloud 會使用5s值 (5 秒)。TIMEOUT是 Google Cloud等待探測回應的時間長度。TIMEOUT的值必須小於或等於CHECK_INTERVAL。單位為秒。如果省略,Google Cloud 會使用5s值 (5 秒)。HEALTHY_THRESHOLD和UNHEALTHY_THRESHOLD指定連續探測的次數,VM 執行個體必須成功或失敗這麼多次,才會被視為健康狀態良好或不良。如果省略任一值,Google Cloud 會使用預設的2門檻。PORT_SPECIFICATION:使用其中一個通訊埠規格旗標定義通訊埠規格。ADDITIONAL_FLAGS是其他旗標,用於指定連接埠和PROTOCOL專屬選項。請參閱「HTTP、HTTPS 和 HTTP/2 健康狀態檢查的其他標記」、「SSL 和 TCP 健康狀態檢查的其他標記」或「gRPC 健康狀態檢查的其他標記」。
Terraform
如要建立全域健康狀態檢查,請使用 google_compute_health_check 資源。
如要建立區域健康狀態檢查,請使用 google_compute_region_health_check 資源。
如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。
API
如要建立全域健康狀態檢查,請使用 healthChecks.insert
如要建立地區健康狀態檢查,請使用 regionHealthChecks.insert
修改健康狀態檢查
您無法透過修改健康狀態檢查,將健康狀態檢查轉換為舊版健康狀態檢查 (或反向操作)。此外,您也無法變更健康狀態檢查的名稱或範圍 (例如從全域變更為區域)。
控制台
- 前往 Google Cloud 控制台的「健康狀態檢查」頁面。
前往「Health checks」(健康狀態檢查) 頁面 - 按一下健康狀態檢查即可查看詳細資料。
- 如要修改健康狀態檢查,請按一下「編輯」,然後:
- 視需要修改參數。
- 按一下 [儲存]。
gcloud
找出健康狀態檢查的名稱和範圍。如需操作說明,請參閱「列出健康狀態檢查」。
除了健康狀態檢查的名稱、通訊協定和範圍之外,您還可以修改任何通用旗標、通訊埠規格旗標和其他額外旗標。如要修改現有健康狀態檢查,請使用適當的
compute health-checks update指令。如果省略旗標,系統會保留預先設定的值。修改全域健康狀態檢查的範例:下列指令會修改名為
hc-http-port-80的全域 HTTP 健康狀態檢查,變更檢查間隔、逾時和要求路徑:gcloud compute health-checks update http hc-http-port-80 \ --global \ --check-interval=20s \ --timeout=15s \ --request-path="/health"修改區域性健康狀態檢查的範例:下列指令會修改
us-west1中名為hc-west1-tcp-ldap的區域性 TCP 健康狀態檢查,變更其通訊埠規格:gcloud compute health-checks update tcp hc-west1-tcp-ldap \ --region=us-west1 \ --port=631
API
找出健康狀態檢查的名稱和範圍。如需操作說明,請參閱「房源健康檢查」。
除了健康狀態檢查的名稱、通訊協定和範圍,您可以使用這些 API 呼叫修改任何常見旗標、通訊埠規格旗標和其他額外旗標。使用
patchAPI 呼叫,保留要求中未明確設定的任何預先設定。如要修改全域健康狀態檢查,請使用 healthChecks.update 或 healthChecks.patch。
如要修改區域性健康狀態檢查,請使用 regionHealthChecks.update 或 regionHealthChecks.patch。
列出健康狀態檢查
控制台
- 前往 Google Cloud 控制台的「健康狀態檢查」頁面。
前往「Health checks」(健康狀態檢查) 頁面 - 按一下健康狀態檢查即可查看詳細資料。
gcloud
如要列出健康狀態檢查,請使用 compute health-checks
list 指令:
如要列出全域健康狀態檢查:
gcloud compute health-checks list \ --global如要列出地區健康狀態檢查,請將
REGION_LIST替換為以半形逗號分隔的 Google Cloud 查詢區域清單。gcloud compute health-checks list \ --regions=REGION_LIST
瞭解健康狀態檢查的名稱和範圍後,請使用 compute
health-checks
describe 指令查看目前的設定。
如要說明全域健康狀態檢查,請將
NAME替換為其名稱。gcloud compute health-checks describe NAME \ --global如要說明區域健康狀態檢查,請將
NAME替換為名稱,並將REGION替換為區域。gcloud compute health-checks describe NAME \ --region=REGION
API
如要列出健康狀態檢查,請使用下列 API 呼叫:
列出全域健康狀態檢查:healthChecks.list
如要列出區域健康狀態檢查,請使用 regionHealthChecks.list。
如要說明健康狀態檢查的目前設定,請使用:
如要說明全域健康狀態檢查:healthChecks.get
如要說明區域性健康狀態檢查,請使用 regionHealthChecks.get
其他旗標
本節說明建立或修改健康狀態檢查時可使用的其他旗標。部分標記 (例如通訊埠規格) 必須使用 gcloud 或 API 設定。
通訊埠規格標記
如果您使用 Google Cloud CLI 或 API 建立健康狀態檢查,可以透過兩種方式指定健康狀態檢查的連接埠。下表列出有效負載平衡器和後端組合的連接埠規格選項。「執行個體群組」一詞是指非代管執行個體群組、可用區代管執行個體群組或區域代管執行個體群組。
每項健康狀態檢查只能使用一種通訊埠規格。
| 產品 | 後端類型 | 通訊埠規格選項 |
|---|---|---|
| 區域性外部直通式網路負載平衡器 | 執行個體群組和支援的 NEG |
與內部直通式網路負載平衡器相關聯的健康狀態檢查會忽略 |
| 目標集區 | 支援通訊埠編號 (--port) 規格的舊版健康狀態檢查。 |
|
| 內部直通式網路負載平衡器 | 執行個體群組和支援的 NEG |
與內部直通式網路負載平衡器相關聯的健康狀態檢查會忽略 |
|
全域外部應用程式負載平衡器 傳統應用程式負載平衡器 區域外部應用程式負載平衡器 跨區域內部應用程式負載平衡器 區域內部應用程式負載平衡器 全域外部 Proxy 網路負載平衡器 傳統 Proxy 網路負載平衡器 區域外部 Proxy 網路負載平衡器 跨區域內部 Proxy 網路負載平衡器 區域內部 Proxy 網路負載平衡器 Cloud Service Mesh |
支援的 NEG |
|
| 執行個體群組 |
|
如果在建立健康狀態檢查時省略通訊埠規格,Google Cloud 會使用下列預設值:
- 如果健康狀態檢查的通訊協定為
tcp或http,則會使用--port=80。 - 如果健康狀態檢查的通訊協定為
ssl、https或http2,則會使用--port=443。 - 如果健康狀態檢查的通訊協定是
grpc或grpc_with_tls,則沒有隱含的預設值,您必須加入通訊埠規格。
HTTP、HTTPS 和 HTTP/2 健康狀態檢查的其他旗標
除了常用的標記和通訊埠規格之外,您還可以針對 HTTP、HTTPS 和 HTTP/2 健康狀態檢查使用以下的選用標記。本例會使用通訊埠 80 建立名為 hc-http-port-80 的 HTTP 健康狀態檢查,並採用預設間隔、逾時和健康狀態門檻條件。
gcloud compute health-checks create HTTP_PROTOCOL hc-http-port-80 \
COMMON_FLAGS \
PORT_SPECIFICATION \
--host=HOST \
--proxy-header=PROXY_HEADER \
--request-path=REQUEST_PATH \
--response=RESPONSE
HTTP_PROTOCOL:可以是http(不含 TLS 的 HTTP/1.1)、https(含 TLS 的 HTTP/1.1) 或http2(含 TLS 的 HTTP/2)。COMMON_FLAGS:定義常見旗標。請參閱「建立程序」。PORT_SPECIFICATION:使用其中一個通訊埠規格旗標定義通訊埠規格。HOST可讓您提供HostHTTP 標頭。如果您省略這個標記,系統會採用負載平衡器轉送規則所使用的 IP 位址。PROXY_HEADER:必須是NONE或PROXY_V1。如果省略此金鑰,Google Cloud 會使用NONE。PROXY_V1的值會新增標頭PROXY UNKNOWN\r\n。REQUEST_PATH會指定 Google Cloud 在傳送健康狀態檢查要求時使用的網址路徑。如果省略,系統會將健康狀態檢查要求傳送至/。RESPONSE:定義選用的預期回應。回應字串必須符合下列規則:- 回應字串只能包含 ASCII 字母、數字和空格。
- 回應字串的長度上限為 1,024 個字元。
- 「不」支援萬用字元比對功能。
- 內容檢查不支援反轉,例如 HAProxy 中的
!等運算子就不支援。
如果 Google Cloud 在收到的回應內文前 1,024 個位元組的任何位置找到預期回應字串,且 HTTP 狀態為 200 (OK),則探測會視為成功。
--request-path 和 --response 旗標會修改健康狀態檢查探測要求的成功標準。
安全資料傳輸層 (SSL) 和傳輸控制通訊協定 (TCP) 健康狀態檢查的其他旗標
除了常用的標記和通訊埠規格之外,您還可以針對 SSL 和 TCP 健康狀態檢查使用以下的選用標記。這個範例會使用通訊埠 3268 建立名為 hc-tcp-3268 的 TCP 健康狀態檢查,並採用預設間隔、逾時和健康狀態門檻條件。
gcloud compute health-checks create tcp hc-tcp-3268 \
COMMON_FLAGS \
PORT_SPECIFICATION \
--proxy-header=PROXY_HEADER \
--request=REQUEST_STRING \
--response=RESPONSE_STRING
- 通訊協定可以是
tcp(本例) 或ssl。 COMMON_FLAGS:定義常見旗標。請參閱「建立程序」。PORT_SPECIFICATION:使用其中一個通訊埠規格旗標定義通訊埠規格。PROXY_HEADER:必須是NONE或PROXY_V1。如果省略此金鑰,Google Cloud 會使用NONE。PROXY_V1的值會新增標頭PROXY UNKNOWN\r\n。REQUEST_STRING:您可以提供最長 1,024 個 ASCII 字元的字串,讓系統能在 TCP 或 SSL 工作階段建立時立刻傳送。RESPONSE_STRING:您可以提供最長 1,024 個 ASCII 字元的字串,做為預期的回應。
--request 和 --response 旗標會修改健康狀態檢查探測要求的成功標準。如果您使用 --response 旗標 (單獨使用或與 --request 旗標搭配使用),傳回的回應必須與預期的回應字串完全相符。
gRPC 健康狀態檢查的其他旗標
後端 gRPC 伺服器必須實作 gRPC 健康狀態服務,如 gRPC 健康狀態檢查通訊協定所述。Google Cloud 會呼叫後端健康狀態服務的 Check 方法,將 HealthCheckRequest 訊息傳送至後端。除非指定 gRPC 服務名稱,否則要求中的服務參數會設為空字串。
gRPC 健康狀態檢查可檢查 gRPC 服務的狀態。您可以加入字串,長度最多 1,024 個 ASCII 字元,這是後端 VM 或 NEG 上執行的特定 gRPC 服務名稱。如要執行這項操作,請使用下列 gRPC 健康狀態檢查的選用標記:
--grpc-service-name=GRPC_SERVICE_NAME
舉例來說,後端伺服器可能會向後端的 gRPC 健康狀態服務註冊下列服務和狀態。
MyPackage.ServiceA放送狀態SERVINGMyPackage.ServiceB放送狀態NOT_SERVING- 服務名稱空白,放送狀態為
NOT_SERVING
如果您針對 MyPackage.ServiceA 建立健康狀態檢查,如下所示,健康狀態檢查探測器會傳回 HEALTHY,因為服務的狀態為 SERVING。
gcloud compute health-checks create grpc MyGrpcHealthCheckServiceA \
--grpc-service-name=MyPackage.ServiceA
如果您針對 MyPackage.ServiceB 建立健康狀態檢查,健康狀態檢查探測會傳回 UNHEALTHY,因為服務的狀態為 NOT_SERVING。
如果您針對未向 gRPC 健康狀態服務註冊的 MyPackage.ServiceC 建立健康狀態檢查,健康狀態檢查探測會傳回 gRPC 狀態 NOT_FOUND,這相當於 UNHEALTHY。
如果針對空白服務名稱建立健康狀態檢查,健康狀態檢查探測會傳回 UNHEALTHY 狀態,因為空白服務名稱已註冊為 NOT_SERVING 狀態。
舊版健康狀態檢查
本節說明如何建立、修改及列出舊版 HTTP 和 HTTPS 健康狀態檢查。您無法將舊版健康狀態檢查轉換為健康狀態檢查,也無法將健康狀態檢查轉換為舊版健康狀態檢查。
如要瞭解哪些類型的負載平衡器支援舊版健康狀態檢查,請參閱「負載平衡器指南」。
建立舊版健康狀態檢查
控制台
雖然 Google Cloud 控制台的健康狀態檢查頁面會列出健康狀態檢查和舊版健康狀態檢查,並允許您編輯兩者,但您無法透過 Google Cloud 控制台的健康狀態檢查頁面建立新的舊版健康狀態檢查。
您只能在 Google Cloud 控制台中建立舊版健康狀態檢查,且僅限建立以目標集區為基礎的區域外部直通式網路負載平衡器時。如要單獨建立舊版健康狀態檢查,請使用本節的 gcloud 或 API 指示。
gcloud
如要建立舊版健康狀態檢查,請使用 compute http-health-checks
create 指令:
gcloud compute LEGACY_CHECK_TYPE create NAME \
--description=DESCRIPTION \
--check-interval=CHECK_INTERVAL \
--timeout=TIMEOUT \
--healthy-threshold=HEALTHY_THRESHOLD \
--unhealthy-threshold=UNHEALTHY_THRESHOLD \
--host=HOST \
--port=PORT \
--request-path=REQUEST_PATH
更改下列內容:
LEGACY_CHECK_TYPE是舊版 HTTP 健康狀態檢查的http-health-checks,或是舊版 HTTPS 健康狀態檢查的https-health-checks。如果您要為以目標集區為基礎的區域外部直通式網路負載平衡器建立舊版健康狀態檢查,則必須使用http-health-checks。NAME是舊版健康狀態檢查的名稱。 在特定專案中,每個舊版健康狀態檢查的名稱不得重複。DESCRIPTION:(選用) 提供說明。CHECK_INTERVAL:從某次探測作業開始到下一次探測作業開始之間的時間長度,單位為秒。如果省略,Google Cloud 會使用5s值 (5 秒)。TIMEOUT是 Google Cloud 等待探測回應的時間長度。TIMEOUT的值必須小於或等於CHECK_INTERVAL。單位為秒。如果省略, Google Cloud 會使用5s(5 秒) 的值。HEALTHY_THRESHOLD和UNHEALTHY_THRESHOLD:指定探測作業必須要連續成功或失敗多少次,才會讓系統認定該 VM 執行個體的健康狀態良好或不良。如果省略任一值,Google Cloud 會使用預設的2門檻。HOST可讓您提供主機 HTTP 標頭。如果您省略這個標記,系統會採用負載平衡器轉送規則所使用的 IP 位址。PORT可讓您提供通訊埠號碼。如果省略此金鑰,Google Cloud 會使用80。REQUEST_PATH會指定 Google Cloud在傳送健康狀態檢查要求時使用的網址路徑。如果省略,健康狀態檢查要求會傳送至/。
API
如要建立舊版 HTTP 健康狀態檢查,請使用 httpHealthChecks.insert API 呼叫。
如要建立舊版 HTTPS 健康狀態檢查,請使用 httpsHealthChecks.insert。
Terraform
如要建立舊版 HTTP 健康狀態檢查資源,請使用
google_compute_http_health_check資源。如要建立舊版 HTTPS 健康狀態檢查資源,請使用
google_compute_https_health_check資源。
修改舊版健康狀態檢查
控制台
- 前往 Google Cloud 控制台的「健康狀態檢查」頁面。
前往「Health checks」(健康狀態檢查) 頁面 - 按一下健康狀態檢查即可查看詳細資料。
- 按一下「編輯」圖示 進行變更,然後按一下「儲存」。
gcloud
如要修改舊版 HTTP 健康狀態檢查,請使用
compute http-health-checks update指令,並將NAME替換為其名稱。使用gcloud修改舊版健康檢查時,系統會保留您省略的標記預先設定。OTHER_OPTIONS是建立舊版健康狀態檢查時的選項。gcloud compute http-health-checks update NAME \ OTHER_OPTIONS
如要修改舊版 HTTPS 健康狀態檢查,請使用
compute https-health-checks update指令,並將NAME替換為其名稱。使用gcloud修改舊版健康檢查時,系統會保留您省略的標記預先設定。OTHER_OPTIONS是建立舊版健康狀態檢查時的選項。gcloud compute https-health-checks update NAME \ OTHER_OPTIONS
API
除了舊版健康狀態檢查的名稱和類型,您還可以修改用於建立健康狀態檢查的任何旗標。patchAPI 呼叫會保留所有預先設定,但修補要求中明確設定的除外。
如要修改舊版 HTTP 健康狀態檢查,請使用 httpHealthChecks.update 或 httpHealthChecks.patch。
如要修改舊版 HTTPS 健康狀態檢查,請使用 httpsHealthChecks.update 或 httpsHealthChecks.patch。
列出舊版健康狀態檢查
控制台
- 前往 Google Cloud 控制台的「健康狀態檢查」頁面。
前往「Health checks」(健康狀態檢查) 頁面 - 按一下舊版健康檢查,即可查看詳細資料。
gcloud
如要列出舊版 HTTP 健康狀態檢查,請使用
compute http-health-checks list指令:gcloud compute http-health-checks list
如要列出舊版 HTTPS 健康狀態檢查,請使用
compute https-health-checks list指令:gcloud compute https-health-checks list
如要說明舊版 HTTP 健康狀態檢查,請使用
compute http-health-checks describe指令,並將NAME替換為其名稱。gcloud compute http-health-checks describe NAME
如要說明舊版 HTTPS 健康狀態檢查,請使用
compute https-health-checks describe指令,並將NAME替換為檢查名稱。gcloud compute https-health-checks describe NAME
API
如要列出舊版健康狀態檢查,請執行下列操作:
使用 httpHealthChecks.list 列出舊版 HTTP 健康狀態檢查。
使用 httpsHealthChecks.list 列出舊版 HTTPS 健康狀態檢查。
如要說明舊版健康狀態檢查,請按照下列步驟操作:
使用 httpHealthChecks.get 說明舊版 HTTP 健康狀態檢查。
使用 httpsHealthChecks.get 說明舊版 HTTPS 健康狀態檢查。
建立必要的防火牆規則
您需要為所有負載平衡的 VM 建立適用的輸入防火牆規則,允許來自健康狀態檢查探測器 IP 範圍的流量。下列範例會建立防火牆規則,適用於以特定目標標記識別的 VM 執行個體。
這個範例允許來自 Google Cloud 健康狀態檢查系統的所有 TCP 流量進入 VM 執行個體。(TCP 流量包括 SSL、HTTP、HTTPS 和 HTTP/2 流量)。如果您想要,可以在指定通訊埠時一併指定 TCP 通訊協定;不過,如果您指定了通訊埠,該防火牆規則可能會變成特定健康狀態檢查專用的規則。如果您使用 tcp:80 做為通訊協定和通訊埠,這會允許通訊埠 80 的 TCP 流量,因此 Google Cloud 可以透過通訊埠 80 上的 HTTP 與 VM 聯絡,但無法透過通訊埠 443 上的 HTTPS 與 VM 聯絡。
控制台
- 前往 Google Cloud 控制台的「Firewall policies」(防火牆政策) 頁面。
前往「防火牆政策」頁面 - 按一下「Create firewall rule」(建立防火牆規則)。
- 在「建立防火牆規則」頁面中,提供下列資訊:
- 「Name」(名稱):提供規則的名稱。在本範例中,請使用
fw-allow-health-checks。 - 網路:選擇虛擬私有雲網路。
- 「Priority」(優先順序):輸入代表優先順序的數字。數字越小,優先順序越高。請確保該防火牆規則的優先順序,高於其他可能會拒絕輸入流量的規則。
- 「Direction of traffic」(流量方向):選擇 [ingress] (輸入)。
- 「Action on match」(相符時執行的動作):選擇 [allow] (允許)。
- 目標:選擇「指定的目標標記」,然後在「目標標記」欄位中輸入標記。在本範例中,請使用
allow-health-checks。 - 「Source filter」(來源篩選器):選擇 [IP ranges] (IP 範圍)。
- 來源 IP 範圍:根據負載平衡器類型、流量類型和健康狀態檢查類型,輸入來源 IP 範圍。請參閱「探查 IP 範圍和防火牆規則」。
- 允許的通訊協定和通訊埠:使用
tcp和健康檢查中設定的通訊埠。所有健康狀態檢查通訊協定的底層通訊協定都是 TCP。 - 點選「建立」。
- 「Name」(名稱):提供規則的名稱。在本範例中,請使用
- 在每個已負載平衡的執行個體上新增網路標記,好讓這個新的輸入防火牆規則能夠套用在這些執行個體上。本例使用
allow-health-checks做為網路標記。
gcloud
使用下列
gcloud指令建立名為fw-allow-health-checks的防火牆規則,允許來自Google Cloud 健康狀態檢查系統的 TCP 連入連線,連至虛擬私有雲網路中具有allow-health-checks標記的執行個體。 根據負載平衡器類型,系統支援不同的探查 IP 範圍和防火牆規則,可將 IPv6 流量傳輸至後端。將
NETWORK_NAME替換為虛擬私有雲網路名稱,並將PORT替換為負載平衡器使用的連接埠。gcloud compute firewall-rules create fw-allow-health-checks \ --network=NETWORK_NAME \ --action=ALLOW \ --direction=INGRESS \ --source-ranges=SOURCE_IP_RANGE \ --target-tags=allow-health-checks \ --rules=tcp:PORTSOURCE_IP_RANGE 的值取決於負載平衡器類型、流量類型和健康狀態檢查類型。請參閱「探查 IP 範圍和防火牆規則」。
在每個已負載平衡的執行個體上新增網路標記,好讓這個新的輸入防火牆規則能夠套用在這些執行個體上。本例使用
allow-health-checks做為網路標記。
詳情請參閱gcloud 防火牆規則文件和 API 文件。
相關說明文件:
將健康狀態檢查與負載平衡器建立關聯
如果尚未完成,請參閱「健康狀態檢查總覽:選取健康狀態檢查」。
如要將健康狀態檢查與新的負載平衡器建立關聯,請參閱相應負載平衡器的設定指南。本節說明如何將健康狀態檢查與現有負載平衡器的後端服務建立關聯。
本節假設您已經:
控制台
如要將健康狀態檢查與現有負載平衡器建立關聯,請按照下列步驟操作:
- 前往 Google Cloud 控制台的「Load balancing」(負載平衡) 頁面。
前往「Load balancing」(負載平衡) 頁面 - 按一下負載平衡器,即可查看詳細資料。
- 依序點選「編輯」圖示 和「後端設定」。
- 選擇「Health check」(健康狀態檢查) 選單中的某個健康狀態檢查。
- 按一下「Update」。
gcloud
如要將健康狀態檢查與現有後端服務建立關聯,請按照下列步驟操作。
找出後端服務的名稱和範圍。直通式網路負載平衡器和 Proxy 網路負載平衡器,每個負載平衡器只有一個後端服務。應用程式負載平衡器會將一或多個後端服務與單一網址對應建立關聯。
如要列出內部直通式網路負載平衡器的後端服務,請執行下列指令。
gcloud compute backend-services list \ --region=REGION \ --filter="loadBalancingScheme=INTERNAL"如要列出區域外部直通式網路負載平衡器的後端服務,請執行下列指令。
gcloud compute backend-services list \ --region=REGION \ --filter="loadBalancingScheme=EXTERNAL"
如要列出全域外部 Proxy 網路負載平衡器的後端服務,請執行下列指令。
gcloud compute backend-services list \ --global \ --filter="loadBalancingScheme=EXTERNAL_MANAGED" \ --filter="protocol=(SSL,TCP)"如要列出傳統版 Proxy 網路負載平衡器的後端服務,請執行下列指令。
gcloud compute backend-services list \ --global \ --filter="loadBalancingScheme=EXTERNAL" \ --filter="protocol=(SSL,TCP)"如要列出跨區域內部 Proxy 網路負載平衡器的後端服務,請執行下列指令。
gcloud compute backend-services list \ --global \ --filter="loadBalancingScheme=INTERNAL_MANAGED" \ --filter="protocol=(SSL,TCP)"
如要列出區域性外部 Proxy 網路負載平衡器的後端服務,請執行下列指令。
gcloud compute backend-services list \ --region=REGION \ --filter="loadBalancingScheme=EXTERNAL_MANAGED" \ --filter="protocol=(SSL,TCP)"如要列出區域性內部 Proxy 網路負載平衡器的後端服務,請執行下列指令。
gcloud compute backend-services list \ --region=REGION \ --filter="loadBalancingScheme=INTERNAL_MANAGED" \ --filter="protocol=(SSL,TCP)"
如要找出全域外部應用程式負載平衡器、傳統版應用程式負載平衡器和跨區域內部應用程式負載平衡器的後端服務,請先找出網址對應,然後說明該對應。無論網路服務等級為何,這些負載平衡器的網址對應和後端服務一律為全域。將
URL_MAP_NAME替換為網址對應的名稱。回應中會列出負載平衡器使用的後端服務。gcloud compute url-maps list \ --globalgcloud compute url-maps describe URL_MAP_NAME \ --global
如要找出區域外部應用程式負載平衡器或區域內部應用程式負載平衡器的後端服務,請先找出網址對應,然後說明該對應。這些負載平衡器的網址對應和後端服務都是區域性的。 將
REGION_LIST替換為以半形逗號分隔的Google Cloud 查詢區域清單。將URL_MAP_NAME替換為網址對應的名稱,並將REGION替換為網址對應的區域。回應中會列出負載平衡器使用的後端服務。gcloud compute url-maps list \ --regions=REGION_LISTgcloud compute url-maps describe URL_MAP_NAME \ --region=REGION
找出所需的健康狀態檢查。請參閱「列出健康狀態檢查」。
使用
compute backend-services update指令,將健康狀態檢查與後端服務建立關聯。 每個後端服務都必須參照單一健康狀態檢查。在下列指令中,請將BACKEND_SERVICE_NAME替換為後端服務的名稱,HEALTH_CHECK_NAME替換為健康檢查的名稱,並視需要將REGION替換為後端服務、健康檢查或兩者的Google Cloud 區域。如要變更內部直通式網路負載平衡器的健康狀態檢查:內部直通式網路負載平衡器的後端服務屬於區域性服務。它可以參照全域或區域健康狀態檢查。以下範例顯示區域健康檢查參考資料。如果搭配內部直通式網路負載平衡器使用全域健康狀態檢查,請使用
--global-health-checks,而非--health-checks-region。gcloud compute backend-services update BACKEND_SERVICE_NAME \ --region=REGION \ --health-checks=HEALTH_CHECK_NAME \ --health-checks-region=REGION如要變更後端服務型區域外部直通式網路負載平衡器的健康狀態檢查,請注意,區域外部直通式網路負載平衡器的後端服務是區域性的。可參照區域性健康狀態檢查。
gcloud compute backend-services update BACKEND_SERVICE_NAME \ --region=REGION \ --health-checks=HEALTH_CHECK_NAME \ --health-checks-region=REGION
如要變更全域外部 Proxy 網路負載平衡器、傳統版 Proxy 網路負載平衡器、全域外部應用程式負載平衡器、傳統版應用程式負載平衡器或跨區域內部應用程式負載平衡器的健康狀態檢查,這些負載平衡器的後端服務和健康狀態檢查都是全域的。如果應用程式負載平衡器參照多項後端服務,可以參照多項健康狀態檢查。
gcloud compute backend-services update BACKEND_SERVICE_NAME \ --global \ --health-checks HEALTH_CHECK_NAME \ --global-health-checks
如要變更區域性外部應用程式負載平衡器、區域性外部 Proxy 網路負載平衡器、區域性內部應用程式負載平衡器或區域性內部 Proxy 網路負載平衡器的健康狀態檢查:後端服務和健康狀態檢查都是區域性的。如果負載平衡器可以參照多項後端服務,則可能會參照多項健康狀態檢查。
gcloud compute backend-services update BACKEND_SERVICE_NAME \ --region=REGION \ --health-checks=HEALTH_CHECK_NAME \ --health-checks-region=REGION
API
您可以利用 backendServices.list API 呼叫來列出後端服務。
如要將健康狀態檢查與後端服務建立關聯,請使用下列任一 API 呼叫:
將舊版健康狀態檢查與目標集區型區域性外部直通式網路負載平衡器建立關聯
如要將舊版健康狀態檢查與新的區域性外部直通式網路負載平衡器建立關聯,請參閱「設定具備目標集區的區域性外部直通式網路負載平衡器」。本節說明如何將舊版健康狀態檢查與目標集區型區域外部直通式網路負載平衡器建立關聯。
本節假設您已經:
控制台
如要將健康狀態檢查與現有的目標集區型區域外部直通式網路負載平衡器建立關聯,請按照下列步驟操作:
- 前往 Google Cloud 控制台的「Load balancing」(負載平衡) 頁面。
前往「Load balancing」(負載平衡) 頁面 - 按一下負載平衡器,即可查看詳細資料。
- 依序點選「編輯」圖示 和「後端設定」。
- 選擇「Health check」(健康狀態檢查) 選單中的某個舊版健康狀態檢查 (畫面只會顯示符合資格的舊版健康狀態檢查)。
- 按一下「Update」。
gcloud
如要將健康狀態檢查與現有的目標集區型區域外部直通式網路負載平衡器建立關聯,請按照下列步驟操作:
找出目標集區。區域性外部直通式網路負載平衡器至少有一個目標集區,也可能有一個次要備份集區。
gcloud compute target-pools list
找出使用
HTTP通訊協定的舊版健康狀態檢查。視需要查看舊版健康檢查。建立舊版健康狀態檢查與目標集區之間的關聯。請在下面的指令中,將
TARGET_POOL_NAME替換成目標集區的名稱、將REGION替換成目標集區的地區,並將LEGACY_CHECK_NAME替換成舊版健康狀態檢查的名稱。舊版健康狀態檢查必須使用 HTTP 通訊協定。如何移除目標集區的舊版 HTTP 健康狀態檢查:
gcloud compute target-pools remove-health-checks TARGET_POOL_NAME \ --region=REGION \ --http-health-check LEGACY_CHECK_NAME如何為目標集區新增舊版 HTTP 健康狀態檢查:
gcloud compute target-pools add-health-checks TARGET_POOL_NAME \ --region=REGION \ --http-health-check LEGACY_CHECK_NAME
API
您可以利用 targetPools.list API 呼叫來列出目標集區。
查看舊版健康狀態檢查,並找出所需的舊版 HTTP 健康狀態檢查。
如要建立舊版 HTTP 健康狀態檢查與目標集區之間的關聯,請使用 API 呼叫 targetPools.addHealthCheck。
查看健康狀態檢查狀態
將健康狀態檢查與後端服務或目標集區建立關聯後,您就能取得負載平衡器後端的即時健康狀態檢查狀態。
控制台
- 前往「Load balancing」(負載平衡) 摘要頁面。
前往「Load balancing」(負載平衡) 頁面 - 按一下負載平衡器的名稱。
- 在「後端」下方,檢查「健康狀態」欄位。系統會回報每個後端執行個體群組或網路端點群組的健康狀態。
gcloud
針對目標集區型區域外部直通式網路負載平衡器以外的所有負載平衡器,請找出後端服務的名稱和範圍 (全域或區域)。如需負載平衡器和範圍的完整清單,請參閱「後端服務」。
使用
compute backend-services get-health指令,並視需要將NAME替換為後端服務名稱,REGION則替換為後端服務區域。如要取得全域後端服務的即時健康狀態:
gcloud compute backend-services get-health GLOBAL_BACKEND_SERVICE_NAME \ --global如要取得區域後端服務的即時健康狀態,請執行下列操作:
gcloud compute backend-services get-health REGIONAL_BACKEND_SERVICE_NAME \ --region=REGION
如果是以目標集區為基礎的區域外部直通式網路負載平衡器,請找出負載平衡器目標集區的名稱和區域,然後使用
compute target-pools get-health指令,將NAME替換為目標集區的名稱,並將REGION替換為目標集區的區域。gcloud compute target-pools get-health TARGET_POOL_NAME \ --region=REGION
API
針對目標集區型區域外部直通式網路負載平衡器以外的所有負載平衡器,請找出後端服務的名稱和範圍 (全域或區域)。如需負載平衡器和範圍的完整清單,請參閱「後端服務」。
如要取得全域後端服務的即時健康狀態,請使用 backendServices.getHealth
如要取得區域後端服務的即時健康狀態,請使用 regionBackendServices.getHealth
如果是以目標集區為基礎的區域性外部直通式網路負載平衡器,請使用 targetPools.getHealth