Проблема с созданием регионального балансировщика нагрузки TCP

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

Есть идеи? --Алан

3 ответа

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

Вы можете просмотреть эту документацию [2], чтобы понять критерии успеха для проверки работоспособности SSL и TCP.

[1] Проверить диапазоны IP-адресов и правила брандмауэра https://cloud.google.com/load-balancing/docs/health-check-concepts

[2] Критерии успеха https://cloud.google.com/load-balancing/docs/health-check-concepts

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

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

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

Другие вопросы по тегам