创建运行状况检查

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

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

运行状况检查类别、协议和端口

Google Cloud 按类别和协议组织运行状况检查。

运行状况检查分为两种类别,即运行状况检查旧式运行状况检查。每种运行状况检查类别都支持一组不同的协议,并且都允许指定用于执行运行状况检查的端口。

Traffic Director 和大多数负载平衡器使用非旧版运行状况检查,但是基于目标池的网络负载平衡要求使用旧版运行状况检查。如需了解如何确定适当的类别、协议以及如何指定适当的端口,请参阅运行状况检查概览页面中的选择运行状况检查

您为运行状况检查选择的协议不必与负载平衡器本身使用的协议匹配,在某些情况下,两者也不能相同。如需了解详情,请参阅协议和负载平衡器

“运行状况检查”一词不代指旧式运行状况检查。在本文中,我们会用术语“旧式运行状况检查”来明确指明此类检查。

列出运行状况检查

控制台

  1. 转到 Google Cloud Console 中的“运行状况检查”页面。
    转到“运行状况检查”页面
  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 调用:

创建运行状况检查

当您在 Google Cloud 中完成负载平衡器的后端配置时,Cloud Console 允许您创建或选择运行状况检查。

您还可以在 Cloud Console 中创建与负载平衡器配置无关的运行状况检查。如果您需要首先创建运行状况检查,或者需要将一项运行状况检查用于多个负载平衡器,这将非常有用。您可以使用 Cloud Console、gcloud 命令行工具或 REST API 创建运行状况检查。

控制台

  1. 转到 Google Cloud Console 中的“运行状况检查”页面。
    转到“运行状况检查”页面
  2. 点击创建运行状况检查
  3. 在“创建运行状况检查”页面上,提供以下信息:
    • 名称:提供运行状况检查的名称。
    • 说明:提供说明(可选)。
    • 协议:选择一项运行状况检查协议
    • 端口:提供端口号。在 Cloud Console 中创建运行状况检查时,您必须使用端口号指定端口
    • 代理协议:您可以选择在运行状况检查探测系统发出的请求中附加一个代理标头。
    • 请求路径和响应 (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:除了内部 HTTP(S) 负载平衡器之外,其他所有负载平衡器都使用全球运行状况检查 (--global)。内部 HTTP(S) 负载平衡器使用地区性运行状况检查,其地区必须与后端服务的地区匹配。
  • 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 运行状况检查的额外标志

API

修改运行状况检查

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

控制台

  1. 转到 Google Cloud Console 中的“运行状况检查”页面。
    转到“运行状况检查”页面
  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 调用来保留请求中未明确设置的任何预配置设置。

额外的标志

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

端口指定标志

如果您使用 gcloud 命令行工具或 API 创建运行状况检查,可以通过两个选项来指定运行状况检查的端口。下表展示了各种有效的负载平衡器和后端组合所对应的端口指定选项。“实例组”一词指的是非代管实例组、区域性代管实例组或地区性代管实例组。

每个运行状况检查只能使用一种类型的端口指定方式。

产品 后端类型 端口指定选项
网络负载平衡 实例组 --port:按编号指定 TCP 端口(从 165535
对于与网络负载平衡器关联的运行状况检查,--use-serving-port 标志将被忽略,因为网络负载平衡器的后端服务没有端口指定机制。
内部 TCP/UDP 负载平衡 实例组 --port:按编号指定 TCP 端口(从 165535
对于与内部 TCP/UDP 负载平衡器关联的运行状况检查,--use-serving-port 标志将被忽略,因为内部 TCP/UDP 负载平衡器的后端服务没有端口指定机制。
内部 HTTP(S) 负载平衡

TCP 代理负载平衡

SSL 代理负载平衡

外部 HTTP(S) 负载平衡

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 运行状况检查。

如果旧版运行状况检查探测收到的响应是 HTTP 200 OK,则探测被视为成功。所有其他 HTTP 响应代码(包括重定向 301302)均被视为运行状况不佳。

列出旧式运行状况检查

控制台

  1. 转到 Google Cloud Console 中的“运行状况检查”页面。
    转到“运行状况检查”页面
  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. 如需描述旧式运行状况检查,请执行以下操作:

创建旧式运行状况检查

控制台

虽然 Cloud Console 的运行状况检查页面同时列出了运行状况检查和旧式运行状况检查并允许您进行修改,但您无法从 Cloud Console 的运行状况检查页面创建新的旧式运行状况检查。

如需创建旧式运行状况检查,请使用 Cloud Console 的网络负载平衡器页面或使用本部分的 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

修改旧式运行状况检查

控制台

  1. 转到 Google Cloud Console 中的“运行状况检查”页面。
    转到“运行状况检查”页面
  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 请求中明确设置的任何预配置设置。

必需的防火墙规则

您需要创建适用于经过负载平衡处理的所有虚拟机的入站防火墙规则,以允许来自运行状况检查探测工具 IP 地址范围的流量。下面的示例通过目标标记创建适用于虚拟机实例的防火墙规则。如需了解为防火墙规则指定目标的详情,请参阅“防火墙规则概览”中的目标说明配置网络标记

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

用于运行状况检查的防火墙规则

下面的示例为以下负载平衡器创建入站防火墙规则:

  • 内部 TCP/UDP 负载平衡(运行状况检查)
  • 内部 HTTP(S) 负载平衡(运行状况检查)
  • TCP 代理负载平衡(运行状况检查)
  • SSL 代理负载平衡(运行状况检查)
  • HTTP(S) 负载平衡(运行状况检查和旧式运行状况检查)

对于这些负载平衡器,运行状况检查(包括用于 HTTP(S) 负载平衡的旧式运行状况检查)的来源 IP 地址范围如下所示:

  • 35.191.0.0/16
  • 130.211.0.0/22

对于内部 HTTP(S) 负载平衡,来源 IP 地址范围是代理专用子网中的所有 IP 地址。

如果您需要创建网络负载平衡规则,请参阅下一部分,即网络负载平衡规则

控制台

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

gcloud

  1. 使用以下 gcloud 命令创建一条名为 fw-allow-health-checks 的防火墙规则,用于允许从 Google Cloud 运行状况检查系统到 VPC 网络中具有 allow-health-checks 标记的实例的传入 TCP 连接。将 NETWORK_NAME 替换为您的 VPC 网络名称。

    gcloud compute firewall-rules create fw-allow-health-checks \
        --network=NETWORK_NAME \
        --action=ALLOW \
        --direction=INGRESS \
        --source-ranges=35.191.0.0/16,130.211.0.0/22 \
        --target-tags=allow-health-checks \
        --rules=tcp
  2. 在您经过负载平衡处理的每个实例上,添加网络标记,以将这条新的入站防火墙规则应用于这些实例。此示例使用 allow-health-checks 作为网络标记。

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

网络负载平衡规则

以下示例为网络负载平衡创建入站防火墙规则。网络负载平衡的来源 IP 地址范围如下:

  • 35.191.0.0/16
  • 209.85.152.0/22
  • 209.85.204.0/22

这些范围适用于两种网络负载平衡器:使用旧版运行状况检查的基于目标池的网络负载平衡器和使用非旧版运行状况检查的基于后端服务的网络负载平衡器

控制台

  1. 转到 Google Cloud Console 中的“防火墙”页面。
    转到“防火墙”页面
  2. 点击创建防火墙规则
  3. 在“创建防火墙规则”页面上,提供如下信息:
    • 名称:提供规则的名称。本示例使用的是 fw-allow-network-lb-health-checks
    • 网络:选择一个 VPC 网络。
    • 优先级:输入一个表示优先级的数字。这个数字越小,优先级就越高。请确保防火墙规则的优先级高于可能会拒绝入站流量的其他规则的优先级。
    • 流量方向:选择入站
    • 匹配时执行的操作:选择允许
    • 目标:选择指定的目标标记,然后在目标标记文本框中输入标记。本示例使用的是 allow-network-lb-health-checks
    • 来源过滤条件:选择 IP 地址范围
    • 来源 IP 地址范围35.191.0.0/16, 209.85.152.0/22, 209.85.204.0/22
    • 允许的协议和端口:使用 tcp。TCP 是 HTTP 和 HTTPS 的底层协议。
    • 点击创建
  4. 在您经过负载平衡处理的每个实例上,添加网络标记,以将这条新的入站防火墙规则应用于这些实例。此示例使用 allow-network-lb-health-checks 作为网络标记。

gcloud

  1. 使用以下 gcloud 命令创建一条名为 fw-allow-network-lb-health-checks 的防火墙规则,用于允许从 Google Cloud 运行状况检查系统到 VPC 网络中具有 allow-network-lb-health-checks 标记的实例的传入 TCP 连接。将 NETWORK_NAME 替换为您的 VPC 网络名称。

    gcloud compute firewall-rules create fw-allow-network-lb-health-checks \
        --network=NETWORK_NAME \
        --action=ALLOW \
        --direction=INGRESS \
        --source-ranges=35.191.0.0/16,209.85.152.0/22,209.85.204.0/22 \
        --target-tags=allow-network-lb-health-checks \
        --rules=tcp
  2. 在您经过负载平衡处理的每个实例上,添加网络标记,以将这条新的入站防火墙规则应用于这些实例。此示例使用 allow-network-lb-health-checks 作为网络标记。

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

将运行状况检查与负载平衡器和 Traffic Director 关联

本部分介绍将运行状况检查与负载平衡器或 Traffic Director 关联之前必须满足的一些运行状况检查建议和要求。

匹配协议

使用运行状况检查(或旧式运行状况检查)时,最好使用协议与负载平衡器的后端服务或目标池使用的协议相匹配的检查。 不过,运行状况检查协议和负载平衡器协议并一定要相同。例如:

  • 对于内部 TCP/UDP 负载平衡,您只能为后端服务的协议使用 TCPUDP。如果您通过内部 TCP/UDP 负载平衡器后的虚拟机提供 HTTP 流量,那么使用 HTTP 协议进行运行状况检查是一种有意义的做法。

  • 基于目标池的网络负载平衡器必须使用旧版 HTTP 运行状况检查。它不能使用旧版 HTTPS 运行状况检查或任何非旧版运行状况检查。如果您使用基于目标池的网络负载平衡器对 TCP 流量进行负载平衡,则需要在负载平衡虚拟机上运行 HTTP 服务,以便这些虚拟机能够响应运行状况检查探测。

    基于后端服务的网络负载平衡器可以使用非旧版运行状况检查。也就是说,您可以使用其协议与网络负载平衡器的后端服务使用的协议相匹配的运行状况检查。

  • 对于使用 gRPC 协议的后端服务,请仅使用 gRPC 或 TCP 运行状况检查。不要使用 HTTP(S) 或 HTTP/2 运行状况检查。

针对后端服务的运行状况检查

本部分介绍了如何将运行状况检查与以下类型的负载平衡器的后端服务相关联:

  • 内部 TCP/UDP 负载平衡
  • 内部 HTTP(S) 负载平衡
  • TCP 代理负载平衡
  • SSL 代理负载平衡
  • HTTP(S) 负载平衡
  • 基于后端服务的网络负载平衡

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

如需将运行状况检查与新的内部 TCP/UDP 负载平衡器、TCP 代理负载平衡器、SSL 代理负载平衡器、外部 HTTP(S) 负载平衡器或基于后端服务的网络负载平衡器关联,请参阅相应负载平衡器的设置指南。

控制台

要将运行状况检查与现有内部 TCP/UDP 负载平衡器、TCP 代理负载平衡器、SSL 代理负载平衡器、外部 HTTP(S) 负载平衡器或基于后端服务的网络负载平衡器关联,请执行以下操作:

  1. 转到 Google Cloud Console 中的“负载平衡”页面。
    转到“负载平衡”页面
  2. 点击负载平衡器即可查看其详情。
  3. 点击修改 ,然后点击后端配置
  4. 运行状况检查菜单中选择一项运行状况检查。
  5. 点击更新

gcloud

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

  1. 确定后端服务的名称和范围。对于网络负载平衡器、内部 TCP/UDP 负载平衡器、TCP 代理负载平衡器和 SSL 代理负载平衡器,每个负载平衡器只有一个后端服务。外部 HTTP(S) 负载平衡器和内部 HTTP(S) 负载平衡器具有一个或多个与单个网址映射关联的后端服务。

    • 如需列出内部 TCP/UDP 负载平衡器的后端服务,请运行以下命令,并将 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"
      
    • 如需列出 TCP 代理负载平衡器的后端服务,请运行以下命令。无论网络服务层级如何,TCP 代理负载平衡器的后端服务始终是全球性服务。

      gcloud compute backend-services list \
          --global \
          --filter="loadBalancingScheme=EXTERNAL" \
          --filter="protocol=TCP"
      
    • 如需列出 SSL 代理负载平衡器的后端服务,请运行以下命令。无论网络服务层级如何,SSL 代理负载平衡器的后端服务始终是全球性服务。

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

      gcloud compute url-maps list \
          --global
      
      gcloud compute url-maps describe URL_MAP_NAME \
          --global
      
    • 如需确定内部 HTTP(S) 负载平衡器的后端服务,请先确定网址映射,然后再描述映射。内部 HTTP(S) 负载平衡器的网址映射和后端服务是地区性映射和服务。将 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 区域。

    • 更改内部 TCP/UDP 负载平衡器的运行状况检查:内部 TCP/UDP 负载平衡器的后端服务是区域性的。它可以引用全球或区域运行状况检查。以下示例展示了一个区域运行状况检查引用。如果您通过内部 TCP/UDP 负载平衡器使用全球运行状况检查,请使用 --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
      
    • 更改 TCP 代理负载平衡器、SSL 代理负载平衡器或外部 HTTP(S) 负载平衡器的运行状况检查:对于这些负载平衡器来说,后端服务和运行状况检查都是全球性服务和检查。如果外部 HTTP(S) 负载平衡器引用多个后端服务,则它可能引用多个运行状况检查。

      gcloud compute backend-services update BACKEND_SERVICE_NAME \
          --global \
          --health-checks HEALTH_CHECK_NAME \
          --global-health-checks
      
    • 更改内部 HTTP(S) 负载平衡器的运行状况检查:后端服务和运行状况检查都是地区性服务和检查。如果内部 HTTP(S) 负载平衡器引用多个后端服务,则它可能引用多个运行状况检查。

      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 Console 中的“负载平衡”页面。
    转到“负载平衡”页面
  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

  • 对于除基于目标池的网络负载平衡器之外的所有负载平衡器,请确定后端服务的名称和范围。基于后端服务的网络负载平衡、内部 TCP/UDP 负载平衡和内部 HTTP(S) 负载平衡使用区域后端服务。TCP 代理负载平衡、SSL 代理负载平衡和 HTTP(S) 负载平衡使用全球后端服务。

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

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

      gcloud compute backend-services get-health NAME \
          --global \
          --format=get(name, healthStatus)
      
    • 如需获取地区性后端服务的即时运行状况,请运行以下命令:

      gcloud compute backend-services get-health NAME \
          --region=REGION \
          --format=get(name, healthStatus)
      
  • 对于基于目标池的网络负载平衡器,确定负载平衡器的目标池的名称和区域,然后使用 compute target-pools get-health 命令,并将 NAME 替换为目标池的名称,将 REGION 替换为其区域。

    gcloud compute target-pools get-health NAME \
            --region=REGION \
        --format=get(name, healthStatus)
    

API

  • 对于除基于目标池的网络负载平衡器之外的所有负载平衡器,请确定后端服务的名称和范围。基于后端服务的网络负载平衡、内部 TCP/UDP 负载平衡和内部 HTTP(S) 负载平衡使用区域后端服务。TCP 代理负载平衡、SSL 代理负载平衡和 HTTP(S) 负载平衡使用全球后端服务。

  • 对于基于目标池的网络负载平衡器,请使用 targetPools.getHealth