使用健康检查功能

Google Cloud 提供的健康检查机制可确定后端实例是否能够正确响应流量。本文档介绍如何为负载均衡器和 Traffic Director 创建和使用健康检查。

本页面假定您熟悉以下概念:

创建健康检查

当您在 Google Cloud 控制台中完成负载均衡器的后端配置时,Cloud 控制台支持您创建或选择健康检查。

您还可以在 Google Cloud 控制台中创建与负载均衡器配置无关的健康检查。如果您需要首先创建健康检查,或者需要将一项健康检查用于多个负载均衡器,这将非常有用。 您可以使用 Google Cloud 控制台、Google Cloud CLI 或 REST API 创建健康检查。

控制台

  1. 转到 Google Cloud 控制台中的“健康检查”页面。
    转到“健康检查”页面
  2. 点击创建健康检查
  3. 在“创建健康检查”页面上,提供以下信息:
    • 名称:提供健康检查的名称。
    • 说明:提供说明(可选)。
    • 范围:选择全球级区域级具体取决于负载均衡器的类型
      • 如果选择区域级,请从下拉列表中选择区域
    • 协议:选择一项健康检查协议
    • 端口:提供端口号。在 Google Cloud 控制台中创建健康检查时,您必须使用端口号指定端口
    • 代理协议:您可以选择在健康检查探测系统发出的请求中附加一个代理标头。
    • 请求路径和响应 (Request path and Response):对于 HTTP、HTTPS 和 HTTP2 协议,您可以选择提供可供健康检查探测系统联系的网址路径。如需了解详情,请参阅用于 HTTP、HTTPS 和 HTTP/2 健康检查的额外标志
    • 请求响应:对于 TCP 和 SSL 协议,您可以指定要发送的 ASCII 文本字符串和预期的文本响应字符串。如需了解详情,请参阅用于 SSL 和 TCP 健康检查的额外标志
    • 检查间隔:定义从一次探测开始到下一次探测开始之间的时间。
    • 超时:定义 Google Cloud 等待探测响应的时间。其值必须小于或等于检查间隔时间。
    • 状况良好判断阈值:定义要将虚拟机实例视为运行状况良好所必须成功的连续探测次数。
    • 状况不佳判断阈值:定义要将虚拟机实例视为运行状况不佳所必须失败的连续探测次数。
  4. 点击创建

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 定义用于健康检查的协议。有效选项包括 grpchttphttpshttp2ssltcp
  • NAME 是健康检查的名称。在给定项目中:每个全球健康检查都必须具有唯一的名称,而地区性健康检查在给定区域内必须具有唯一的名称。
  • REGION:除了区域级外部应用负载均衡器和内部应用负载均衡器之外,其他所有负载均衡器均使用全球健康检查 (--global)。区域级内部应用负载均衡器使用区域级健康检查,其区域必须与后端服务的区域相匹配。
  • DESCRIPTION 是可选说明。
  • CHECK_INTERVAL 是从一次健康检查探测系统的连接开始到下一次相应连接开始之间的时间。该时间以秒为单位。如果省略,Google Cloud 使用的值为 5s(5 秒)。
  • TIMEOUT 是 Google Cloud 等待探测响应的时间量。TIMEOUT 的值必须小于或等于 CHECK_INTERVAL。该时间以秒为单位。如果省略,Google Cloud 使用的值为 5s(5 秒)。
  • HEALTHY_THRESHOLDUNHEALTHY_THRESHOLD 指定虚拟机实例被视为运行状况良好或运行状况不佳所必须成功或失败的连续探测次数。如果省略了其中任何一项,Google Cloud 使用的默认阈值为 2
  • PORT_SPECIFICATION:使用端口指定标志之一定义端口指定方式。
  • ADDITIONAL_FLAGS 是用于指定 PROTOCOL 特定端口和选项的其他标志。请参阅用于 HTTP、HTTPS 和 HTTP/2 健康检查的额外标志用于 SSL 和 TCP 健康检查的额外标志用于 gRPC 健康检查的额外标志

Terraform

如需创建全球健康检查,请使用 google_compute_health_check 资源。

resource "google_compute_health_check" "health_check_tcp_with_logging" {
  provider = google-beta

  name = "health-check-tcp"

  timeout_sec        = 1
  check_interval_sec = 1

  tcp_health_check {
    port = "22"
  }

  log_config {
    enable = true
  }
}

如需创建区域性健康检查,请使用 google_compute_region_health_check 资源。

resource "google_compute_region_health_check" "default" {
  name               = "tcp-health-check-region-west"
  timeout_sec        = 5
  check_interval_sec = 5
  tcp_health_check {
    port = "80"
  }
  region = "us-west1"
}

如需了解如何应用或移除 Terraform 配置,请参阅基本 Terraform 命令

API

修改健康检查

您无法通过修改健康检查将其转换为旧式健康检查(反之亦然)。此外,您也无法更改健康检查的名称或范围(例如,将范围从全球更改为地区)。

控制台

  1. 转到 Google Cloud 控制台中的“健康检查”页面。
    转到“健康检查”页面
  2. 点击一项健康检查即可查看其详情。
  3. 如果您需要修改一项健康检查,请点击修改,然后执行以下操作:
    • 根据需要更改其参数。
    • 点击保存

gcloud

  1. 确定健康检查的名称和范围。如需了解相关说明,请参阅列出健康检查

  2. 除了健康检查的名称、协议和范围之外,您可以修改任何通用标志端口指定标志和其他额外标志。如需修改现有健康检查,请使用适当的 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

  1. 确定健康检查的名称和范围。如需了解相关说明,请参阅列出健康检查

  2. 除了健康检查的名称、协议和范围之外,您可以使用以下 API 调用修改任何通用标志端口指定标志和其他额外标志。使用 patch API 调用来保留请求中未明确设置的任何预配置设置。

列出健康检查

控制台

  1. 转到 Google Cloud 控制台中的“健康检查”页面。
    转到“健康检查”页面
  2. 点击一项健康检查即可查看其详情。

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
    
  • 如需描述区域性健康检查,请将 NAMEREGION 分别替换为其名称和区域。

    gcloud compute health-checks describe NAME \
        --region=REGION
    

API

如需列出健康检查,请使用以下 API 调用:

如需描述健康检查的当前配置,请使用以下 API 调用:

额外的标志

本部分介绍了在创建或修改健康检查时可以使用的额外标志。某些标志(例如端口指定)必须使用 gcloud 或 API 进行设置。

端口指定标志

如果您使用 Google Cloud CLI 或 API 创建健康检查,可以通过两个选项来指定健康检查的端口。下表展示了各种有效的负载均衡器和后端组合所对应的端口指定选项。术语“实例组”指的是非代管实例组、可用区级代管式实例组或区域级代管式实例组。

每个健康检查只能使用一种类型的端口指定方式。

产品 后端类型 端口指定选项
外部直通式网络负载均衡器 实例组 --port:按编号指定 TCP 端口(从 165535
对于与外部直通式网络负载均衡器关联的健康检查,--use-serving-port 标志将被忽略,这是因为外部直通式网络负载均衡器的后端服务没有端口指定机制。
内部直通式网络负载均衡器 实例组 --port:按编号指定 TCP 端口(从 165535
对于与内部直通式网络负载均衡器关联的健康检查,--use-serving-port 标志将被忽略,这是因为内部直通式网络负载均衡器的后端服务没有端口指定机制。
全球外部应用负载均衡器

区域级外部应用负载均衡器

跨区域内部应用负载均衡器

区域级内部应用负载均衡器

全球外部代理网络负载均衡器

传统代理网络负载均衡器

区域级外部代理网络负载均衡器

区域级内部代理网络负载均衡器

跨区域内部代理网络负载均衡器

Traffic Director
可用区级 NEG --port:按编号指定 TCP 端口(从 165535
--use-serving-port:使用网络端点组中每个端点的端口。
实例组 --port:按编号指定 TCP 端口(从 165535
--use-serving-port:使用后端服务订阅的相同实例组已命名端口。

如果您省略端口指定方式,Google Cloud 会使用以下默认值:

  • 如果健康检查的协议是 TCPHTTP,则它使用 --port=80
  • 如果健康检查的协议是 SSLHTTPSHTTP2,则它使用 --port=443
  • 如果健康检查的协议为 GRPC,则没有隐含的默认值;您必须添加端口指定方式。

用于 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 可让您提供 Host HTTP 标头。如果省略,系统会使用负载均衡器的转发规则的 IP 地址。
  • PROXY_HEADER 必须是 NONEPROXY_V1 中的一个。如果省略,Google Cloud 会使用 NONEPROXY_V1 的值会添加标头 PROXY UNKNOWN\r\n
  • REQUEST_PATH 指定在发送健康检查请求时 Google Cloud 使用的网址路径。如果省略,则健康检查请求将发送到 /
  • RESPONSE 定义可选的预期响应。响应字符串必须符合以下规则:
    • 响应字符串必须包含 ASCII 字母、数字和空格。
    • 响应字符串的长度最多为 1024 个字符。
    • 支持通配符匹配。
    • 基于内容的检查不支持反转;例如,不支持 HAProxy 中的 ! 之类的运算符。

如果 Google Cloud 在接收到的响应正文的前 1024 字节中的任意位置找到了预期响应字符串,且 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 必须是 NONEPROXY_V1 中的一个。如果省略,Google Cloud 会使用 NONEPROXY_V1 的值会添加标头 PROXY UNKNOWN\r\n
  • REQUEST_STRING:您可以提供最长 1024 个 ASCII 字符的字符串,以便在建立 TCP 或 SSL 会话后发送。
  • RESPONSE_STRING:您可以提供最长 1024 个 ASCII 字符的字符串作为预期响应。

--request--response 标志修改健康检查探测的成功标准。如果您使用了 --response 标志,无论是单独使用还是与 --request 标志结合使用,返回的响应都必须与预期响应字符串完全匹配。

用于 gRPC 健康检查的额外标志

您的后端 gRPC 服务器必须实现 gRPC 健康状况服务(如 gRPC 健康检查协议中所述)。Google Cloud 通过调用您的后端运行状况服务的 Check 方法向您的后端发送 HealthCheckRequest 消息。除非指定了 gRPC 服务名称,否则请求中的服务参数会被设置为空字符串。

gRPC 健康检查可以检查 gRPC 服务的状态。您可以添加一个字符串(最多 1024 个 ASCII 字符),即在后端虚拟机或 NEG 上运行的特定 gRPC 服务的名称。为此,请为 gRPC 健康检查使用以下可选标志:

--grpc-service-name=GRPC_SERVICE_NAME

例如,您可能拥有后端服务器向后端的 gRPC 运行状况服务注册的服务和状态。

  • MyPackage.ServiceA,服务状态为 SERVING
  • MyPackage.ServiceB,服务状态为 NOT_SERVING
  • 空服务名称,服务状态为 NOT_SERVING

如果您针对 MyPackage.ServiceA 创建健康检查(如下所示),健康检查探测会返回 HEALTHY,因为服务的状态为 SERVING

gcloud beta 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_THRESHOLDUNHEALTHY_THRESHOLD 指定虚拟机实例被视为运行状况良好或运行状况不佳所必须成功或失败的连续探测次数。如果省略了其中任何一项,Google Cloud 使用的默认阈值为 2
  • HOST 可让您提供主机 HTTP 标头。如果省略,系统会使用负载均衡器的转发规则的 IP 地址。
  • PORT 可让您提供端口号。如果省略,Google Cloud 会使用 80
  • REQUEST_PATH 指定在发送健康检查请求时 Google Cloud 使用的网址路径。如果省略,则健康检查请求将发送到 /

API

Terraform

修改旧式健康检查

控制台

  1. 转到 Google Cloud 控制台中的“健康检查”页面。
    转到“健康检查”页面
  2. 点击一项健康检查即可查看其详情。
  3. 点击修改 ,进行更改,然后点击保存

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

除了旧式健康检查的名称和类型之外,您可以修改任何用于创建旧式健康检查的标志patch API 调用会保留未在 patch 请求中明确设置的任何预配置设置。

列出旧式健康检查

控制台

  1. 转到 Google Cloud 控制台中的“健康检查”页面。
    转到“健康检查”页面
  2. 点击一项旧式健康检查即可查看其详情。

gcloud

  1. 如需列出旧式 HTTP 健康检查,请使用 compute http-health-checks list 命令:

    gcloud compute http-health-checks list
    

    如需列出旧式 HTTPS 健康检查,请使用 compute https-health-checks list 命令:

    gcloud compute https-health-checks list
    
  2. 如需描述旧式 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

  1. 如需列出旧式健康检查,请执行以下操作:

  2. 如需描述旧式健康检查,请执行以下操作:

创建必需的防火墙规则

您需要创建适用于经过负载均衡处理的所有虚拟机的入站流量防火墙规则,以允许来自健康检查探测工具 IP 地址范围的流量。以下示例将创建一条防火墙规则,该规则适用于由特定目标标记标识的虚拟机实例。

本示例允许从 Google Cloud 健康检查系统传送到虚拟机实例的所有 TCP 流量。(TCP 流量包括 SSL、HTTP、HTTPS、HTTP/2 流量。)如果愿意,您可以在指定 TCP 协议的同时指定端口;不过如果指定了端口,那么您的防火墙规则可能专用于特定的健康检查。如果您为协议和端口使用 tcp:80,则会允许端口 80 上的 TCP 流量,这让 Google Cloud 可以使用 HTTP 协议通过端口 80 联系您的虚拟机,但无法使用 HTTPS 协议通过端口 443 联系这些虚拟机。

控制台

  1. 在 Google Cloud 控制台中,转到防火墙页面。
    前往“防火墙政策”
  2. 点击创建防火墙规则
  3. 在“创建防火墙规则”页面上,提供如下信息:
    • 名称:提供规则的名称。本示例使用的是 fw-allow-health-checks
    • 网络:选择一个 VPC 网络。
    • 优先级:输入一个表示优先级的数字。这个数字越小,优先级就越高。请确保防火墙规则的优先级高于可能会拒绝入站流量的其他规则的优先级。
    • 流量方向:选择入站
    • 匹配时执行的操作:选择允许
    • 目标:选择指定的目标标记,然后在目标标记字段中输入标记。本示例使用的是 allow-health-checks
    • 来源过滤条件:选择 IP 地址范围
    • 来源 IP 地址范围:根据负载均衡器类型、流量类型和健康检查类型输入来源 IP 地址范围。请参阅探测 IP 地址范围和防火墙规则
    • 允许的协议和端口:使用 tcp 和健康检查中配置的端口。TCP 是所有健康检查协议的底层协议。
    • 点击创建
  4. 在您经过负载均衡处理的每个实例上,添加网络标记,以将这条新的入站防火墙规则应用于这些实例。此示例使用 allow-health-checks 作为网络标记。

gcloud

  1. 使用以下 gcloud 命令创建一条名为 fw-allow-health-checks 的防火墙规则,用于允许从 Google Cloud 健康检查系统到 VPC 网络中具有 allow-health-checks 标记的实例的传入 TCP 连接。将 NETWORK_NAME 替换为您的 VPC 网络的名称,并将 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:PORT

    SOURCE_IP_RANGE 的值取决于负载均衡器类型、流量类型和健康检查类型。请参阅探测 IP 地址范围和防火墙规则

  2. 在您经过负载均衡处理的每个实例上,添加网络标记,以将这条新的入站防火墙规则应用于这些实例。此示例使用 allow-health-checks 作为网络标记。

如需了解详情,请参阅 gcloud 防火墙规则文档 API 文档

相关文档:

  • 如需了解为防火墙规则指定目标的详情,请参阅“防火墙规则概览”中的目标说明配置网络标记
  • 如需详细了解负载均衡器所需的所有防火墙规则,请参阅防火墙规则

将健康检查与负载均衡器相关联

如果您尚未查看,请查看健康检查概览:选择健康检查

如需将健康检查与新的负载均衡器相关联,请参阅相应负载均衡器的设置指南。本部分介绍了如何将健康检查与现有负载均衡器的后端服务相关联。

本部分假设您已经完成以下操作:

控制台

如需将健康检查与现有负载均衡器关联,请执行以下操作:

  1. 转到 Google Cloud 控制台中的“负载均衡”页面。
    转到“负载均衡”页面
  2. 点击负载均衡器即可查看其详情。
  3. 点击修改 ,然后点击后端配置
  4. 健康检查菜单中选择一项健康检查。
  5. 点击更新

gcloud

要将健康检查与现有后端服务相关联,请按以下步骤操作。

  1. 确定后端服务的名称和范围。对于外部直通式网络负载均衡器、内部直通式网络负载均衡器、区域级内部代理网络负载均衡器和外部代理网络负载均衡器,每个负载均衡器只有一个后端服务。外部应用负载均衡器和内部应用负载均衡器具有一个或多个与单个网址映射关联的后端服务。

    • 如需列出内部直通式负载均衡器的后端服务,请运行以下命令,并将 REGION_LIST 替换为要查询的 Google Cloud 区域列表(以英文逗号分隔)。

      gcloud compute backend-services list \
          --filter="region:( REGION1 REGION2 ... ) AND loadBalancingScheme=INTERNAL"
      
    • 如需列出外部直通式网络负载均衡器的后端服务,请运行以下命令,并将各 REGION 替换为要查询的 Google Cloud 区域。

      gcloud compute backend-services list \
          --filter="region:( REGION1 REGION2 ... ) AND loadBalancingScheme=EXTERNAL"
      
    • 如需列出全球外部代理网络负载均衡器的后端服务,请运行以下命令。

      gcloud compute backend-services list \
          --global \
          --filter="loadBalancingScheme=EXTERNAL_MANAGED" \
          --filter="protocol=(SSL,TCP)"
      
    • 如需列出传统代理网络负载均衡器的后端服务,请运行以下命令。

      gcloud compute backend-services list \
          --global \
          --filter="loadBalancingScheme=EXTERNAL" \
          --filter="protocol=(SSL,TCP)"
      
    • 如需列出区域级外部代理网络负载均衡器的后端服务,请运行以下命令。

      gcloud compute backend-services list \
          --region=REGION \
          --filter="loadBalancingScheme=EXTERNAL_MANAGED" \
          --filter="protocol=(SSL,TCP)"
      
    • 如需列出区域级内部代理网络负载均衡器的后端服务,请运行以下命令,并将 REGION_LIST 替换为要查询的 Google Cloud 区域列表(以英文逗号分隔)。

      gcloud beta compute backend-services list \
          --filter="region:( REGION1 REGION2 ... ) AND loadBalancingScheme=INTERNAL_MANAGED"
      
    • 如需使用 SSL 列出外部代理网络负载均衡器的后端服务,请运行以下命令。无论网络服务层级如何,这些负载均衡器的后端服务始终是全球性服务。

      gcloud compute backend-services list \
          --global \
          --filter="loadBalancingScheme=EXTERNAL" \
          --filter="protocol=(SSL,TCP)"
      
    • 如需确定外部应用负载均衡器的后端服务,请先确定网址映射,然后再描述映射。无论网络服务层级如何,外部应用负载均衡器或跨区域内部应用负载均衡器的网址映射和后端服务始终为全球性的。将 URL_MAP_NAME 替换为网址映射的名称。响应中会列出负载均衡器使用的后端服务。

      gcloud compute url-maps list \
          --global
      
      gcloud compute url-maps describe URL_MAP_NAME \
          --global
      
    • 如需确定区域级外部应用负载均衡器或区域级内部应用负载均衡器的后端服务,请先确定网址映射,然后再描述映射。这些负载均衡器的网址映射和后端服务都是区域性的。 将 REGION_LIST 替换为要查询的 Google Cloud 区域列表(以英文逗号分隔)。将 URL_MAP_NAME 替换为网址映射的名称,并将 REGION 替换为其区域。响应中会列出负载均衡器使用的后端服务。

      gcloud compute url-maps list \
          --regions=REGION_LIST
      
      gcloud compute url-maps describe URL_MAP_NAME \
          --region=REGION
      
  2. 确定健康检查。请参阅列出健康检查

  3. 使用 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
      
    • 更改全球外部代理网络负载均衡器、传统代理网络负载均衡器、全球外部应用负载均衡器、传统应用负载均衡器或跨区域内部应用负载均衡器的健康检查:这些负载均衡器的后端服务和健康检查都是全球性的。如果应用负载均衡器引用多个后端服务,则其可引用多个健康检查。

      gcloud compute backend-services update BACKEND_SERVICE_NAME \
          --global \
          --health-checks HEALTH_CHECK_NAME \
          --global-health-checks
      
    • 更改区域级外部应用负载均衡器、区域级外部代理网络负载均衡器、区域级内部应用负载均衡器或区域级内部代理网络负载均衡器的健康检查:后端服务和健康检查都是区域性的。如果某些负载均衡器可以引用多个后端服务,则其可引用多个健康检查。

      gcloud compute backend-services update BACKEND_SERVICE_NAME \
          --region=REGION \
          --health-checks=HEALTH_CHECK_NAME \
          --health-checks-region=REGION
      

API

  1. 您可以使用 backendServices.list API 调用列出后端服务。

  2. 查看健康检查

  3. 如需将健康检查与后端服务相关联,请使用以下 API 调用之一:

将旧式健康检查与基于目标池的外部直通式网络负载均衡器关联

如需将旧式健康检查与新的外部直通式网络负载均衡器关联,请参阅使用目标池设置外部直通式网络负载均衡器。本部分介绍如何将旧式健康检查与基于目标池的外部直通式网络负载均衡器关联。

本部分假设您已经完成以下操作:

控制台

如需将健康检查与现有基于目标池的外部直通式网络负载均衡器关联,请执行以下操作:

  1. 转到 Google Cloud 控制台中的“负载均衡”页面。
    转到“负载均衡”页面
  2. 点击负载均衡器即可查看其详情。
  3. 点击修改 ,然后点击后端配置
  4. 健康检查菜单中选择一项旧式健康检查。(此处仅显示符合条件的旧式健康检查。)
  5. 点击更新

gcloud

如需将健康检查与现有基于目标池的外部直通式网络负载均衡器关联,请执行以下操作:

  1. 确定目标池。外部直通式网络负载均衡器至少有一个目标池,还可能有辅助备用池。

    gcloud compute target-pools list
    
  2. 使用 HTTP 协议确定旧式健康检查。查看旧式健康检查(如有必要)。

  3. 将旧式健康检查与目标池相关联。在以下命令中,将 TARGET_POOL_NAMEREGION 分别替换为目标池的名称和地区,将 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

  1. 您可以使用 targetPools.list API 调用列出目标池。

  2. 查看旧式健康检查并确定一项旧式 HTTP 健康检查。

  3. 如需将旧式 HTTP 健康检查与目标池关联,请使用 targetPools.addHealthCheck API 调用。

检查健康检查状态

将健康检查与后端服务或目标池关联后,您可以获取负载均衡器的后端的即时健康检查状态。

控制台

  1. 转到负载均衡摘要页面。
    转到“负载平衡”页面
  2. 点击负载平衡器的名称。
  3. 后端下,检查运行状况良好列。系统会为每个后端实例组或网络端点组报告运行状况。

gcloud

  • 对于除基于目标池的外部直通网络负载均衡器之外的所有负载均衡器,请确定后端服务的名称和范围(全球性或区域性)。如需查看负载均衡器和范围的完整列表,请参阅后端服务

    使用 compute backend-services get-health 命令,并将 NAMEREGION 分别替换为后端服务的名称和区域(如果需要)。

    • 如需获取全球后端服务的即时运行状况,请运行以下命令:

      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

  • 对于除基于目标池的外部直通网络负载均衡器之外的所有负载均衡器,请确定后端服务的名称和范围(全球性或区域性)。如需查看负载均衡器和范围的完整列表,请参阅后端服务

  • 对于基于目标池的外部直通式网络负载均衡器,请使用 targetPools.getHealth