Проблема создания регионального балансировщика нагрузки TCP - PullRequest
0 голосов
/ 03 апреля 2020

Я пытаюсь создать балансировщик нагрузки, который балансирует трафик c между 3 различными AZ в данном регионе. Если я создаю «глобальный» балансировщик нагрузки с внешним IP-адресом, все работает нормально, но если я только пытаюсь создать балансировщик нагрузки, который работает с определенным su bnet - проверки работоспособности постоянно завершаются неудачей, потому что они пытаясь go к порту 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 бэкэнд и добавить аннотацию порта или имени порта, его не удается сохранить, поскольку он считает, что это недопустимая операция с ВНУТРЕННИМИ балансировщиками нагрузки.

Есть идеи? --Alan

Ответы [ 3 ]

2 голосов
/ 04 апреля 2020

Согласно документации GCP [1], чтобы проверки работоспособности работали, вы должны создать вход, чтобы разрешить правила брандмауэра для трафика IP-адресов c от пробников Google Cloud, которые могут подключаться к вашим бэкэндам.

Вы можете просмотреть эту документацию [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

1 голос
/ 07 апреля 2020

Бэкэнд-сервисы должны иметь связанный Именованный порт , если их бэкэнды являются группами экземпляров. Именованные порты используются службами балансировки нагрузки для направления трафика c для указания c портов в отдельных экземплярах. Вы можете назначить сопоставление имен портов группе экземпляров, чтобы сообщить балансировщику нагрузки об использовании этого порта для доступа к бэкэнду, на котором выполняется служба.

0 голосов
/ 09 апреля 2020

Спасибо за предоставление информации. Я могу успешно воспроизвести эту проблему с моей стороны и нахожу странным, что проверки работоспособности бэкэнда все еще направлены на порт 80, тогда как LB H C настроен для порта, отличного от 80. Однако команда разработчиков продукта была осведомлена об этой проблеме У меня нет ETA по исправлению и реализации. Вы можете следить за темой [1] для дальнейших обновлений.

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

...