0

我正在尝试创建一个负载均衡器来平衡给定区域中 3 个不同 AZ 之间的流量。如果我使用外部 IP 创建一个“全局”负载均衡器,一切正常,但如果我只是尝试创建一个适用于特定子网的负载均衡器 - 健康检查始终失败,因为它们试图去到端口 80 而不是我指定的端口。

请注意以下输出gcloud compute backend-services get-health xx-redacted-central-lb --region=us-central1

---
backend: https://www.googleapis.com/compute/v1/projects/yugabyte/zones/us-central1-a/instanceGroups/xx-redacted-central-a
status:
  healthStatus:
  - healthState: UNHEALTHY
    instance: https://www.googleapis.com/compute/v1/projects/yugabyte/zones/us-central1-a/instances/yb-1-xx-redacted-lb-test-n2
    ipAddress: 10.152.0.90
    port: 80
  kind: compute#backendServiceGroupHealth
---
backend: https://www.googleapis.com/compute/v1/projects/yugabyte/zones/us-central1-b/instanceGroups/ac-kroger-central-b
status:
  healthStatus:
  - healthState: UNHEALTHY
    instance: https://www.googleapis.com/compute/v1/projects/yugabyte/zones/us-central1-b/instances/yb-1-xx-redacted-lb-test-n1
    ipAddress: 10.152.0.92
    port: 80
  kind: compute#backendServiceGroupHealth
---
backend: https://www.googleapis.com/compute/v1/projects/yugabyte/zones/us-central1-c/instanceGroups/xx-redacted-central-c
status:
  healthStatus:
  - healthState: UNHEALTHY
    instance: https://www.googleapis.com/compute/v1/projects/yugabyte/zones/us-central1-c/instances/yb-1-xx-redacted-lb-test-n3
    ipAddress: 10.152.0.4
    port: 80
  kind: compute#backendServiceGroupHealth

此负载均衡器的运行状况检查是使用以下命令创建的: gcloud compute health-checks create tcp xx-redacted-central-hc4 --port=5433

后端是这样创建的: gcloud compute backend-services create xx-redacted-central-lb --protocol=TCP --health-checks=xx-redacted-central-hc4 --region=us-central1 --load-balancing-scheme=INTERNAL

后端的完整描述: gcloud compute backend-services describe xx-redacted-central-lb --region=us-central1

backends:
- balancingMode: CONNECTION
  group: https://www.googleapis.com/compute/v1/projects/yugabyte/zones/us-central1-a/instanceGroups/xx-redacted-central-a
- balancingMode: CONNECTION
  group: https://www.googleapis.com/compute/v1/projects/yugabyte/zones/us-central1-b/instanceGroups/xx-redacted-central-b
- balancingMode: CONNECTION
  group: https://www.googleapis.com/compute/v1/projects/yugabyte/zones/us-central1-c/instanceGroups/xx-redacted-central-c
connectionDraining:
  drainingTimeoutSec: 0
creationTimestamp: '2020-04-01T19:16:44.405-07:00'
description: ''
fingerprint: aOB7iT47XCk=
healthChecks:
- https://www.googleapis.com/compute/v1/projects/yugabyte/global/healthChecks/xx-redacted-central-hc4
id: '1151478560954316259'
kind: compute#backendService
loadBalancingScheme: INTERNAL
name: xx-redacted-central-lb
protocol: TCP
region: https://www.googleapis.com/compute/v1/projects/yugabyte/regions/us-central1
selfLink: https://www.googleapis.com/compute/v1/projects/yugabyte/regions/us-central1/backendServices/xx-redacted-central-lb
sessionAffinity: NONE
timeoutSec: 30

如果我尝试edit在后端添加端口或端口名注释,则无法保存,因为认为这是对 INTERNAL 负载均衡器的无效操作。

有任何想法吗?——艾伦

4

3 回答 3

1

根据 GCP 文档 [1],要使运行状况检查正常工作,您必须创建一个入口以允许来自 Google Cloud 探测器的 IP 地址流量的防火墙规则可以连接到您的后端。

您可以查看此文档 [2] 以了解 SSL 和 TCP 健康检查的成功标准。

[1]探测 IP 范围和防火墙规则 https://cloud.google.com/load-balancing/docs/health-check-concepts#ip-ranges

[2]成功标准 https://cloud.google.com/load-balancing/docs/health-check-concepts#criteria-protocol-ssl-tcp

于 2020-04-04T00:46:50.760 回答
0

感谢您提供信息。我可以在最后成功重现此问题,但奇怪的是后端运行状况检查仍指向端口 80,而 LB HC 配置为 80 以外的端口。产品工程团队已经意识到这个问题,但我不知道没有任何关于修复和实施的 ETA。您可以关注线程 [1] 以获取更多更新。

[1] https://issuetracker.google.com/153600927

于 2020-04-09T02:01:21.243 回答
0

如果后端服务是实例组,则后端服务必须具有关联的命名端口。负载平衡服务使用命名端口将流量引导到各个实例上的特定端口。您可以将端口名称映射分配给实例组,以通知负载均衡器使用该端口来访问运行服务的后端。

于 2020-04-06T21:07:54.723 回答